首先为这两个类初始化:
viewFlipper = (ViewFlipper) findViewById(R.id.flipper); gestureDetector = new GestureDetector(this);对GestureDetector进行初始化的时候,需要实现GestureDetector.OnGestureListener接口:
/**************************************GestureDetector触发的事件**********/ @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) { } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { //e1为手势的起点,e2为手势的终点 velocityX为水平方向的速度 velocityY为竖直方向的速度 if((e2.getX() - e1.getX()) > 120){ viewFlipper.showPrevious(); } if(e1.getX() - e2.getX() > 120){ viewFlipper.showNext(); } return false; } /***************************************end*********************/为FlipperView设置参数
for(int i = 0 ; i < imgs.length ; i++){ ImageView iv = new ImageView(this); iv.setImageResource(imgs[i]); iv.setScaleType(ImageView.ScaleType.FIT_XY); viewFlipper.addView(iv,new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); } viewFlipper.setAutoStart(true);//设置自动开始,当设置了这个方法ViewFlipper自动调用startFlipping()方法 viewFlipper.setFlipInterval(1000);//设置事件延迟 //上面的两个方法也可以在xml里面设置 android:autoStart="true" android:flipInterval="2000" if(viewFlipper.isAutoStart() && !viewFlipper.isFlipping()){ //viewFlipper.startFlipping(); }如果想让GestureDetector的触发事件起作用则重写下面方法:
@Override public boolean onTouchEvent(MotionEvent event) { viewFlipper.stopFlipping(); viewFlipper.setAutoStart(false); return gestureDetector.onTouchEvent(event);//为手势注册事件,只有在这里注册下面的方法才能触发 }这样,一个简易的ViewFlipper结合GestureDetector就完成了。