Lyu*_*tko 3 java hardware android
我正在尝试解决以下任务:将亮度从100%平滑变为0%,但无法获得平滑效果.要强调我正在使用以下亮度变化方法.推荐的一个.
WindowManager.LayoutParams lp = window.getAttributes();
lp.screenBrightness = floatPercent;
window.setAttributes(lp);
Run Code Online (Sandbox Code Playgroud)
嗯,它显然有效,但不顺利.我将描述逻辑:
我有一个改变亮度的线程:
while (isRunning()) {
Thread.sleep(sleepTime);
spentTime+=sleepTime;
view.post(new Runnable() {
public void run() {
changeBrightness();
}
});
}
Run Code Online (Sandbox Code Playgroud)
我有亮度变化的持续时间,例如10秒.我计算下一个值floatPercent(参见上面的代码片段)的方式,sleepTime应始终小于50ms.所以看起来必须顺利.但我总是得不顺利过渡.它特别涉及0% - 5%亮度的范围.在此亮度范围内完全失去平滑度.
我已经在谷歌Android开发者小组上发布了这个问题,但无论如何可能有人已经在这个领域进行了调查.
Com*_*are 14
从您的代码片段中,您可能会Thread.sleep()在UI线程上使用它.
请好,请好请,请好请,请好请,请好,请好请好请求请好请好请请请Thread.sleep()在UI线程请不要请请.
由于您正在使用post(),只需切换到postDelayed(),在执行Runnable之前将时间传递给它.
事实上,Thread.sleep()可能是您遇到的问题的原因,因为Thread.sleep()在UI上说"嘿,Android!请冻结UI一段时间!",所以在您将控制权返回到Android之前,您的亮度变化可能不会发生(例如,从任何回调触发你的代码返回).
此外,Hackborn女士在Google Groups上告诉你的内容绝对正确:这取决于硬件.并非所有硬件都能提供您所寻求的平滑度.这可能是你的0-5%的问题 - 硬件只会达到5%的亮度,然后跳转到关闭背光或其他东西.
| 归档时间: |
|
| 查看次数: |
8157 次 |
| 最近记录: |