Android的ViewFlipper与GestureDet
用ViewFlipper与GestureDetector来实现图片的左右滑动效果。
首先在布局xml中添加ViewFlipper控件:
<ViewFlipperandroid:id="@+id/flipper"android:layout_width="match_parent"android:layout_height="match_parent"></ViewFlipper>
在Activity中实现GestureDetector的OnGestureListener监听:
mGesture=newGestureDetector(this,this);
publicbooleanonDown(MotionEvente){returnfalse;}publicbooleanonFling(MotionEvente1,MotionEvente2,floatvelocityX,floatvelocityY){returnfalse;}publicvoidonLongPress(MotionEvente){}publicbooleanonScroll(MotionEvente1,MotionEvente2,floatdistanceX,floatdistanceY){returnfalse;}publicvoidonShowPress(MotionEvente){}publicbooleanonSingleTapUp(MotionEvente){returnfalse;}
为ViewFilpper加入View,如图片、文字等:
mFilpper=(ViewFlipper)findViewById(R.id.flipper);mFilpper.addView(addImageView(R.drawable.chrysanthemum));mFilpper.addView(addImageView(R.drawable.desert));mFilpper.addView(addImageView(R.drawable.ic_launcher));mFilpper.addView(addImageView(R.drawable.koala));mFilpper.addView(addImageView(R.drawable.penguins));mFilpper.addView(addImageView(R.drawable.lighthouse));mFilpper.addView(addText("你好"));
publicImageViewaddImageView(intresId){ImageViewp_w_picpath=newImageView(this);p_w_picpath.setImageResource(resId);returnp_w_picpath;}privateViewaddText(Stringstring){TextViewtextView=newTextView(this);textView.setText(string);returntextView;}
在onFling()中编写滑动效果:
@OverridepublicbooleanonFling(MotionEvente1,MotionEvente2,floatvelocityX,floatvelocityY){Log.e("onFling","onFling");if(e1.getX()-e2.getX()>120){mFilpper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.left_in));mFilpper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.left_out));mFilpper.showPrevious();}elseif(e2.getX()-e1.getX()>120){mFilpper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.rigth_in));mFilpper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.right_out));mFilpper.showNext();}returnfalse;}
其中的left_in.xml如下:
<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="http://schemas.android.com/apk/res/android"><alphaandroid:duration="1000"android:fromAlpha="0"android:toAlpha="1"/><translateandroid:duration="1000"android:fromXDelta="100%p"android:toXDelta="0"/></set>
left_out.xml:
<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="http://schemas.android.com/apk/res/android"><alphaandroid:duration="1000"android:fromAlpha="1"android:toAlpha="0"/><translateandroid:duration="1000"android:fromXDelta="0"android:toXDelta="-100%p"/></set>
right_in.xml:
<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="http://schemas.android.com/apk/res/android"><alphaandroid:duration="1000"android:fromAlpha="0"android:toAlpha="1"/><translateandroid:duration="1000"android:fromXDelta="-100%p"android:toXDelta="0"/></set>
right_out.xml:
<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="http://schemas.android.com/apk/res/android"><alphaandroid:duration="1000"android:fromAlpha="1"android:toAlpha="0"/><translateandroid:duration="1000"android:fromXDelta="0"android:toXDelta="100%p"/></set>
最后还要重写onTouchEvent()方法在其中调用GestureDetector的onTouchEvent()方法:
@OverridepublicbooleanonTouchEvent(MotionEventevent){Log.e("onTouchEvent","onTouchEvent");returnmGesture.onTouchEvent(event);}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。