通过ViewFlipper和GestureDetector.OnGestureListener实现自动播放和手势滑屏事件

it2026-02-10  15

ViewFlipper flipper;

private GestureDetector gestureDetector = null;  手势

1 2 3 4 5 6 7 8 9 10 11 12 < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"      android:layout_width = "fill_parent"      android:layout_height = "fill_parent"      android:orientation = "vertical" >         < ViewFlipper          android:id = "@+id/vf"          android:layout_width = "fill_parent"          android:layout_height = "wrap_content" />       </ LinearLayout >

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 package com.sanya.viewflipper;    import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener; import android.view.MotionEvent; import android.view.ViewGroup.LayoutParams; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.ViewFlipper;    public class MainActivity extends Activity implements OnGestureListener {      ViewFlipper flipper;      private GestureDetector gestureDetector = null ;         @Override      protected void onCreate(Bundle savedInstanceState) {             super .onCreate(savedInstanceState);          setContentView(R.layout.activity_main);          int img[] = { R.drawable.guide1, R.drawable.guide2, R.drawable.guide3,                  R.drawable.guide5, R.drawable.splash };          flipper = (ViewFlipper) findViewById(R.id.vf);          gestureDetector = new GestureDetector( this ); // 声明检测手势事件          for ( int i = 0 ; i < img.length; i++) {              ImageView view = new ImageView(getApplicationContext());              view.setImageResource(img[i]);              view.setScaleType(ScaleType.FIT_XY); // 设置图片的缩放大小              flipper.addView(view, new LayoutParams(LayoutParams.FILL_PARENT,                      LayoutParams.FILL_PARENT));          }          flipper.setAutoStart( true );          flipper.setFlipInterval( 2000 );          // 如果手势不滑动 则自动播放          if (flipper.isAutoStart() && !flipper.isFlipping()) {              flipper.startFlipping();          }         }         // 手指接触事件      @Override      public boolean onTouchEvent(MotionEvent event) {             flipper.setAutoStart( false );          flipper.stopFlipping();          return gestureDetector.onTouchEvent(event); // 返回手指滑动事件      }         @Override      public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,              float velocityY) {          if (e2.getX() - e1.getX() > 120 ) {                             Animation inAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.right_in);              Animation outAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.right_out);              flipper.setInAnimation(inAnimation);              flipper.setOutAnimation(outAnimation);              flipper.showPrevious();          } else if (e2.getX() - e1.getX() < - 120 ) {                             Animation inAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.left_in);              Animation outAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.left_out);              flipper.setInAnimation(inAnimation);              flipper.setOutAnimation(outAnimation);              flipper.showNext();          }             return true ;      }         @Override      public boolean onDown(MotionEvent e) {          return false ;      }         @Override      public void onShowPress(MotionEvent e) {         }         @Override      public boolean onSingleTapUp(MotionEvent e) {          return false ;      }         @Override      public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,              float distanceY) {          return false ;      }         @Override      public void onLongPress(MotionEvent e) {         }    } 1 2 3 4 5 6 7 8 9 10 11 12 <? xml version = "1.0" encoding = "utf-8" ?> < set xmlns:android = "http://schemas.android.com/apk/res/android" >      < translate          android:duration = "500"          android:fromXDelta = "100%p"          android:toXDelta = "0" />         < alpha          android:duration = "500"          android:fromAlpha = "0.1"          android:toAlpha = "1.0" /> </ set > 1 2 3 4 5 6 7 8 9 10 11 12 <? xml version = "1.0" encoding = "utf-8" ?> < set xmlns:android = "http://schemas.android.com/apk/res/android" >      < translate          android:duration = "500"          android:fromXDelta = "0"          android:toXDelta = "-100%p" />         < alpha          android:duration = "500"          android:fromAlpha = "1.0"          android:toAlpha = "0.1" /> </ set > 1 2 3 4 5 6 7 8 9 10 11 12 <? xml version = "1.0" encoding = "utf-8" ?> < set xmlns:android = "http://schemas.android.com/apk/res/android" >      < translate          android:duration = "500"          android:fromXDelta = "-100%p"          android:toXDelta = "0" />         < alpha          android:duration = "500"          android:fromAlpha = "0.1"          android:toAlpha = "1.0" /> </ set > 1 2 3 4 5 6 7 8 9 10 11 12 <? xml version = "1.0" encoding = "utf-8" ?> < set xmlns:android = "http://schemas.android.com/apk/res/android" >      < translate          android:duration = "500"          android:fromXDelta = "0"          android:toXDelta = "100%p" />         < alpha          android:duration = "500"          android:fromAlpha = "1.0"          android:toAlpha = "0.1" /> </ set >

 

 

 

 

 

 

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/feelbest/p/3696189.html

相关资源:数据结构—成绩单生成器
最新回复(0)