我想用水平滚动视图创建一个活动.滚动视图的内容将是三个不同的线性布局.这些线性布局中的每一个都应占据设备屏幕的整个宽度.因此,当活动开始时,只有一个线性布局占据屏幕的整个宽度,当用户向右滑动时,另一个线性布局将以全宽显示. (见图)
我不确定如何设置linearlayouts的宽度,以便它们适合屏幕的宽度.关于如何以一种好的方式解决这个问题的任何想法?
解决方法
我认为你必须使用ViewFlipper而不是scrollView.
在viewflipper上使用触摸事件进行导航,并使用动画来翻转两个线性布局.
在viewflipper上使用触摸事件进行导航,并使用动画来翻转两个线性布局.
这个例子对你有帮助
View Flipper example
编辑:
脚步:
>有一个ViewFlipper,它包含layout1,layout2,layoout3
>目前layout1可见.
>从右向左投掷以显示下一个布局. 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 – > 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 – >布局1
动画将在这两个视图(layout1和layout2)上应用.
> for 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>
> for 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>
>然后将此动画设置为viewflipper的孩子.
flipper.setInAnimation(<your class>.this,R.anim.push_left_in); flipper.setOutAnimation(<your class>.this,R.anim.push_left_out); flipper.showPrevIoUs();
这会给你一个流畅的动画.