带有一个孩子的ViewFlipper(LinearLayout)

时间:2011-09-30 10:32:55

标签: android android-linearlayout viewflipper

我有一个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;
        }

祝你好运!

1 个答案:

答案 0 :(得分:0)

请改用ViewSwitcher。实施ViewSwitcher.ViewFactory以提供内部视图(您可以使用带有布局xml的LayoutInflater),使用ViewSwitcher.setFactory进行设置并使用ViewSwitcher.getNextViewView.findViewById找到并相应地设置您的组件。

ViewSwitcher也是ViewAnimator的子类,因此您可以设置输入/输出动画,并使用您已熟悉的showNextshowPrevious