我想创建一个带水平滚动视图的活动。滚动视图的内容将是三个不同的线性布局。这些线性布局中的每一个都应占据设备屏幕的整个宽度。因此,当活动开始时,只有一个线性布局占据屏幕的整个宽度,当用户向右滑动时,另一个线性布局将以全宽显示。 (见图)
我不确定如何设置linearlayouts的宽度,以便它们适合屏幕的宽度。关于如何以一种好的方式解决这个问题的任何想法?
答案 0 :(得分:9)
我认为你必须使用ViewFlipper而不是scrollView。 在viewflipper上使用触摸事件进行导航,并使用动画来翻转两个线性布局。
这个例子对你有帮助 View Flipper example
编辑:
步骤进行:
动画将在此处应用于两个视图(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();
动画将在此处应用于两个视图(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();
这会给你一个流畅的动画。