滑动翻页控件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切换
