new Thread() { public voID run() { for (int i = initial; i < target; i++) { final int bright = i; handle.post(new Runnable() { public voID run() { @R_404_5987@ 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 @R_404_5987@ currentBright = counter[0] / 100f; handle.post(new Runnable() { public voID run() { window.getAttributes().screenBrightness = currentBright; window.setAttributes(window.getAttributes()); if (++counter[0] <= target) { cancel(); } } }); }},step);
我为计数器使用数组的原因是因为它需要在Runnable中被访问,但是我需要修改该值.这使用较少的cpu,但仍然超过我喜欢.
EDIT2:Aaa和第三次尝试.感谢CommonsWare的建议! (我希望我正确地应用它!)
handle.post(new Runnable() { public voID run() { if (counter[0] < target) { final @R_404_5987@ 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中实现亮度逐渐衰减的清洁方式?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)