Android利用ViewFlipper实现随手势滑动视图间切换

main.xml是首页布局文件:

 

  1. <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     android:orientation="vertical" android:layout_width="fill_parent"
  3.     android:layout_height="fill_parent">
  4.     <viewflipper android:layout_width="fill_parent" android:id="@+id/myViewFlipper"
  5.         android:layout_height="fill_parent">
  6.         <linearlayout android:orientation="vertical"
  7.             android:layout_width="fill_parent" android:layout_height="fill_parent">
  8.         
  9.             <imageview android:id="@+id/image1" android:src="@drawable/a1"
  10.                 android:layout_width="fill_parent" android:layout_height="fill_parent">
  11.             
  12.          
  13.         <linearlayout android:orientation="vertical"
  14.             android:layout_width="fill_parent" android:layout_height="fill_parent">
  15.             
  16.             <imageview android:id="@+id/image1" android:src="@drawable/a2"
  17.                 android:layout_width="fill_parent" android:layout_height="fill_parent">
  18.             
  19.         
  20.         <linearlayout android:orientation="vertical"
  21.             android:layout_width="fill_parent" android:layout_height="fill_parent">
  22.             
  23.             <imageview android:id="@+id/image3" android:src="@drawable/a3"
  24.                 android:layout_width="fill_parent" android:layout_height="fill_parent">
  25.             
  26.          
  27.    
复制代码

在ViewFlipper中嵌套了3个LinearLayout,MainActivity主要代码如下:

  1. public void onCreate(Bundle savedInstanceState) {
  2.         super.onCreate(savedInstanceState);
  3.         setContentView(R.layout.main);
  4.         
  5.         viewFlipper = (ViewFlipper)findViewById(R.id.myViewFlipper);
  6.         //在代码中增加ViewFlipper中的视图
  7.        viewFlipper.addView(getLayoutInflater().inflate(R.layout.textlayout, null),viewFlipper.getChildCount());
  8.         
  9.         gestureDetector = new GestureDetector(new OnGestureListener() {
  10.             
  11.             @Override
  12.             public boolean onSingleTapUp(MotionEvent e) {
  13.                 // TODO Auto-generated method stub
  14.                 return false;
  15.             }
  16.             
  17.             @Override
  18.             public void onShowPress(MotionEvent e) {
  19.                 // TODO Auto-generated method stub
  20.                
  21.             }
  22.             
  23.             @Override
  24.             public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
  25.                     float distanceY) {
  26.                 // TODO Auto-generated method stub
  27.                 return false;
  28.             }
  29.             
  30.             @Override
  31.             public void onLongPress(MotionEvent e) {
  32.                 // TODO Auto-generated method stub
  33.                
  34.             }
  35.             
  36.             @Override
  37.             public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
  38.                     float velocityY) {
  39.                 if(velocityX>0){
  40.                     viewFlipper.showNext();
  41.                 }else {
  42.                     viewFlipper.showPrevious();
  43.                 }
  44.                 return false;
  45.             }
  46.             
  47.             @Override
  48.             public boolean onDown(MotionEvent e) {
  49.                 // TODO Auto-generated method stub
  50.                 return false;
  51.             }
  52.         });
  53.     }
  54.    
  55.     @Override
  56.     public boolean onTouchEvent(MotionEvent event) {
  57.         gestureDetector.onTouchEvent(event);
  58.         return super.onTouchEvent(event);
  59.     }
复制代码

其中onFling方法实现了随手势左右滑动,视图间不断切换。

  1. viewFlipper.addView(getLayoutInflater().inflate(R.layout.textlayout, null),viewFlipper.getChildCount());
复制代码

实现了在代码中添加View。关于手势的用法参见Android实现简单移动动画

转载于:https://www.cnblogs.com/ou10209019/archive/2012/07/27/2611395.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值