进行点击活动

时间:2011-07-08 17:29:17

标签: android android-activity window

我正在尝试以编程方式调整手机的亮度。我的应用程序中有一个半透明的活动,但用户无法点击它到它下面的活动/窗口。一旦设置了亮度,我就会终止此活动,但是我想在此活动中做更多的工作(例如逐渐调整亮度),这需要一些时间,而且我不希望用户点击他们的手机,想知道为什么他们的行动没有注册。

所以基本上,我需要创建一个模拟窗口,它将成功地允许我调整屏幕亮度而不显示,或者找出如何进行活动点击。我不知道该怎么做。

BTW,这是在Activity中进行亮度调整的代码:

android.provider.Settings.System.putInt(getContentResolver(),
            android.provider.Settings.System.SCREEN_BRIGHTNESS, Math.round(SOME_BRIGHTNESS * 255f));

Window window = getWindow(); 
window.getAttributes().screenBrightness = SOME_BRIGHTNESS;
window.setAttributes(window.getAttributes());

float sysBrightPer = getSystemBrightness(getApplicationContext());   

new Thread() {
    public void run() {
         try {
             sleep(BRIGHT_TIMEOUT);
         } catch (InterruptedException e) {
             e.printStackTrace();
         }
         finish();
    }
}.start();  

有什么建议吗?

P.S。我在市场上发现了这款应用。我想知道这种方式是否会对我有所帮助? https://market.android.com/details?id=com.haxor

3 个答案:

答案 0 :(得分:6)

哈!该应用程序确实对我有所帮助,只是因为它让我找到了这个解决方案! Brightness Screen Filter

对于懒惰点击,请使用:

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);  

答案 1 :(得分:0)

我担心这不再适用于4.0+,如果应用于窗口本身(可能是为了防止使用像透明叠加层中的onkey这样的活动类方法)。但是,仍然可以使用windowmanager.addview或layoutinflater.inflate来添加扩展视图组的自定义视图类,如果在添加或膨胀此视图时使用layoutparams.FLAG_NOT_TOUCHABLE,它将是单击,并且即使在调用它的活动进入暂停状态。

答案 2 :(得分:0)

getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

如果要拦截特定视图的触摸,可以使用窗口管理器添加带有不同标志的视图: 例如

WindowManager.LayoutParams params = new WindowManager.LayoutParams(...);
getWindowManager().addView(myButton,params);