【问题标题】:ViewFlipper With One Child (LinearLayout)带一个孩子的 ViewFlipper (LinearLayout)
【发布时间】:2011-09-30 10:32:55
【问题描述】:

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

安卓代码:

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;
        }

最好的问候!

【问题讨论】:

    标签: android android-linearlayout viewflipper


    【解决方案1】:

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

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

    【讨论】:

    • 但是我需要添加视图吗?在这种情况下,我的视图只是一个 LinearLayout,里面有一个 ListView。
    • 将布局放在单独的 xml 文件中,并使用LayoutInflaterViewFactory 中提供视图。
    • 已经试过了,还是不行。当然,它确实会显示下一个视图。但是当前的移动不会随着新的滑入而滑走,当前的移动会立即被删除。
    • 不,出于这个原因,ViewSwitcher 包含两个视图。你继续操纵getNextView 并显示它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    相关资源
    最近更新 更多