html5中文学习网

您的位置: 首页 > android » 正文

Android中使用ViewFlipper进行手势切换实例_Android

[ ] 已经帮助:人解决问题

本文实例讲述了Android中使用ViewFlipper进行手势切换的方法,分享给大家供大家参考。具体实现步骤如下:xZZHTML5中文学习网 - HTML5先行者学习网

首先在layout的xml文件中定义一个ViewFlipper:xZZHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
<?xml version="1.0" encoding="utf-8"?>  xZZHTML5中文学习网 - HTML5先行者学习网
<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"  xZZHTML5中文学习网 - HTML5先行者学习网
        android:id="@+id/viewFlipper"  xZZHTML5中文学习网 - HTML5先行者学习网
        android:layout_width="fill_parent"   xZZHTML5中文学习网 - HTML5先行者学习网
        android:layout_height="fill_parent"  xZZHTML5中文学习网 - HTML5先行者学习网
        >  xZZHTML5中文学习网 - HTML5先行者学习网
          xZZHTML5中文学习网 - HTML5先行者学习网
    <LinearLayout  xZZHTML5中文学习网 - HTML5先行者学习网
        android:layout_width="fill_parent"  xZZHTML5中文学习网 - HTML5先行者学习网
        android:layout_height="fill_parent"  xZZHTML5中文学习网 - HTML5先行者学习网
        >  xZZHTML5中文学习网 - HTML5先行者学习网
          xZZHTML5中文学习网 - HTML5先行者学习网
        <TextView  xZZHTML5中文学习网 - HTML5先行者学习网
            android:layout_width="fill_parent"  xZZHTML5中文学习网 - HTML5先行者学习网
            android:layout_height="fill_parent"  xZZHTML5中文学习网 - HTML5先行者学习网
            android:background="#FF0000"  xZZHTML5中文学习网 - HTML5先行者学习网
            />  xZZHTML5中文学习网 - HTML5先行者学习网
              xZZHTML5中文学习网 - HTML5先行者学习网
    </LinearLayout>  xZZHTML5中文学习网 - HTML5先行者学习网
      xZZHTML5中文学习网 - HTML5先行者学习网
    <LinearLayout  xZZHTML5中文学习网 - HTML5先行者学习网
        android:layout_width="fill_parent"  xZZHTML5中文学习网 - HTML5先行者学习网
        android:layout_height="fill_parent"  xZZHTML5中文学习网 - HTML5先行者学习网
        >  xZZHTML5中文学习网 - HTML5先行者学习网
          xZZHTML5中文学习网 - HTML5先行者学习网
        <TextView  xZZHTML5中文学习网 - HTML5先行者学习网
            android:layout_width="fill_parent"  xZZHTML5中文学习网 - HTML5先行者学习网
            android:layout_height="fill_parent"  xZZHTML5中文学习网 - HTML5先行者学习网
            android:background="#00FF00"  xZZHTML5中文学习网 - HTML5先行者学习网
            />  xZZHTML5中文学习网 - HTML5先行者学习网
              xZZHTML5中文学习网 - HTML5先行者学习网
    </LinearLayout>  xZZHTML5中文学习网 - HTML5先行者学习网
      xZZHTML5中文学习网 - HTML5先行者学习网
</ViewFlipper>
xZZHTML5中文学习网 - HTML5先行者学习网

