Android中使用ViewFlipper进行手势切换实例_安卓软件开发教程-查字典教程网
Android中使用ViewFlipper进行手势切换实例
Android中使用ViewFlipper进行手势切换实例
发布时间:2016-12-28 来源:查字典编辑
摘要:本文实例讲述了Android中使用ViewFlipper进行手势切换的方法,分享给大家供大家参考。具体实现步骤如下:首先在layout的xm...

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

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

复制代码 代码如下:<"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()函数,在这个函数里面判断手势,这里为横向的拖动:

复制代码 代码如下: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

复制代码 代码如下:<"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

复制代码 代码如下:<"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

复制代码 代码如下:<"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

复制代码 代码如下:<"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程序设计有所帮助

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新安卓软件开发学习
    热门安卓软件开发学习
    编程开发子分类