java–Android.亮度变化

java–Android.亮度变化,第1张

概述我正在尝试解决以下任务:平滑改变亮度从100%到0%,但不能获得平滑的效果.要强调我正在使用以下亮度方法更改.推荐的一个.WindowManager.LayoutParamslp=window.getAttributes();lp.screenBrightness=floatPercent;window.setAttributes(lp);嗯,它显然有效,但不顺利.我将

我正在尝试解决以下任务:平滑改变亮度
从100%到0%,但不能获得平滑的效果.
要强调我正在使用以下亮度方法
更改.推荐的一个.

WindowManager.LayoutParams lp = window.getAttributes();lp.screenBrightness = floatPercent;window.setAttributes(lp);

嗯,它显然有效,但不顺利.
我将描述逻辑:

我有一个改变亮度的线程:

            while (isRunning()) {                 Thread.sleep(sleepTime);                 spentTime+=sleepTime;                 vIEw.post(new Runnable() {                     public voID run() {                         changeBrightness();                     }                 });             } 

我有亮度变化的持续时间,例如10秒.
我计算floatPercent的下一个值(参见上面的代码片段)
方式,sleepTime应始终小于50ms.
所以看起来必须顺利.
但我总是得不顺利过渡.它特别涉及范围
0% – 亮度的5%.在此完全失去平滑度
亮度范围.

我已经在谷歌AndroID开发者小组上发布了这个问题,但无论如何可能有人已经在这个领域进行了调查.

解决方法:

从您的代码片段中,您可能会在UI线程上使用Thread.sleep().

请好,请好请,请好请,请好,请好请好请好请好请好请求好请求请请请请不要使用Thread.sleep(请)在UI线程中.

由于您使用的是post(),只需切换到postDelayed(),在执行Runnable之前将时间传递给它.

事实上,Thread.sleep()可能是您遇到的问题的原因,因为UI上的Thread.sleep()说“嘿,AndroID!请暂停UI一段时间!”,因此您的亮度变化可能不会直到您将控制权返回给AndroID(例如,从触发您的代码的任何回调返回).

此外,Hackborn女士在Google Groups上告诉你的内容绝对正确:这取决于硬件.并非所有硬件都能提供您所寻求的平滑度.这可能是你的0-5%的问题 – 硬件只会达到5%的亮度,然后跳转到关闭背光或其他东西.

总结

以上是内存溢出为你收集整理的java – Android.亮度变化全部内容,希望文章能够帮你解决java – Android.亮度变化所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1120161.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存