【问题标题】:Touch listener not working android触摸监听器不工作android
【发布时间】:2011-05-26 05:05:20
【问题描述】:

我的 android 应用程序中的触摸侦听器有问题。 OnTouchLIstenr 不适用于视图,即 ACTION_DOWN 在侦听器中表现良好,但 ACTION_UP 没有调用。我不知道发生了什么问题。但是,如果我设置了虚拟点击侦听器,两者都可以正常工作。为什么会这样?

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ImageView image = (ImageView) findViewById(R.id.image);
    image.setOnTouchListener(new OnTouchListener() {            
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            ImageView img = (ImageView) v;
            int action = event.getAction();
            if (action == MotionEvent.ACTION_DOWN){
                img.setImageResource(R.drawable.port);
            }else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL){
                img.setImageResource(R.drawable.bar);
            }               
            return false;
        }
    });

}

【问题讨论】:

    标签: android


    【解决方案1】:

    您可能会考虑返回“true”,因为您正在处理触摸事件。

    Link to a similar question. Answer from adamp, makes sense

    【讨论】:

    • 因为您返回 false 意味着您对系统说“没有发生触摸”
    • 在 ACTION_DOWN 事件中,监听器被调用,但他返回一个'false',这意味着监听器在说:“我不想在 ACTION_UP 之前处理任何进一步的触摸事件。我有添加了一个链接,其中对此进行了解释。
    • @Hellboy 这不是假的! false 表示我不想处理这些事件,堆栈下方的其他一些侦听器(如果有多个视图一个接一个)可以处理。
    • 感谢您的良好回复。这在应用程序中运行良好。
    【解决方案2】:
    image.setOnTouchListener(new OnTouchListener() {            
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                ImageView img = (ImageView) v;
                int action = event.getAction();
                if (action == MotionEvent.ACTION_DOWN){
                    img.setImageResource(R.drawable.port);
                }else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL){
                    img.setImageResource(R.drawable.bar);
                }               
    
    
           return true;
            }
        });
    

    只需替换 return true; 而不是 return false; 并检查

    【讨论】:

      猜你喜欢
      • 2017-05-18
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多