ViewFlipper 3D-Card-Flip

5
我正在开发一个新的Android应用程序,遇到了一个问题。
我想在一些ImageViews中编写一个ViewFlipper。(不是很困难)
当用户点击它们时,元素应该翻转(使用这个3D-Flip动画:http://www.inter-fuser.com/2009/08/android-animations-3d-flip.html)。(我已经实现了这个功能。)
我的想法只适用于ViewFlipper中的第一个元素。我开始填充这个第一个视图,但是新元素没有翻转。
是否有可能“克隆/复制”第一个带有其onclick事件的视图,以便第二个视图也可以翻转?
谢谢您的帮助。
2个回答

3
最好、最简单的解决方案在这里:https://github.com/genzeb/flip 通过执行以下操作,在任何 ViewAnimator(如 ViewFipper)中使用翻转转换:
AnimationFactory.flipTransition(viewFlipper, FlipDirection.LEFT_RIGHT);

1
你可以将此作为样例,这里是一个对象动画器。:
    <?xml version="1.0" encoding="utf-8"?>
    <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
        android:propertyName="rotationY"
        android:valueFrom="0"
        android:valueTo="360" >
    </objectAnimator>

我注意到一些教程只使用 valueTo。这将只允许您翻转一次,因为您的视图已经在 360 上,它不会再翻转了,所以始终同时使用 valueFrom。以下是可以翻转任何视图的代码:

    public static void flip(Context context, View view) {
    ObjectAnimator anim = (ObjectAnimator) AnimatorInflater.loadAnimator(
            context, R.animator.flip);
    anim.setTarget(view);
    anim.setDuration(1000);
    anim.end();
    anim.start();
}

是的,它有效。做得好!当它翻转时,视图的背面应该是另一个视图。我尝试了你的例子,使用了两个翻转动画器:第一个从0到90,第二个从90到180。第一个视图与第一个动画器一起翻转,而“backView”则与第二个动画器一起翻转。我将第二个void放在第一个void的底部,但它不起作用。 - Billabong
为什么不尝试添加AnimatorListener,在第一个动画结束时启动第二个动画。你不能只在新行中调用另一个动画,我想这就是你正在做的事情。 - Milan
anim.addListener(new AnimatorListener(){...}); 动画.addListener(new AnimatorListener(){...}); - Milan
啊,我明白了。我在找setAnimationListner...但是我找不到它。 - Billabong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接