分享

android onTouch 事件处理 源码 - android开发入门 - Andro...

 liluvu 2010-11-05
  1. int lastX, curX;
  2. private int totalMove = 0;
  3. private boolean firstDown = true;//开关
  4. int duration = 150;
  5. OnTouchListener listViewOnTouchListener = new OnTouchListener() {
  6.   
  7.   @Override
  8.   public boolean onTouch(View v, MotionEvent event) {
  9.    switch (event.getAction()) {
  10.    case MotionEvent.ACTION_DOWN: {
  11.     lastX = (int)event.getX();
  12.     totalMove = 0;
  13.     firstDown = false;
  14.    
  15.     return false;
  16.    }
  17.    case MotionEvent.ACTION_MOVE:{
  18.     if (firstDown) {
  19.      curX = (int) event.getX();
  20.      totalMove = 0;
  21.      firstDown = false;
  22.     }
  23.     curX = (int) event.getX();

  24.     int delatX = curX - lastX;
  25.     //if (delatX > 0) {
  26.      totalMove += delatX;
  27.      lastX = curX;
  28.     //}
  29.     return false;
  30.    }
  31.    case MotionEvent.ACTION_UP:{
  32.     boolean result = false;
  33.     if(totalMove > 20 ){
  34.      //
  35.      Log.e("right","right");
  36.      totalMove = 0;
  37. //things you shouold do here
  38.      result = true;
  39.     }
  40.     if(totalMove < 0 && Math.abs(totalMove) > 20){
  41.      Log.e("left","left");
  42.      totalMove = 0;
  43. //things you shouold do here

  44.      result= true;
  45.     }
  46.     return result;
  47.    }
  48.    }
  49.    return false;
  50.    
  51.   }
  52. };

  53. listView.setOnTouchListener(listViewOnTouchListener );

  54. 其他的onclickListener onLongClickListener 好普通 无需介绍

  55. 关键在于onTouchListener中 onDown的时候 返回false onCLICK 与longclick也会感应到这个动作,true就相反。。。然后在onMove的时候去统计移动的距离,设定一个滑动的敏感度,达到这个值就返回false 处理相应的操作,例如划屏更新UI。。。不过这个值就返回true让onclick的事件响应,同时设定一个duration时延给longclick事件 达到某个值的话 也直接返回true。。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多