滑动翻页控件ViewFlipper的使用 .
发布日期:2013-01-18 17:13:29
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>
<?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>
<?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>
<?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>
<?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 member
- public final ViewFlipper Handle;
- //private variant
- private GestureDetector gestureDetector;
- // touch listener
- private OnTouchListener touchListener = new OnTouchListener(){
- @Override
- public 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(){
- @Override
- public 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 page
- public 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 page
- public 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 page
- public void AddGestureView(View view){
- view.setLongClickable(true);
- view.setOnTouchListener(touchListener);
- }
- }
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 member public final ViewFlipper Handle; //private variant private GestureDetector gestureDetector; // touch listener private OnTouchListener touchListener = new OnTouchListener(){ @Override public 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(){ @Override public 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 page public 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 page public 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 page public void AddGestureView(View view){ view.setLongClickable(true); view.setOnTouchListener(touchListener); } }
- isFlipping: 用来判断View切换是否正在进行
- setFilpInterval:设置View之间切换的时间间隔
- startFlipping:使用上面设置的时间间隔来开始切换所有的View,切换会循环进行
- stopFlipping: 停止View切换