星空网 > 软件开发 > 操作系统

Android Touch事件传递机制


 

例子一:  只有OnTouch和OnItemClick

actualListView.setOnTouchListener(new OnTouchListener() {            @Override      public boolean onTouch(View v, MotionEvent event) {        switch (event.getAction()) {        case MotionEvent.ACTION_DOWN:          Toast.makeText(MainActivity.this, "DOWN",               Toast.LENGTH_SHORT).show();          break;        case MotionEvent.ACTION_UP:          Toast.makeText(MainActivity.this, "UP",               Toast.LENGTH_SHORT).show();          break;        }        return false;  //返回false之后      } }); actualListView.setOnItemClickListener(new OnItemClickListener() {       @Override       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {         Toast.makeText(MainActivity.this, "setOnClickListener", Toast.LENGTH_SHORT).show();       } });

 

先走ACTION_DOWN,ACTION_UP,最后走onItemClick。

 

 

例子二:只有OnTouch和OnItemClick

actualListView.setOnTouchListener(new OnTouchListener() {            @Override      public boolean onTouch(View v, MotionEvent event) {        switch (event.getAction()) {        case MotionEvent.ACTION_DOWN:          Toast.makeText(MainActivity.this, "DOWN",               Toast.LENGTH_SHORT).show();          break;        case MotionEvent.ACTION_UP:          Toast.makeText(MainActivity.this, "UP",               Toast.LENGTH_SHORT).show();          break;        }        return true;   //返回true之后 
      }
});
actualListView.setOnItemClickListener(new OnItemClickListener() {

       @Override
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
           Toast.makeText(MainActivity.this, "setOnClickListener", Toast.LENGTH_SHORT).show();
       }
});

先走ACTION_DOWN,ACTION_UP,   onItemClick不走

 

例子三:只有OnTouch和OnItemClick和dispatchTouchEvent

@Override  public boolean dispatchTouchEvent(MotionEvent ev) {    switch (ev.getAction()) {    case MotionEvent.ACTION_DOWN:      Toast.makeText(MainActivity.this, "dispatch DOWN",           Toast.LENGTH_SHORT).show();      break;    case MotionEvent.ACTION_UP:      Toast.makeText(MainActivity.this, "dispatch UP",           Toast.LENGTH_SHORT).show();      break;    }        return super.dispatchTouchEvent(ev);  }

actualListView.setOnTouchListener(new OnTouchListener() {            @Override      public boolean onTouch(View v, MotionEvent event) {        switch (event.getAction()) {        case MotionEvent.ACTION_DOWN:          Toast.makeText(MainActivity.this, "DOWN",               Toast.LENGTH_SHORT).show();          break;        case MotionEvent.ACTION_UP:          Toast.makeText(MainActivity.this, "UP",               Toast.LENGTH_SHORT).show();          break;        }        return false;  //返回false之后      } });
actualListView.setOnItemClickListener(new OnItemClickListener() {       @Override       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {         Toast.makeText(MainActivity.this, "setOnClickListener", Toast.LENGTH_SHORT).show();       } });
 

先走dispatchTouchEvent的ACTION_DOWN------------>OnTouch的ACTION_DOWN------------->dispatchTouchEvent的ACTION_UP

----------------->OnTouch的ACTION_UP----------------->onItemClick

 

 

 

 

 

例子四:只有OnTouch和OnItemClick和dispatchTouchEvent

  @Override  public boolean dispatchTouchEvent(MotionEvent ev) {    switch (ev.getAction()) {    case MotionEvent.ACTION_DOWN:      Toast.makeText(MainActivity.this, "dispatch DOWN",           Toast.LENGTH_SHORT).show();      break;    case MotionEvent.ACTION_UP:      Toast.makeText(MainActivity.this, "dispatch UP",           Toast.LENGTH_SHORT).show();      break;    }        return super.dispatchTouchEvent(ev);  }

actualListView.setOnTouchListener(new OnTouchListener() {            @Override      public boolean onTouch(View v, MotionEvent event) {        switch (event.getAction()) {        case MotionEvent.ACTION_DOWN:          Toast.makeText(MainActivity.this, "DOWN",               Toast.LENGTH_SHORT).show();          break;        case MotionEvent.ACTION_UP:          Toast.makeText(MainActivity.this, "UP",               Toast.LENGTH_SHORT).show();          break;        }        return true;   //返回true之后 
      }
});
actualListView.setOnItemClickListener(new OnItemClickListener() {

       @Override
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
           Toast.makeText(MainActivity.this, "setOnClickListener", Toast.LENGTH_SHORT).show();
       }
});
 

先走dispatchTouchEvent的ACTION_DOWN------------>OnTouch的ACTION_DOWN------------->dispatchTouchEvent的ACTION_UP

----------------->OnTouch的ACTION_UP

 

 

 

 

 

 

例子五:只有OnTouch和OnItemClick和dispatchTouchEvent

  @Override  public boolean dispatchTouchEvent(MotionEvent ev) {    switch (ev.getAction()) {    case MotionEvent.ACTION_DOWN:      Toast.makeText(MainActivity.this, "dispatch DOWN",           Toast.LENGTH_SHORT).show();      return true;  //这儿无论是true还是false,都会导致OnTouch和OnItemClick不走,因为没有下面的super来分发事件    case MotionEvent.ACTION_UP:      Toast.makeText(MainActivity.this, "dispatch UP",           Toast.LENGTH_SHORT).show();      return true;  //这儿无论是true还是false,都会导致OnTouch和OnItemClick不走,因为没有下面的super来分发事件
    } 
    return super.dispatchTouchEvent(ev);
}

actualListView.setOnTouchListener(new OnTouchListener() {            @Override      public boolean onTouch(View v, MotionEvent event) {        switch (event.getAction()) {        case MotionEvent.ACTION_DOWN:          Toast.makeText(MainActivity.this, "DOWN",               Toast.LENGTH_SHORT).show();          break;        case MotionEvent.ACTION_UP:          Toast.makeText(MainActivity.this, "UP",               Toast.LENGTH_SHORT).show();          break;        }        return false;  //返回false之后      } });
actualListView.setOnItemClickListener(new OnItemClickListener() {       @Override       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {         Toast.makeText(MainActivity.this, "setOnClickListener", Toast.LENGTH_SHORT).show();       } });
 

先走dispatchTouchEvent的ACTION_DOWN---------------------->dispatchTouchEvent的ACTION_UP




原标题:Android Touch事件传递机制

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

德国包装法的要求:https://www.goluckyvip.com/tag/59619.html
让未来:https://www.goluckyvip.com/tag/5962.html
德国包装法标签:https://www.goluckyvip.com/tag/59620.html
德国站包装法:https://www.goluckyvip.com/tag/59621.html
德国包装法的标志:https://www.goluckyvip.com/tag/59622.html
德国包装法网站:https://www.goluckyvip.com/tag/59623.html
Temu引发家庭矛盾?年轻一代为何对低价商品集体摇头:https://www.xlkjsw.com/news/94308.html
如何通过 9 个步骤建立商业信用:https://www.kjdsnews.com/a/1842262.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流