Android:具有三种线性布局的水平滚动视图

时间:2011-04-19 09:15:56

标签: android scrollview android-linearlayout

我想创建一个带水平滚动视图的活动。滚动视图的内容将是三个不同的线性布局。这些线性布局中的每一个都应占据设备屏幕的整个宽度。因此,当活动开始时,只有一个线性布局占据屏幕的整个宽度,当用户向右滑动时,另一个线性布局将以全宽显示。 (见图)

我不确定如何设置linearlayouts的宽度,以便它们适合屏幕的宽度。关于如何以一种好的方式解决这个问题的任何想法?

This is what I need

1 个答案:

答案 0 :(得分:9)

我认为你必须使用ViewFlipper而不是scrollView。 在viewflipper上使用触摸事件进行导航,并使用动画来翻转两个线性布局。

这个例子对你有帮助 View Flipper example

编辑:

步骤进行:

  • 有一个ViewFlipper,其中包含layout1,layout2,layoout3
  • 目前布局1可见。
  • 从右向左投掷以显示下一个布局。 layout1 - >布局2

动画将在此处应用于两个视图(layout1和layout2)。

  • for layout2 - > push_right_in.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    
    <translate android:fromXDelta="100%" android:toXDelta="0%"
        android:duration="400" />
    </set>
    
  • for layout1 - &gt; push_right_out.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    
    <translate android:fromXDelta="0%" android:toXDelta="-100%"
        android:duration="400" />
    
    </set>
    
  • 然后将此动画设置为viewflipper的孩子。

    flipper.setInAnimation(<your class>.this, R.anim.push_right_in);
    flipper.setOutAnimation(<your class>.this, R.anim.push_right_out);
    flipper.showNext();
    
    • 现在从左向右投掷以显示先前的布局。 layout2 - &gt;布局1

动画将在此处应用于两个视图(layout1和layout2)。

  • for layout1 - &gt; push_left_in.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    
    <translate android:fromXDelta="-100%" android:toXDelta="0%"
    android:duration="400" />
    </set>
    
  • for layout2 - &gt; push_left_out.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    
    <translate android:fromXDelta="0%" android:toXDelta="100%"
    android:duration="400" />
    
    </set>
    
  • 然后将此动画设置为viewflipper的孩子。

    flipper.setInAnimation(<your class>.this, R.anim.push_left_in);
    flipper.setOutAnimation(<your class>.this, R.anim.push_left_out);
    flipper.showPrevious();
    

这会给你一个流畅的动画。