gpt4 book ai didi

android - 在 Android 中实现亮度逐渐衰减的干净方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:52 33 4
gpt4 key购买 nike

目前我有淡化亮度调整的代码,看起来像这样:

new Thread() {
public void run() {
for (int i = initial; i < target; i++) {
final int bright = i;
handle.post(new Runnable() {
public void run() {
float currentBright = bright / 100f;
window.getAttributes().screenBrightness = currentBright;
window.setAttributes(window.getAttributes());
});
}
try {
sleep(step);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();

我不确定这是否被认为是好的方法(我考虑过使用 ASyncTask,但我看不到在这种情况下的好处)。有没有更好的方法来实现背光衰减?

编辑:我现在按如下方式使用 TimerTask:

new Timer().schedule(new TimerTask() {
@Override
public void run() {
final float currentBright = counter[0] / 100f;
handle.post(new Runnable() {
public void run() {
window.getAttributes().screenBrightness = currentBright;
window.setAttributes(window.getAttributes());
if (++counter[0] <= target) {
cancel();
}
}
});
}
}, 0, step);

我使用数组作为计数器的原因是因为它需要是final才能在Runnable中访问,但我需要修改值。这使用更少的 CPU,但仍然比我喜欢的多。

EDIT2:Aaa 和第三次尝试。感谢 CommonsWare 的建议! (我希望我应用正确!)

    handle.post(new Runnable() {
public void run() {
if (counter[0] < target) {
final float currentBright = counter[0] / 100f;
window.getAttributes().screenBrightness = currentBright;
window.setAttributes(window.getAttributes());
counter[0]++;
handle.postDelayed(this, step);
}
}
});

谢谢!

最佳答案

如何在每次迭代中将亮度降低一半。

然后循环将在 O(log n) 内完成,而不是当前解决方案中的 O(n)。

关于android - 在 Android 中实现亮度逐渐衰减的干净方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7175233/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com