声明一个新的GestureDetector,重写它的onFling()函数,在这个函数里面判断手势,这里为横向的拖动:xZZHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
public class MyGestureDetector extends SimpleOnGestureListener  xZZHTML5中文学习网 - HTML5先行者学习网
xZZHTML5中文学习网 - HTML5先行者学习网
    private static final int SWIPE_MIN_DISTANCE = 120;  xZZHTML5中文学习网 - HTML5先行者学习网
    private static final int SWIPE_MAX_OFF_PATH = 250;  xZZHTML5中文学习网 - HTML5先行者学习网
    private static final int SWIPE_THRESHOLD_VELOCITY = 200;  xZZHTML5中文学习网 - HTML5先行者学习网
      xZZHTML5中文学习网 - HTML5先行者学习网
    @Override  xZZHTML5中文学习网 - HTML5先行者学习网
    public boolean onFling(MotionEvent e1, MotionEvent e2,   xZZHTML5中文学习网 - HTML5先行者学习网
                           float velocityX, float velocityY)  xZZHTML5中文学习网 - HTML5先行者学习网
    {  xZZHTML5中文学习网 - HTML5先行者学习网
        try  xZZHTML5中文学习网 - HTML5先行者学习网
        {  xZZHTML5中文学习网 - HTML5先行者学习网
               if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)  xZZHTML5中文学习网 - HTML5先行者学习网
               {  xZZHTML5中文学习网 - HTML5先行者学习网
                   return false;  xZZHTML5中文学习网 - HTML5先行者学习网
               }  xZZHTML5中文学习网 - HTML5先行者学习网
               if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE &&   xZZHTML5中文学习网 - HTML5先行者学习网
                  Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY)  xZZHTML5中文学习网 - HTML5先行者学习网
               {  xZZHTML5中文学习网 - HTML5先行者学习网
                viewFlipper.setInAnimation(slideLeftIn);  xZZHTML5中文学习网 - HTML5先行者学习网
                   viewFlipper.setOutAnimation(slideLeftOut);  xZZHTML5中文学习网 - HTML5先行者学习网
                viewFlipper.showNext();  xZZHTML5中文学习网 - HTML5先行者学习网
               }  xZZHTML5中文学习网 - HTML5先行者学习网
               else   xZZHTML5中文学习网 - HTML5先行者学习网
                if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE &&   xZZHTML5中文学习网 - HTML5先行者学习网
                    Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY)  xZZHTML5中文学习网 - HTML5先行者学习网
                {  xZZHTML5中文学习网 - HTML5先行者学习网
                    viewFlipper.setInAnimation(slideRightIn);  xZZHTML5中文学习网 - HTML5先行者学习网
                    viewFlipper.setOutAnimation(slideRightOut);  xZZHTML5中文学习网 - HTML5先行者学习网
                    viewFlipper.showPrevious();  xZZHTML5中文学习网 - HTML5先行者学习网
                }  xZZHTML5中文学习网 - HTML5先行者学习网
           }  xZZHTML5中文学习网 - HTML5先行者学习网
        catch (Exception e)  xZZHTML5中文学习网 - HTML5先行者学习网
        {  xZZHTML5中文学习网 - HTML5先行者学习网
              xZZHTML5中文学习网 - HTML5先行者学习网
           }  xZZHTML5中文学习网 - HTML5先行者学习网
           return false;  xZZHTML5中文学习网 - HTML5先行者学习网
    }  xZZHTML5中文学习网 - HTML5先行者学习网
}
xZZHTML5中文学习网 - HTML5先行者学习网

注意在Activity中重写onTouchEvent()函数:xZZHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
private ViewFlipper viewFlipper;  xZZHTML5中文学习网 - HTML5先行者学习网
  xZZHTML5中文学习网 - HTML5先行者学习网
private Animation slideLeftIn;  xZZHTML5中文学习网 - HTML5先行者学习网
private Animation slideLeftOut;  xZZHTML5中文学习网 - HTML5先行者学习网
private Animation slideRightIn;  xZZHTML5中文学习网 - HTML5先行者学习网
private Animation slideRightOut;  xZZHTML5中文学习网 - HTML5先行者学习网
  xZZHTML5中文学习网 - HTML5先行者学习网
