滑动翻页控件ViewFlipper的使用

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 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切换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值