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

Mar*_*tin 6 android scrollview android-linearlayout

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

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

这就是我需要的

Sau*_*eek 9

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

此示例将帮助您 查看Flipper示例

编辑:

脚步:

  • 有一个ViewFlipper,它包含layout1,layout2,layoout3
  • 目前layout1是可见的.
  • 从右到左用于显示下一个布局.layout1 - > layout2

动画将在这两个视图(layout1和layout2)上应用.

  • 对于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>
    
    Run Code Online (Sandbox Code Playgroud)
  • 对于layout1 - > 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>
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后将此动画设置为viewflipper的孩子.

    flipper.setInAnimation(<your class>.this, R.anim.push_right_in);
    flipper.setOutAnimation(<your class>.this, R.anim.push_right_out);
    flipper.showNext();
    
    Run Code Online (Sandbox Code Playgroud)
    • 现在从左向右投掷以显示先前的布局.layout2 - > layout1

动画将在这两个视图(layout1和layout2)上应用.

  • 对于layout1 - > 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>
    
    Run Code Online (Sandbox Code Playgroud)
  • 对于layout2 - > 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>
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后将此动画设置为viewflipper的孩子.

    flipper.setInAnimation(<your class>.this, R.anim.push_left_in);
    flipper.setOutAnimation(<your class>.this, R.anim.push_left_out);
    flipper.showPrevious();
    
    Run Code Online (Sandbox Code Playgroud)

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