2011-04-19 108 views
6

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

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

This is what I need

+0

看看这个教程。它完成与ViewFlipper http://www.codeshogun.com/blog/2009/04/16/how-to-implement-swipe-action-in-android/ – 2011-04-19 09:25:28

回答

9

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

这个例子可以帮助你 View Flipper example

编辑:

步骤:

  • 有一个ViewFlipper包含布局1,布局2,layoout3
  • 目前布局1可见。
  • 从右向左倾斜显示下一个布局。布局1 - >布局2

动画将在这里适用的两种观点(布局1和布局2)。

  • 的布局2 - > 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> 
    
  • 的布局1 - > 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(); 
    
    • 现在一扔从左至右为显示以前的布局。布局2 - >布局1

动画将在这里适用的两种观点(布局1和布局2)。

  • 的布局1 - > 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> 
    
  • 的布局2 - > 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(); 
    

这会给你一个平滑的动画。

+0

这个例子正是我所需要的。但我建议你也看看这个例子的评论,让动画顺利。 – Martin 2011-04-19 16:11:09

+0

嗨,刚刚阅读我编辑的答案。 – 2011-04-20 05:06:58

+0

非常感谢您的回答! – Martin 2011-04-20 14:06:56