【问题标题】:How to check if the screen hasn't been clicked in Android?如何在Android中检查屏幕是否未被点击?
【发布时间】:2015-04-23 23:48:01
【问题描述】:

我知道如果你想检查是否有人点击了某个东西,你会这样做

if(event.getAction() == MotionEvent.ACTION_DOWN)

但我想检查屏幕是否根本没有被点击。 为了做到这一点,我会生成什么代码?

另外,附带说明一下,让 Android 应用程序中的所有类都扩展 View 类是个好主意吗?

【问题讨论】:

  • 我希望我能对两个答案都投反对票,因为他们没有回答问题

标签: java android touch-event


【解决方案1】:

创建一个名为istouchedboolean 变量并在最上面使用onTouchLisener View 实际上它是一个Window,这就是你的Views 所在的位置,快速示例

getWindow().getDecorView().setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View arg0, MotionEvent event) {
            if(event.getAction() == MotionEvent.ACTION_UP){
                // i have been touched
                istouched = true;
                Toast.makeText(getBaseContext(), "you touched me?!! - i will tell my mom", Toast.LENGTH_SHORT).show();
                return true;
            }
            if(event.getAction() == MotionEvent.ACTION_DOWN){
                // you can implement this
                Toast.makeText(getBaseContext(), "shhh; i am touching", Toast.LENGTH_SHORT).show();
                return true;
            }
            return false;
        }
    });

所以这里的逻辑是如果istouchedfalse 你的设备没有告诉她妈妈,这意味着它没有被触摸..

希望对你有帮助

【讨论】:

  • boolean istouched 里面有什么?
  • 大声笑,好吧,我希望你会,(:..先生,istouched 布尔值是我告诉你在描述中创建的,你的Activity 类中的实例变量也是如此,默认情况下它的错误..顺便说一句,也可以赞赏一点点赞(:@PaulTrueman
  • 这就是它应该包含的所有内容?它只是返回 false?
  • 是的,根据逻辑istouched布尔值会让你知道屏幕是否被触摸,如果不是false,一旦触摸它就会return truereturn falsetouchListener 的结尾是自 ACTION_DOWN returns true 以来无法到达的地方之一希望你知道,你现在好了@PaulTrueman
  • 啊好的。抱歉刚刚在这个应用程序上工作了一段时间。我的大脑很慌张
【解决方案2】:

一种方法是将android:onClick="method" 添加到布局xml 的根布局中。

在该方法中,您可以将 boolean 变量更改为 true (screenClicked = true)。

【讨论】:

  • 你也可以只创建一个 onClickListener.. 但我更喜欢第一种方式
猜你喜欢
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-30
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多