通过ViewFlipper和GestureDetector.OnGestureListener实现自动播放和手势滑屏事件
ViewFlipper flipper;
private GestureDetector gestureDetector = null; 手势
1 2 3 4 5 6 7 8 9 10 11 12 | 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"?> <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"?> <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"?> <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"?> <translate android:duration="500" android:fromXDelta="0" android:toXDelta="100%p" /> <alpha android:duration="500" android:fromAlpha="1.0" android:toAlpha="0.1" /> </set> |
浙公网安备 33010602011771号