大家都使用过ViewPager,但是ViewPager还有一个兄弟,那就是ViewFlipper。两者的名字非常相似,我们可以将ViewPager理解成“一页一页的视图”,ViewFlipper则是“快速翻转的视图”,但后者的使用率却远不及前者,不过这并不意味着ViewFlipper就弱了。现在我们就来拜访一下经常被冷落的ViewFlipper。
本示例是用ViewFliper实现屏幕切换图片的效果,手指滑动就实现图片的切换。
屏幕切换指的是在同一个Activity内屏幕间的切换,ViewFlipper继承了Framelayout类,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果。如下动图:
程序结构图:
ViewFliper中的代码
package com.scnu.mc.myviewfliper;
import Android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.ViewFlipper;
public class ViewFliper extends Activity {
ViewFlipper viewFlipper = null;
float startX;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
private void init() {
viewFlipper = (ViewFlipper) this.findViewById(R.id.viewFlipper);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = event.getX();
break;
case MotionEvent.ACTION_UP:
if (event.getX() > startX) { // 向右滑动
viewFlipper.setInAnimation(this, R.anim.in_left2right);
viewFlipper.setOutAnimation(this, R.anim.out_left2right);
viewFlipper.showNext();
} else if (event.getX() < startX) { // 向左滑动
viewFlipper.setInAnimation(this, R.anim.in_right2left);
viewFlipper.setOutAnimation(this, R.anim.out_right2left);
viewFlipper.showPrevious();
}
break;
}
return super.onTouchEvent(event);
}
}