我找到了几个关于如何在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。我尝试了其他包装器甚至自己编写相同的动画 - 但结果总是一样的!翻转后点击不起作用!
答案 0 :(得分:3)
感谢您使用我的3D view flip animation。
问题是Android中的一个错误ViewGroup
遍历谁获得焦点。我尝试了一些修复(一些有效,一些没有,但没有一个非常优雅)。但最后,使用AnimationSet
代替Animation
就可以了。我已尝试修复您的代码(您通过电子邮件发送给我),但也尝试使用more complex code。转换后显示的视图获得触摸焦点。
因此,googlecode项目中对android-3d-flip-view-transition的最新更新有修复。或者,您可以通过clicking here直接导航到修订版。
谢谢,如果您对此修复感到满意,请将此问题标记为已回答。