我有一个ViewFlipper,它只包含一个子节点(一个线性布局),我遇到的问题是当我切换视图时,它会顺利显示下一个视图,依此类推。但动画并不顺利,我的意思是当前屏幕移动而下一个显示! 在这种情况下,当前屏幕将被删除,下一个屏幕将被滑入。
如何让当前屏幕滑落,让下一个屏幕滑入,同时在ViewFlipper中有一个孩子?我一直在寻找,找不到任何东西!
xml代码:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/layout">
<ViewFlipper
android:id="@+id/flipper"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/dateView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="2"
/>
<ListView
android:id="@+id/myListView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
/>
</LinearLayout>
</ViewFlipper>
android代码:
case MotionEvent.ACTION_UP:{
currentX = event.getX();
if (Math.abs(currentX - downXValue) >= v.getWidth()/5){
if(currentX < downXValue){
calendar.add(Calendar.DAY_OF_MONTH, 1);
dateAdapter.notifyDataSetChanged();
todoAdapter.clear();
todoAdapter.notifyDataSetChanged();
vf.setInAnimation(v.getContext(), R.anim.push_left_in);
vf.setOutAnimation(v.getContext(), R.anim.push_left_out);
vf.showPrevious();
}
else{
calendar.add(Calendar.DAY_OF_MONTH, -1);
dateAdapter.notifyDataSetChanged();
todoAdapter.clear();
todoAdapter.notifyDataSetChanged();
vf.setInAnimation(v.getContext(), R.anim.push_right_in);
vf.setOutAnimation(v.getContext(), R.anim.push_right_out);
vf.showNext();
}
}
break;
}
祝你好运!
答案 0 :(得分:0)
请改用ViewSwitcher
。实施ViewSwitcher.ViewFactory
以提供内部视图(您可以使用带有布局xml的LayoutInflater
),使用ViewSwitcher.setFactory
进行设置并使用ViewSwitcher.getNextView
和View.findViewById
找到并相应地设置您的组件。
ViewSwitcher
也是ViewAnimator
的子类,因此您可以设置输入/输出动画,并使用您已熟悉的showNext
和showPrevious
。