ViewFlipper

setInAnimation:设置View进入屏幕时候使用的动画。该方法有两个重载方法,即可以直接传入Animation对象,也可以传入定义的Animation文件的resourceID。

setOutAnimation:设置View退出屏幕时候使用的动画。使用方法和setInAnimation方法一样。

showNext:调用该方法可以显示FrameLayout里面的下一个View。

showPrevious:调用该方法可以来显示FrameLayout里面的上一个View。

查看ViewFlipper的源码可以看到,ViewFlipper主要用来实现View的自动切换。该类提供了如下几个主要的方法。

setFilpInterval:设置View切换的时间间隔。参数为毫秒。

startFlipping:开始进行View的切换,时间间隔是上述方法设置的间隔数。切换会循环进行。

stopFlipping:停止View切换。

setAutoStart:设置是否自动开始。如果设置为“true”,当ViewFlipper显示的时候View的切换会自动开始。


实现滑动—GestureDetector介绍

如果想要实现滑动翻页的效果,就要了解另外一个类:android.view.GestureDetector类。GestureDetector类中可以用来检测各种手势事件。该类有两个回调接口,分别用来通知具体的事件。

GestureDetector.OnDoubleTapListener:用来通知DoubleTap事件,类似于PC上面的鼠标的双击事件。

GestureDetector.OnGestureListener:用来通知普通的手势事件,该接口有六个回调方法,具体的可以查看API。这里想要实现滑动的判断,就需要用到其中的onFling()方法。

  1. blic class ViewFlipperActivity extends Activity implements OnGestureListener {  
  2.       
  3.     private static final int FLING_MIN_DISTANCE = 100;  
  4.     private ViewFlipper flipper;  
  5.     private GestureDetector detector;  
  6.   
  7.     @Override  
  8.     protected void onCreate(Bundle savedInstanceState) {  
  9.         super.onCreate(savedInstanceState);  
  10.         setContentView(R.layout.viewflipper);  
  11.         // 注册一个GestureDetector  
  12.         detector = new GestureDetector(this);  
  13.         flipper = (ViewFlipper) findViewById(R.id.ViewFlipper);  
  14.         ImageView image1 = new ImageView(this);  
  15.         image1.setBackgroundResource(R.drawable.image1);  
  16.         // 增加第一个view  
  17.         flipper.addView(image1);  
  18.         ImageView image2 = new ImageView(this);  
  19.         image2.setBackgroundResource(R.drawable.image2);  
  20.         // 增加第二个view  
  21.         flipper.addView(image2);  
  22.     } 
  1.  @Override  
  2.     public boolean onTouchEvent(MotionEvent event) {  
  3.         // 将触屏事件交给手势识别类处理  
  4.         return this.detector.onTouchEvent(event);  
  5.     }  
  6.   
  7.     @Override  
  8.     public boolean onDown(MotionEvent e) {  
  9.         return false;  
  10.     }  
  11.   
  12.     @Override  
  13.     public void onShowPress(MotionEvent e) {  
  14.     }  
  15.   
  16.     @Override  
  17.     public boolean onSingleTapUp(MotionEvent e) {  
  18.         return false;  
  19.     }  
  20.   
  21.     @Override  
  22.     public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,  
  23.             float distanceY) {  
  24.         return false;  
  25.     }  
  26.   
  27.     @Override  
  28.     public void onLongPress(MotionEvent e) {  
  29.     }  
  30.  
  1.   @Override  
  2.     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,  
  3.             float velocityY) {  
  4.         if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE) {  
  5.             //设置View进入和退出的动画效果  
  6.             this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,  
  7.                     R.anim.left_in));  
  8.             this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,  
  9.                     R.anim.left_out));  
  10.             this.flipper.showNext();  
  11.             return true;  
  12.         }  
  13.         if (e1.getX() - e2.getX() < -FLING_MIN_DISTANCE) {  
  14.             this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,  
  15.                     R.anim.right_in));  
  16.             this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,  
  17.                     R.anim.right_out));  
  18.             this.flipper.showPrevious();  
  19.             return true;  
  20.         }  
  21.         return false;  
  22.     }  


















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值