ViewFlipper经常和Animation结合使用,实现滑动屏幕切换图片的动画效果,直接上代码:
MainActivity:
package com.home.viewflippertest;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.animation.AnimationUtils;
import android.widget.ViewFlipper;
import android.app.Activity;
public class MainActivity extends Activity {
private GestureDetector detector;
private ViewFlipper flipper;
private int index = 1;// 当前位置
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
flipper = (ViewFlipper) findViewById(R.id.main_vf);
detector = new GestureDetector(this, new MyGestureListener());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return detector.onTouchEvent(event);
}
class MyGestureListener implements OnGestureListener {
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (e1.getX() - e2.getX() > 5) {
flipper.setInAnimation(AnimationUtils.loadAnimation(
MainActivity.this, R.anim.push_in_left));
flipper.setOutAnimation(AnimationUtils.loadAnimation(
MainActivity.this, R.anim.push_out_left));
if (index < 5) {
flipper.showNext();
index++;
}
} else if (e1.getX() - e2.getX() < -5) {
flipper.setInAnimation(AnimationUtils.loadAnimation(
MainActivity.this, R.anim.push_in_right));
flipper.setOutAnimation(AnimationUtils.loadAnimation(
MainActivity.this, R.anim.push_out_right));
if (index > 1) {
flipper.showPrevious();
index--;
}
}
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
}
}
main.xml:
动画系列:
push_in_left.xml:
push_out_left.xml:
push_in_right.xml:
push_out_right.xml: