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

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

首先在layout的xml文件中定义一个ViewFlipper:

android:id="@+id/viewFlipper"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#FF0000"

/>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#00FF00"

/>

声明一个新的GestureDetector,重写它的onFling()函数,在这个函数里面判断手势,这里为横向的拖动:

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()函数:

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

android:fromXDelta="100%p"

android:toXDelta="0"

android:duration="500"

/>

android:fromAlpha="0.0"

android:toAlpha="1.0"

android:duration="500"

/>

2.slide_left_out.xml

android:fromXDelta="0"

android:toXDelta="-100%p"

android:duration="500"

/>

android:fromAlpha="1.0"

android:toAlpha="0.0"

android:duration="500"

/>

3.slide_right_in.xml

android:fromXDelta="-100%p"

android:toXDelta="0"

android:duration="500"

/>

android:fromAlpha="0.0"

android:toAlpha="1.0"

android:duration="500"

/>

4.slide_right_out.xml

android:fromXDelta="0"

android:toXDelta="100%p"

android:duration="500"

/>

android:fromAlpha="1.0"

android:toAlpha="0.0"

android:duration="500"

/>

希望本文所述对大家的Android程序设计有所帮助

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值