android java显示_如何在Android / Java中循环显示背景颜色?

在Android中,通过主线程设置视图颜色并睡眠可能导致UI无法更新。正确的做法是在子线程中执行颜色变化,并使用`runOnUiThread`在主线程中更新UI。博客内容提到的问题在于在主线程中调用`sleep()`阻塞了UI更新。最佳解决方案是创建新线程并在其中交替使用`runOnUiThread`来改变颜色并控制延迟。
摘要由CSDN通过智能技术生成

我有一个十六进制颜色列表,每个颜色的持续时间以毫秒为单位.我希望在每个颜色的持续时间内填充屏幕,然后转到下一个颜色.

我试图迭代颜色来执行以下操作:

myView.setBackgroundColor(Color.parseColor( theColor ));

SystemClock.sleep( theDuration );

myView.setBackgroundColor(Color.parseColor( nextColor ));

SystemClock.sleep( nextDuration );

etc...

这对我来说似乎很明显,但是当它运行时它对视图没有任何作用,至少在我的AVD中.我知道这是因为Android只在预定义的时间绘制. (我也尝试过调用“Invalidate()”而没有运气.)

连续显示所有颜色的最佳方法是什么?

(我意识到我也不应该叫sleep(),所以对此的任何建议也会受到赞赏.)

谢谢.

最佳答案

new Thread() {

@Override

public void run() {

YourActivity.this.runOnUiThread(new Runnable() {

@Override

public void run() {

myView.setBackgroundColor(Color.parseColor( theColor ));

}

Thread.sleep( theDuration);

YourActivity.this.runOnUiThread(new Runnable() {

@Override

public void run() {

myView.setBackgroundColor(Color.parseColor( nextColor ));

}

Thread.sleep( nextDuration );

}

}.start();

把它放在一个方法中并调用它.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值