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