import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.ViewFlipper;
public class MyAndroidFlipActivity extends Activity implements
OnGestureListener{
private ViewFlipper flipper;
private GestureDetector detector;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
detector = new GestureDetector(this);
flipper = (ViewFlipper)
this.findViewById(R.id.ViewFlipper1);
flipper.addView(addTextView(R.drawable.friends_avatar_men));
flipper.addView(addTextView(R.drawable.friends_avatar_men_freez));
flipper.addView(addTextView(R.drawable.friends_avatar_women));
flipper.addView(addTextView(R.drawable.friends_avatar_women_freez));
flipper.addView(addTextView(R.drawable.ic_launcher));
}
private View addTextView(int id) {
ImageView iv = new ImageView(this);
iv.setImageResource(id);
return iv;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
return this.detector.onTouchEvent(event);
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float
velocityX,
float velocityY) {
if (e1.getX() - e2.getX() > 120)
{
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,
R.anim.push_left_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,
R.anim.push_left_out));
this.flipper.showNext();
return true;
} else if (e1.getX() - e2.getX() <
-120) {
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,
R.anim.push_right_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,
R.anim.push_right_out));
this.flipper.showPrevious();
return true;
}
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float
distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
}
四个动画效果:
push_left_in.xml
encoding="utf-8"?>
android:toXDelta="0"
android:duration="500" />
android:toAlpha="1.0"
android:duration="500" />
push_left_out.xml
encoding="utf-8"?>
android:toXDelta="-100%p"
android:duration="500" />
android:toAlpha="0.1"
android:duration="500" />
push_right_in.xml
encoding="utf-8"?>
android:toXDelta="0"
android:duration="500" />
android:toAlpha="1.0"
android:duration="500" />
push_right_out.xml
encoding="utf-8"?>
android:toXDelta="100%p"
android:duration="500" />
android:toAlpha="0.1"
android:duration="500" />
在drawable下放置五个图片即可
运行成功。