gpt4 book ai didi

android - Android 上 Fragments 的立方体翻转动画

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:39 27 4
gpt4 key购买 nike

我想实现一个基本的 3d 立方体并在 Touch 上水平或垂直旋转 90 度。我想要实现的是类似于下图所示的内容。

我使用 ViewPagerViewTransformer 实现了这一点但我对结果不满意。动画不是很流畅,我不能翻转它,我必须在屏幕的整个宽度上拖动手指才能旋转立方体。我只想翻转它,但无法实现。

enter image description here enter image description here

我用过 BTGridPager-Android实现上述目标。但正如所提到的,它不是很有说服力。

这是我的 ViewTransformer 代码:

    public abstract class ABaseTransformer implements PageTransformer {
@Override
public void transformPage(View page, float position) {
onPreTransform(page, position);
onTransform(page, position);
onPostTransform(page, position);
}
protected void onPreTransform(View page, float position) {
final float width = page.getWidth();

page.setRotationX(0);
page.setRotationY(0);
page.setRotation(0);
page.setScaleX(1);
page.setScaleY(1);
page.setPivotX(0);
page.setPivotY(0);
page.setTranslationY(0);
page.setTranslationX(isPagingEnabled() ? 0f : -width * position);

if (hideOffscreenPages()) {
page.setAlpha(position <= -1f || position >= 1f ? 0f : 1f);
} else {
page.setAlpha(1f);
}
}


public class HorizontalCubeOutTransformer extends ABaseTransformer {

@Override
protected void onTransform(View view, float position) {

final float normalizedposition = Math.abs(1 - Math.abs(position));

view.setPivotX(position < 0f ? view.getWidth() : 0f);
view.setPivotY(view.getHeight() * 0.5f);
view.setRotationY(90f * position);
view.setAlpha(normalizedposition);
}

@Override
public boolean isPagingEnabled() {
return true;
}

}



public class VerticalCubeOutTransformer extends ABaseTransformer {


@Override
protected void onTransform(View view, float position) {

final float normalizedposition = Math.abs(Math.abs(position) - 1);
view.setAlpha(normalizedposition);
view.setTranslationX(view.getWidth() * -position);
view.setTranslationY(position * view.getHeight());

view.setPivotX(view.getWidth() * 0.5f);
view.setPivotY(position < 0f ? view.getHeight() : 0f);
view.setRotationX(90f * -position);

}

@Override
public boolean isPagingEnabled() {
return false;
}
}

我想知道的是如何在翻转手势上旋转立方体。注意:我想在没有 OpenGL 或 SurfaceView 的情况下实现这一点。

更新:到目前为止,我已经使用 fragmenttransactionExtended 实现了立方体翻转,但现在我遇到了一些其他问题,因为当前 fragment 在翻转开始后立即消失

enter image description here

最佳答案

您可以使用 FragmentTransactionExtended

FragmentTransactionExtended

它提供了 fragment 之间的所有类型的动画

关于android - Android 上 Fragments 的立方体翻转动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25867541/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com