触摸监听器不工作android

Posted

技术标签:

【中文标题】触摸监听器不工作android【英文标题】:Touch listener not working 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;
        
    );


【问题讨论】:

【参考方案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; 并检查

【讨论】:

以上是关于触摸监听器不工作android的主要内容,如果未能解决你的问题,请参考以下文章

Android:WebView 触摸事件监听器

Android基础——物理按键,长按,触摸事件及其监听器

Javascript触摸android webview中的事件

更新到 Lollipop 后,Spen 触摸监听器无法正常工作

Android R PointerEventDispatcher 触摸事件监听帮助类

Android R PointerEventDispatcher 触摸事件监听帮助类