在Android活动中设置全屏亮度

时间:2014-05-06 11:06:22

标签: android android-activity screen screen-brightness window-managers

我正在使用此方法将屏幕设置为全亮度。

@SuppressLint("NewApi") 
private void setFullBright() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
        WindowManager.LayoutParams windowParams = getWindow().getAttributes();
        windowParams.screenBrightness = 1.0f;
        getWindow().setAttributes(windowParams);        
    }
}

如果我希望在活动屏幕的整个生命周期内设置全亮度,那么onCreate方法是调用它的最佳位置吗?

是否有可以实现此目的的XML标志?像 android:keepScreenOn =“true”之类的东西反映了在代码中添加 WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 的功能?

3 个答案:

答案 0 :(得分:12)

将这些行放在用于查看页面的所有java文件的oncreate方法中,

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = 1.0f;
getWindow().setAttributes(params);

这将解决您的问题,快乐编码...

答案 1 :(得分:2)

对于那些试图在DialogFragment中实现同样目标的人。由于getActivity().getWindow()的窗口与Activity正在运行的窗口不同,所以将params应用于Dialog会有所帮助。所以你必须使用窗口对话框 - 请参阅以下代码段:

getDialog().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
WindowManager.LayoutParams params = getDialog().getWindow().getAttributes();
params.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL;
getDialog().getWindow().setAttributes(params);

回答原来的问题: 没有办法通过XML设置它。

答案 2 :(得分:0)

Kotlin 版本使用常量而不是浮点数:(不适用于对话框)

private fun setScreenBright() {
    with(window){
        addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
        attributes = attributes.also { 
            it.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_FULL
        }
    }
}