源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-06-12 04:23 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android中使用ViewFlipper进行手势切换实例
本文实例讲述了Android中使用ViewFlipper进行手势切换的方法,分享给大家供大家参考。具体实现步骤如下: 首先在layout的xml文件中定义一个ViewFlipper:
[u]复制代码[/u] 代码如下:
<?xml version="1.0" encoding="utf-8"?>  <ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"          android:id="@+id/viewFlipper"          android:layout_width="fill_parent"           android:layout_height="fill_parent"          >                <LinearLayout          android:layout_width="fill_parent"          android:layout_height="fill_parent"          >                    <TextView              android:layout_width="fill_parent"              android:layout_height="fill_parent"              android:background="#FF0000"              />                    </LinearLayout>            <LinearLayout          android:layout_width="fill_parent"          android:layout_height="fill_parent"          >                    <TextView              android:layout_width="fill_parent"              android:layout_height="fill_parent"              android:background="#00FF00"              />                    </LinearLayout>        </ViewFlipper>
声明一个新的GestureDetector,重写它的onFling()函数,在这个函数里面判断手势,这里为横向的拖动:
[u]复制代码[/u] 代码如下:
public class MyGestureDetector extends SimpleOnGestureListener  {      private static final int SWIPE_MIN_DISTANCE = 120;      private static final int SWIPE_MAX_OFF_PATH = 250;      private static final int SWIPE_THRESHOLD_VELOCITY = 200;            @Override      public boolean onFling(MotionEvent e1, MotionEvent e2,                              float velocityX, float velocityY)      {          try          {                 if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)                 {                     return false;                 }                 if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE &&                     Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY)                 {                  viewFlipper.setInAnimation(slideLeftIn);                     viewFlipper.setOutAnimation(slideLeftOut);                  viewFlipper.showNext();                 }                 else                   if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE &&                       Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY)                  {                      viewFlipper.setInAnimation(slideRightIn);                      viewFlipper.setOutAnimation(slideRightOut);                      viewFlipper.showPrevious();                  }             }          catch (Exception e)          {                           }             return false;      }  }
注意在Activity中重写onTouchEvent()函数:
[u]复制代码[/u] 代码如下:
private ViewFlipper viewFlipper;    private Animation slideLeftIn;  private Animation slideLeftOut;  private Animation slideRightIn;  private Animation slideRightOut;    private GestureDetector gestureDetector;  @Override  public void onCreate(Bundle savedInstanceState)  {      super.onCreate(savedInstanceState);      setContentView(R.layout.main);            viewFlipper = (ViewFlipper)findViewById(R.id.viewFlipper);         slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);         slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out);         slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in);         slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out);                  gestureDetector = new GestureDetector(new MyGestureDetector());                  new View.OnTouchListener()         {             public boolean onTouch(View v, MotionEvent event)             {                 if (gestureDetector.onTouchEvent(event))                 {                     return true;                 }                 return false;             }         };  }    @Override  public boolean onTouchEvent(MotionEvent event)  {      if (gestureDetector.onTouchEvent(event))      {          return true;      }      else      {          return false;      }  }
最后,在res文件夹下新建一个anim文件夹,用来存放view之间切换的动画文件: 1.slide_left_in.xml
[u]复制代码[/u] 代码如下:
<?xml version="1.0" encoding="utf-8"?>  <set xmlns:android="http://schemas.android.com/apk/res/android">      <translate          android:fromXDelta="100%p"           android:toXDelta="0"           android:duration="500"          />      <alpha          android:fromAlpha="0.0"           android:toAlpha="1.0"          android:duration="500"          />  </set>
2.slide_left_out.xml
[u]复制代码[/u] 代码如下:
<?xml version="1.0" encoding="utf-8"?>  <set xmlns:android="http://schemas.android.com/apk/res/android">      <translate          android:fromXDelta="0"           android:toXDelta="-100%p"           android:duration="500"          />      <alpha          android:fromAlpha="1.0"           android:toAlpha="0.0"           android:duration="500"          />  </set>
3.slide_right_in.xml
[u]复制代码[/u] 代码如下:
<?xml version="1.0" encoding="utf-8"?>  <set xmlns:android="http://schemas.android.com/apk/res/android">      <translate           android:fromXDelta="-100%p"           android:toXDelta="0"           android:duration="500"          />      <alpha          android:fromAlpha="0.0"           android:toAlpha="1.0"          android:duration="500"          />  </set>
4.slide_right_out.xml
[u]复制代码[/u] 代码如下:
<?xml version="1.0" encoding="utf-8"?>  <set xmlns:android="http://schemas.android.com/apk/res/android">      <translate           android:fromXDelta="0"           android:toXDelta="100%p"           android:duration="500"          />      <alpha          android:fromAlpha="1.0"           android:toAlpha="0.0"          android:duration="500"          />  </set>
希望本文所述对大家的Android程序设计有所帮助
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部