从小部件刷新显示?

时间:2011-01-10 02:52:43

标签: android

我正在尝试从小部件设置屏幕亮度。我们知道这很容易实现,因为大量的小部件已经这样做了,但是如何.....

在我从小部件调用的服务中,我这样设置亮度:

Settings.System.putInt(this.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 200);

除非“刷新”屏幕以应用新设置,否则效果很好。关闭和打开屏幕会刷新显示设置,因此我们知道代码可以正常工作。

我还在几个网站上看到这样的内容会刷新屏幕,但我们不能使用它,因为我们在一个小部件中。小部件活动和服务不能使用getWindow。

WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 100 / 100.0f;
getWindow().setAttributes(lp);

所有这些小工具还有其他功能,例如Beautiful Widgets,Power control,Extended controls等,这样做了吗?

更新: 另一张海报建议开始一个空活动并执行WindowManager刷新。这样可行,但它会在一秒钟内出现一个丑陋的黑屏。由于其他小部件不这样做,必须有一种方法可以防止丑陋的黑屏显示。

2 个答案:

答案 0 :(得分:8)

对于黑屏,在活动上设置主题,包含:

<style name="Theme.Transparent" parent="android:Theme"> 
<item name="android:windowIsTranslucent">true</item> 
<item name="android:windowBackground">@color/transparent</item> 
<item name="android:windowContentOverlay">@null</item> 
<item name="android:windowNoTitle">true</item> 
<item name="android:windowIsFloating">true</item> 
<item name="android:backgroundDimEnabled">false</item> 
</style>

谢谢塞巴斯蒂安的回答,我已将其复制到此处。

答案 1 :(得分:0)

来自Changing the Screen Brightness System Setting Android

的无耻复制和粘贴
android:theme="@android:style/Theme.Translucent.NoTitleBar"

做到这一切。