在android上使用3D视图filp - 翻转后没有onClick

时间:2012-03-20 16:43:17

标签: android animation onclick viewflipper

我找到了几个关于如何在ViewFlipper中获取3D动画来翻转视图的指南。它们都使用相机和旋转来实现效果。我用这个:http://code.google.com/p/android-3d-flip-view-transition/ - 包装器来实现结果 - 一切正常。也就是说,就视觉翻转而言。

不起作用的是翻盖完成后的按钮。感觉好像所有的onClick事件都没有收到,或者在翻转完成后被忽略。这是我最基本的例子。

XML:

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:id="@+id/selector_flipper">
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@+id/playing_field"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:orientation="vertical">

            <Button android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="Flip"
                    android:onClick="flipView" />
    </LinearLayout>

    <ListView xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/tag_list"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:background="@android:color/white"/>
</ViewFlipper>

的活动:

public class SelectorActivity extends Activity {
    private ViewFlipper flipper;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.selector);
        flipper = (ViewFlipper)this.findViewById(R.id.selector_flipper);
    }

    /**
     * @see android.app.Activity#onKeyDown(int, android.view.KeyEvent)
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && tagList.getVisibility() == View.VISIBLE)
            flipView(null);
        else
            return super.onKeyDown(keyCode, event);
    }

    public void flipView(View v) {
        AnimationFactory.flipTransition(flipper, FlipDirection.RIGHT_LEFT);
    }
}

创建活动后,我可以单击“翻转”按钮 - 视图将按照我的要求翻转。然后,我可以按下手机上的“后退”按钮 - 然后它会翻转,就像我想要的那样。但是现在我无法再单击该按钮 - 所有点击都被忽略了。

有人可以帮我解决这个问题吗?非常感谢!

P.S。我尝试了其他包装器甚至自己编写相同的动画 - 但结果总是一样的!翻转后点击不起作用!

1 个答案:

答案 0 :(得分:3)

感谢您使用我的3D view flip animation

问题是Android中的一个错误ViewGroup遍历谁获得焦点。我尝试了一些修复(一些有效,一些没有,但没有一个非常优雅)。但最后,使用AnimationSet代替Animation就可以了。我已尝试修复您的代码(您通过电子邮件发送给我),但也尝试使用more complex code。转换后显示的视图获得触摸焦点。

因此,googlecode项目中对android-3d-flip-view-transition的最新更新有修复。或者,您可以通过clicking here直接导航到修订版。

谢谢,如果您对此修复感到满意,请将此问题标记为已回答。