ViewFlipper
1.手勢註冊
在res文件夾下新建anim文件件,存放left_in.xml、left_out.xml、right_in.xml、right_out.xml四個文件。
left_in.xml文件內容:
<?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="600"
/>
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="600"
/>
</set>
left_out.xml文件內容
<?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="600" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="600" /> </set>
right_in.xml文件內容
<?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="600" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="600" /> </set>
right_out.xml文件內容
<?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="600" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="600" /> </set>
activity要實現接口OnGestListener(import android.view.GestureDetector; importandroid.view.GestureDetector.OnGestureListener;)
2.實現接口OnGestListener
聲明對象
private ViewFlipper viewFlipper; //滑動播放圖片的控件 private GestureDetector detector; //手勢檢測器 Animation leftIn, leftOut, rightIn, rightOut; //四種反應方式
導入包
importandroid.view.GestureDetector; import android.view.GestureDetector.OnGestureListener;
重寫方法
@Override public boolean onTouchEvent(MotionEvent event) { return this.detector.onTouchEvent(event); //touch事件交給手勢處理。 } @Override public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.i(TAG, "e1="+e1.getX()+" e2="+e2.getX()+" e1-e2="+(e1.getX()-e2.getX())); if(e1.getX()-e2.getX()>120){ viewFlipper.setInAnimation(leftInAnimation); viewFlipper.setOutAnimation(leftOutAnimation); //注意,和上面的setInAnimation不同 viewFlipper.showNext();//向右滑動 return true; }else if(e1.getX()-e2.getY()<-120){ viewFlipper.setInAnimation(rightInAnimation); viewFlipper.setOutAnimation(rightOutAnimation); viewFlipper.showPrevious();//向左滑動 return true; } return false; } @Override public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // TODO Auto-generated method stub return false; } @Override public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub return false; }