手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >Android中使用ViewFlipper进行手势切换实例
Android中使用ViewFlipper进行手势切换实例
摘要:本文实例讲述了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程序设计有所帮助

【Android中使用ViewFlipper进行手势切换实例】相关文章:

Android 混淆代码详解及实例

Android中使用sax解析xml文件的方法

Android中的Button自定义点击效果实例代码

Android layout_weight使用方法及实例

Android通过手势实现的缩放处理实例代码

Android中实现动态切换组件背景的操作

Android 开发中怎么使用自定义字体

Android中Webview自适应屏幕

Android View添加 Listener 实例代码

Android CheckBox 的使用案例分析

精品推荐
分类导航