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.youkuaiyun.com/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;
}
}