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; } }