现在的位置: 首页 > 综合 > 正文

ViewFlipper的低级滑动实例(建议在Demo级别的项目的开机导航使用)

2018年05月16日 ⁄ 综合 ⁄ 共 4463字 ⁄ 字号 评论关闭
package com.example.listviewdemo;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.GestureDetectorCompat;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.ViewFlipper;
/**
 * 参考  : http://blog.csdn.net/ithomer/article/details/7420567
 * 
 * 此主要练习动画,无法实现,在滑动中左右滑动的效果,属于比较低端的左右滑动。
 *
 */
public class ViewFlipperActivity extends Activity implements OnGestureListener {
	
	ViewFlipper mvFlipper;
	
	private int[] draws = new int[]{R.drawable.bg,R.drawable.empty_paper_tape,
			R.drawable.login_warring_pic,R.drawable.share_tellfriends_bg,R.drawable.splash_bg};
	
	private GestureDetectorCompat gestureDetectorCompat = null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.t1);
		//第一个参数是上下文,第二个参数是监听器,设置为当前Activity的监听
		gestureDetectorCompat = new GestureDetectorCompat(this, this);
		
		mvFlipper = (ViewFlipper)findViewById(R.id.viewFlipper1);
		ImageView iv = null;
		for (int i = 0; i < draws.length; i++) {
			iv = new ImageView(this);
			iv.setImageResource(draws[i]);
			iv.setScaleType(ImageView.ScaleType.FIT_XY);
			mvFlipper.addView(iv, new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
		}
		
		mvFlipper.setAutoStart(true);
		mvFlipper.setFlipInterval(1000);
		
		
	}
	
	
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		//当点击 屏幕后,就停止自动播放
		mvFlipper.stopFlipping();
		mvFlipper.setAutoStart(false);
		return gestureDetectorCompat.onTouchEvent(event);	
	}
	
	

	@Override
	public boolean onDown(MotionEvent e) {
		return false;
	}

	@Override
	public void onShowPress(MotionEvent e) {
		
	}

	@Override
	public boolean onSingleTapUp(MotionEvent e) {
		return false;
	}

	@Override
	public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
			float distanceY) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void onLongPress(MotionEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
			float velocityY) {
		if (e2.getX() - e1.getX() > 120) {//从左向右
			TranslateAnimation translateAnimation = new TranslateAnimation
					(Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 
							0.0f, Animation.RELATIVE_TO_PARENT,
							0, Animation.RELATIVE_TO_PARENT, 0);
			translateAnimation.setDuration(500);
			
			AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);
			alphaAnimation.setDuration(500);
			
			AnimationSet animationSet = new AnimationSet(false);
			animationSet.addAnimation(alphaAnimation);
			animationSet.addAnimation(translateAnimation);
			//对进来的图片做的动画效果
			mvFlipper.setInAnimation(animationSet);
			
			//我们还要对出去的图片做动画效果
			TranslateAnimation outTranslateAnimation = new TranslateAnimation
					(Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 
							1.0f, 
							Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT,
							0.0f);
			AlphaAnimation outaAlphaAnimation = new AlphaAnimation(1.0f, 0.0f);
			outaAlphaAnimation.setDuration(500);
			outTranslateAnimation.setDuration(500);
			AnimationSet outAnimationSet = new AnimationSet(false);
			outAnimationSet.addAnimation(outTranslateAnimation);
			outAnimationSet.addAnimation(outaAlphaAnimation);
			
			mvFlipper.setOutAnimation(outAnimationSet);
			
			Log.e("tag", "左进右出");
			mvFlipper.showPrevious();
			return true;
		}else if (e2.getX() - e1.getX() < -120) {//从右向左滑动
			TranslateAnimation inTranslateAnimation = new TranslateAnimation(
					Animation.RELATIVE_TO_PARENT, 1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, 
					Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
			inTranslateAnimation.setDuration(500);
			AlphaAnimation inAlphaAnimation = new AlphaAnimation(0.0f, 1.0f);
			inAlphaAnimation.setDuration(500);
			
			AnimationSet inAnimationSet = new AnimationSet(false);
			inAnimationSet.addAnimation(inTranslateAnimation);
			inAnimationSet.addAnimation(inAlphaAnimation);
			
			mvFlipper.setInAnimation(inAnimationSet);
			
			//同理,对出去的图片做动画
			TranslateAnimation outTranslateAnimation = new TranslateAnimation(
					Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f, 
					Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
			outTranslateAnimation.setDuration(500);
			
			AlphaAnimation outAlphaAnimation = new AlphaAnimation(1.0f, 0.0f);
			outAlphaAnimation.setDuration(500);
			
			AnimationSet animationSet = new AnimationSet(false);
			animationSet.addAnimation(outTranslateAnimation);
			animationSet.addAnimation(outAlphaAnimation);
			
			mvFlipper.setOutAnimation(animationSet);
			
			Log.e("tag", "右进左出");
			mvFlipper.showNext();
			return true;
		}
		return true;
	}
}

抱歉!评论已关闭.