干净的方式来实现Android的亮度逐渐褪色?

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

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); 

我为计数器使用数组的原因是因为它需要在Runnable被访问,但是我需要修改该值。 这使用较less的CPU,但仍然比我更喜欢。

编辑2:Aaaand第三次尝试。 感谢CommonsWare的build议! (我希望我正确应用它!)

  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); } } }); 

谢谢!

Solutions Collecting From Web of "干净的方式来实现Android的亮度逐渐褪色?"