这是我的代码。
for(int k=1 ; k<=1000; k++)
{
if((k%2)==0)
i.setImageResource(R.drawable.barbie2);
else
i.setImageResource(R.drawable.barbie3);
try {
Thread.sleep(1000);
} catch(InterruptedException e) {
}
}
我希望每1秒交换两个图像而不锁定UI。 我怎么能在android中帮助我。
答案 0 :(得分:4)
通过这种方式在单独的线程中完成:
new Thread(new Runnable() {
@Override
public void run() {
for(int k=1 ; k<=1000; k++)
{
if((k%2)==0)
i.post(new Runnable() {
@Override
public void run() {
i.setImageResource(R.drawable.barbie2);
}
});
else
i.post(new Runnable() {
@Override
public void run() {
i.setImageResource(R.drawable.barbie3);
}
});
try {
Thread.sleep(1000);
} catch(InterruptedException e) {
}
}
}
}).start();
如果可能,请将您的图片i
定义为final
答案 1 :(得分:2)
遵循其javadoc的建议:
http://developer.android.com/reference/android/widget/ImageView.html#setImageResource(int)
这会在UI线程上执行 位图读取和解码,这会导致延迟打嗝 。如果这是一个问题,请考虑改为使用setImageDrawable(android.graphics.drawable.Drawable)
或setImageBitmap(android.graphics.Bitmap)
和BitmapFactory
。
答案 2 :(得分:1)
使用Handlers。