滑动翻页控件ViewFlipper的使用

来源:互联网 发布:linux系统ftp命令用法 编辑:程序博客网 时间:2024/06/07 14:11

push_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="500" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.1"android:duration="500" /></set>


push_right_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="500" /> <alpha android:fromAlpha="0.1" android:toAlpha="1.0"android:duration="500" /></set>



push_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="500" /><alpha android:fromAlpha="1.0"  android:toAlpha="0.1"android:duration="500" /></set>

push_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="500" /><alpha android:fromAlpha="0.1"  android:toAlpha="1.0"android:duration="500" /></set>
package talent.library;import talent.pad.R;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View;import android.view.GestureDetector.SimpleOnGestureListener;import android.view.View.OnTouchListener;import android.view.animation.AnimationUtils;import android.widget.ViewFlipper;public class ViewFlipperEx{//public memberpublic final ViewFlipper Handle;//private variantprivate GestureDetector gestureDetector;    // touch listener    private OnTouchListener touchListener = new OnTouchListener(){@Overridepublic boolean onTouch(View v, MotionEvent event) {if(!gestureDetector.onTouchEvent(event)){com.Logi(""+Handle.getDisplayedChild());//获取当前显示的视图索引return false;}return true;}    };    // gesture listener    private SimpleOnGestureListener gestureListener = new SimpleOnGestureListener(){@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY){if (e1.getX() - e2.getX() > 100 && Math.abs(velocityX) > 50) {FlipLast();} else if (e2.getX() - e1.getX() > 100 && Math.abs(velocityX) > 50) {FlipNext();}else{return false;}return true;}    };public ViewFlipperEx(ViewFlipper vf){ Handle = vf;gestureDetector = new GestureDetector(gestureListener); }//switch to last pagepublic void FlipLast(){ Handle.setInAnimation(AnimationUtils.loadAnimation(Handle.getContext(), R.anim.push_left_in));Handle.setOutAnimation(AnimationUtils.loadAnimation(Handle.getContext(), R.anim.push_left_out));        Handle.showPrevious();//向左}//switch to next pagepublic void FlipNext(){Handle.setInAnimation(AnimationUtils.loadAnimation(Handle.getContext(), R.anim.push_right_in));Handle.setOutAnimation(AnimationUtils.loadAnimation(Handle.getContext(), R.anim.push_right_out));Handle.showNext();//向右}//add view that can response gesture to flip pagepublic void AddGestureView(View view){view.setLongClickable(true);view.setOnTouchListener(touchListener);}}
  • isFlipping: 用来判断View切换是否正在进行
  • setFilpInterval:设置View之间切换的时间间隔
  • startFlipping:使用上面设置的时间间隔来开始切换所有的View,切换会循环进行
  • stopFlipping: 停止View切换