java - 安卓。亮度变化

标签 java android hardware

我正在尝试解决以下任务:亮度的平滑变化 从 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 的下一个值(参见上面的代码 fragment ) 这样,sleepTime 应该始终小于 50 毫秒。 所以看起来它必须是光滑的。 但是我的过渡总是不太顺利。它特别涉及范围 0% - 5% 的亮度。平滑度在这上面完全消失了 亮度范围。

我已经在 Google Android Developer group 上发布了这个问题,但无论如何可能有人已经在这方面进行了调查。

最佳答案

从您的代码 fragment 来看,您似乎在 UI 线程上使用了 Thread.sleep()

请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请请不要使用 Thread.sleep()在 UI 线程中。

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

事实上,Thread.sleep() 可能是您遇到问题的原因,因为 UI 上的 Thread.sleep() 显示“嘿,Android!请暂时卡住 UI!”,因此在您返回控制权之前,您的亮度变化可能不会发生到 Android(例如,从触发代码的任何回调返回)。

此外,Hackborn 女士在 Google Groups 上告诉您的完全正确:这取决于硬件。并非所有硬件都能提供您所寻求的流畅度。这可能是您的 0-5% 问题 - 硬件只会达到,比如说,5% 的亮度,然后跳转到关闭背光,或者其他什么。

关于java - 安卓。亮度变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1136880/

相关文章:

android - 单击编辑文本时如何向上滚动布局

android - 使用六边形图像随机生成图案

hardware - 过多的静电积聚

hardware - 程序员的电路设计书籍

c# - SigPlus.Net 连接的平板电脑

java - JMS 有队列查看的概念吗?

java - 在静态主方法中的 While 内尝试/捕获

java - IntelliJ maven 项目生成的源未获取(仅部分)

java - 使用 Java 打印菱形

android - 无法水平滑动屏幕