private GestureDetector gestureDetector;  xZZHTML5中文学习网 - HTML5先行者学习网
@Override  xZZHTML5中文学习网 - HTML5先行者学习网
public void onCreate(Bundle savedInstanceState)  xZZHTML5中文学习网 - HTML5先行者学习网
xZZHTML5中文学习网 - HTML5先行者学习网
    super.onCreate(savedInstanceState);  xZZHTML5中文学习网 - HTML5先行者学习网
    setContentView(R.layout.main);  xZZHTML5中文学习网 - HTML5先行者学习网
      xZZHTML5中文学习网 - HTML5先行者学习网
    viewFlipper = (ViewFlipper)findViewById(R.id.viewFlipper);  xZZHTML5中文学习网 - HTML5先行者学习网
       slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);  xZZHTML5中文学习网 - HTML5先行者学习网
       slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out);  xZZHTML5中文学习网 - HTML5先行者学习网
       slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in);  xZZHTML5中文学习网 - HTML5先行者学习网
       slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out);  xZZHTML5中文学习网 - HTML5先行者学习网
         xZZHTML5中文学习网 - HTML5先行者学习网
       gestureDetector = new GestureDetector(new MyGestureDetector());  xZZHTML5中文学习网 - HTML5先行者学习网
         xZZHTML5中文学习网 - HTML5先行者学习网
       new View.OnTouchListener()  xZZHTML5中文学习网 - HTML5先行者学习网
       {  xZZHTML5中文学习网 - HTML5先行者学习网
           public boolean onTouch(View v, MotionEvent event)  xZZHTML5中文学习网 - HTML5先行者学习网
           {  xZZHTML5中文学习网 - HTML5先行者学习网
               if (gestureDetector.onTouchEvent(event))  xZZHTML5中文学习网 - HTML5先行者学习网
               {  xZZHTML5中文学习网 - HTML5先行者学习网
                   return true;  xZZHTML5中文学习网 - HTML5先行者学习网
               }  xZZHTML5中文学习网 - HTML5先行者学习网
               return false;  xZZHTML5中文学习网 - HTML5先行者学习网
           }  xZZHTML5中文学习网 - HTML5先行者学习网
       };  xZZHTML5中文学习网 - HTML5先行者学习网
xZZHTML5中文学习网 - HTML5先行者学习网
  xZZHTML5中文学习网 - HTML5先行者学习网
@Override  xZZHTML5中文学习网 - HTML5先行者学习网
public boolean onTouchEvent(MotionEvent event)  xZZHTML5中文学习网 - HTML5先行者学习网
xZZHTML5中文学习网 - HTML5先行者学习网
    if (gestureDetector.onTouchEvent(event))  xZZHTML5中文学习网 - HTML5先行者学习网
    {  xZZHTML5中文学习网 - HTML5先行者学习网
        return true;  xZZHTML5中文学习网 - HTML5先行者学习网
    }  xZZHTML5中文学习网 - HTML5先行者学习网
    else  xZZHTML5中文学习网 - HTML5先行者学习网
    {  xZZHTML5中文学习网 - HTML5先行者学习网
        return false;  xZZHTML5中文学习网 - HTML5先行者学习网
    }  xZZHTML5中文学习网 - HTML5先行者学习网
}
xZZHTML5中文学习网 - HTML5先行者学习网

最后,在res文件夹下新建一个anim文件夹,用来存放view之间切换的动画文件:xZZHTML5中文学习网 - HTML5先行者学习网

1.slide_left_in.xmlxZZHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
<?xml version="1.0" encoding="utf-8"?>  xZZHTML5中文学习网 - HTML5先行者学习网
<set xmlns:android="http://schemas.android.com/apk/res/android">  xZZHTML5中文学习网 - HTML5先行者学习网
    <translate  xZZHTML5中文学习网 - HTML5先行者学习网
        android:fromXDelta="100%p"   xZZHTML5中文学习网 - HTML5先行者学习网
        android:toXDelta="0"   xZZHTML5中文学习网 - HTML5先行者学习网
        android:duration="500"  xZZHTML5中文学习网 - HTML5先行者学习网
        />  xZZHTML5中文学习网 - HTML5先行者学习网
    <alpha  xZZHTML5中文学习网 - HTML5先行者学习网
        android:fromAlpha="0.0"   xZZHTML5中文学习网 - HTML5先行者学习网
        android:toAlpha="1.0"  xZZHTML5中文学习网 - HTML5先行者学习网
        android:duration="500"  xZZHTML5中文学习网 - HTML5先行者学习网
        />  xZZHTML5中文学习网 - HTML5先行者学习网
