【问题标题】:Java- disable UIJava-禁用用户界面
【发布时间】:2015-05-19 08:57:58
【问题描述】:

我想在靠近用户脸部时关闭屏幕并禁用 UI。我已经完成了第一部分。但我在第二部分有问题。我必须知道如何获取当前视图并使用 my_view.setClickable(false); ,但是我使用 Qt 和一些附加到 Qt 的 java 文件开发此应用程序
我已经尝试过,但它是不工作,我有一个错误: 不能从静态上下文引用非静态方法 getCurrentFocus()

   @Override
    public void onSensorChanged(SensorEvent event)
    {
         WindowManager.LayoutParams params = this.getWindow().getAttributes();
         if(event.sensor.getType()==Sensor.TYPE_PROXIMITY)
         {

          if(event.values[0]==0)
             {

                 CustomMainActivity.getCurrentFocus().setClickable(false);
                 params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
                 params.screenBrightness = 0;
                 getWindow().setAttributes(params);
             }
             else
             {
                 params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
                 params.screenBrightness = -1f;
                 getWindow().setAttributes(params);
             }
        }
    }

【问题讨论】:

    标签: java android qt


    【解决方案1】:

    你应该改一下

    CustomMainActivity.getCurrentFocus()
    // Calling the method on the class
    

    到这里

    CustomMainActivity.this.getCurrentFocus()
    // Calling the method on an instance of the class
    

    This answer 解释了一个类和它的实例之间的区别,如果你想了解更多细节;)

    【讨论】:

      【解决方案2】:

      onSensorChanged 更改为:

          public void onSensorChanged(SensorEvent event)
          {
              WindowManager.LayoutParams params = this.getWindow().getAttributes();
           if(event.sensor.getType()==Sensor.TYPE_PROXIMITY)
           {
      
               if(event.values[0]==0)
               {
      
                 params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
                 params.screenBrightness = 0;
                 getWindow().setAttributes(params);
                 getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
                 WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
      
               }
               else
               {
                 params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
                 params.screenBrightness = -1f;
                 getWindow().setAttributes(params);
                 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
      
               }
           }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-11
        • 1970-01-01
        • 1970-01-01
        • 2018-10-05
        • 2010-10-24
        • 1970-01-01
        • 1970-01-01
        • 2010-11-19
        相关资源
        最近更新 更多