android两对概念辨析:ouchEvent vs. GestureDetector & Srcoller vs. ScrollView

android两对概念辨析


两对概念辨析:

touchEvent vs. GestureDetector
Srcoller vs. ScrollView

到底这两对概念是什么关系呢?一一解析:

1.touchEvent vs. GestureDetector

    当用户触摸屏幕的时候,会产生一系列的触摸事件,一般情况下,我们知道View类有个View.OnTouchListener内部接口,我们可以重写他的onTouch(View v, MotionEvent event)方法,以及View本身有一个onTouchEvent()方法,配合MotionEvent 参数类,可以处理一些touch事件。
    从这角度说,onTouch()、onTouchEvent()这个方法太过简单,只能处理简单的点击事件,例如普通点击,向上滑动,向下,长按。如果需要处理一些复杂的手势,用这个接口就会很麻烦(因为我们要自己根据用户触摸的轨迹去判断是什么手势)。当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等。 Android sdk给我们提供了GestureDetector(Gesture:手势Detector:识别)类,通过这个类我们可以识别很多的手势,主要是通过他的onTouchEvent(event)方法完成了不同手势的识别。

  1.   private class PicOnTouchListener implements OnTouchListener{  
  2.         @Override  
  3.         public boolean onTouch(View v, MotionEvent event){            
  4.             //event.getX获取X坐标;event.getY()获取Y坐标  
  5.             String sInfo="X="+String.valueOf(event.getX())+"  Y="+String.valueOf(event.getY());  
  6.             tvInfo.setText(sInfo);  
  7.             return true;  
  8.         }  
  9.     } 


  1. private class gesturelistener implements GestureDetector.OnGestureListener{  
  2.   
  3.     public boolean onDown(MotionEvent e) {  
  4.         // TODO Auto-generated method stub  
  5.         return false;  
  6.     }  
  7.   
  8.     public void onShowPress(MotionEvent e) {  
  9.         // TODO Auto-generated method stub  
  10.           
  11.     }  
  12.   
  13.     public boolean onSingleTapUp(MotionEvent e) {  
  14.         // TODO Auto-generated method stub  
  15.         return false;  
  16.     }  
  17.   
  18.     public boolean onScroll(MotionEvent e1, MotionEvent e2,  
  19.             float distanceX, float distanceY) {  
  20.         // TODO Auto-generated method stub  
  21.         return false;  
  22.     }  
  23.   
  24.     public void onLongPress(MotionEvent e) {  
  25.         // TODO Auto-generated method stub  
  26.           
  27.     }  
  28.   
  29.     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,  
  30.             float velocityY) {  
  31.         // TODO Auto-generated method stub  
  32.         return false;  
  33.     }  
  34.       
  35. }  

2.Srcoller vs. ScrollView

    scroller只是一个滑动辅助类,并不能实现滑动,只是实现滑动的滚动效果,viewgroup的滑动还是要靠内部函数scrollTo()实现,一个viewgroup可以通过scroller实现滑动效果ScrollView是一个viewgroup,也是靠scrollTo()实现滑动,但是滑动效果不是由scroller实现,而是靠scroller的高级版本overScroller实现滚动效果。
    具体的overSrcoller请看另外一篇博客。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值