</set>
xZZHTML5中文学习网 - HTML5先行者学习网

2.slide_left_out.xmlxZZHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
<?xml version="1.0" encoding="utf-8"?>  xZZHTML5中文学习网 - HTML5先行者学习网
<set xmlns:android="http://schemas.android.com/apk/res/android">  xZZHTML5中文学习网 - HTML5先行者学习网
    <translate  xZZHTML5中文学习网 - HTML5先行者学习网
        android:fromXDelta="0"   xZZHTML5中文学习网 - HTML5先行者学习网
        android:toXDelta="-100%p"   xZZHTML5中文学习网 - HTML5先行者学习网
        android:duration="500"  xZZHTML5中文学习网 - HTML5先行者学习网
        />  xZZHTML5中文学习网 - HTML5先行者学习网
    <alpha  xZZHTML5中文学习网 - HTML5先行者学习网
        android:fromAlpha="1.0"   xZZHTML5中文学习网 - HTML5先行者学习网
        android:toAlpha="0.0"   xZZHTML5中文学习网 - HTML5先行者学习网
        android:duration="500"  xZZHTML5中文学习网 - HTML5先行者学习网
        />  xZZHTML5中文学习网 - HTML5先行者学习网
</set>
xZZHTML5中文学习网 - HTML5先行者学习网

3.slide_right_in.xmlxZZHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
<?xml version="1.0" encoding="utf-8"?>  xZZHTML5中文学习网 - HTML5先行者学习网
<set xmlns:android="http://schemas.android.com/apk/res/android">  xZZHTML5中文学习网 - HTML5先行者学习网
    <translate   xZZHTML5中文学习网 - HTML5先行者学习网
        android:fromXDelta="-100%p"   xZZHTML5中文学习网 - HTML5先行者学习网
        android:toXDelta="0"   xZZHTML5中文学习网 - HTML5先行者学习网
        android:duration="500"  xZZHTML5中文学习网 - HTML5先行者学习网
        />  xZZHTML5中文学习网 - HTML5先行者学习网
    <alpha  xZZHTML5中文学习网 - HTML5先行者学习网
        android:fromAlpha="0.0"   xZZHTML5中文学习网 - HTML5先行者学习网
        android:toAlpha="1.0"  xZZHTML5中文学习网 - HTML5先行者学习网
        android:duration="500"  xZZHTML5中文学习网 - HTML5先行者学习网
        />  xZZHTML5中文学习网 - HTML5先行者学习网
</set>
xZZHTML5中文学习网 - HTML5先行者学习网

4.slide_right_out.xmlxZZHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
<?xml version="1.0" encoding="utf-8"?>  xZZHTML5中文学习网 - HTML5先行者学习网
<set xmlns:android="http://schemas.android.com/apk/res/android">  xZZHTML5中文学习网 - HTML5先行者学习网
    <translate   xZZHTML5中文学习网 - HTML5先行者学习网
        android:fromXDelta="0"   xZZHTML5中文学习网 - HTML5先行者学习网
        android:toXDelta="100%p"   xZZHTML5中文学习网 - HTML5先行者学习网
        android:duration="500"  xZZHTML5中文学习网 - HTML5先行者学习网
        />  xZZHTML5中文学习网 - HTML5先行者学习网
    <alpha  xZZHTML5中文学习网 - HTML5先行者学习网
        android:fromAlpha="1.0"   xZZHTML5中文学习网 - HTML5先行者学习网
        android:toAlpha="0.0"  xZZHTML5中文学习网 - HTML5先行者学习网
        android:duration="500"  xZZHTML5中文学习网 - HTML5先行者学习网
        />  xZZHTML5中文学习网 - HTML5先行者学习网
</set>
xZZHTML5中文学习网 - HTML5先行者学习网

希望本文所述对大家的Android程序设计有所帮助xZZHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助