这是我的java代码我是如何实现的。
new Thread(new Runnable() {
public void run() {
int count=0;
while (true) {
if(count>5)
count=0;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println(""+e);
}
ImageView image = (ImageView) findViewById(R.id.slider);
image.setImageResource(pics[count]);
count++;
}
}
}).start();
我创建了一个单独的Thread
来动态更改图片
答案 0 :(得分:2)
那是因为你试图从不同于UI线程的线程设置图片。并且您只能从UI线程更改UI。
final ImageView image = (ImageView) findViewById(R.id.slider);
image.post(new Runnable() {
@Override
public void run() {
image.setImageResource(pics[count]);
});
这会将您的更改发布到UI线程的队列中。
答案 1 :(得分:1)
您可以使用处理程序的postDelayed
方法
public class MyRunnable implements Runnable {
private ImageView imageView;
private boolean exit = false;
public MyRunnable(ImageView n) {
imageView = n;
}
private void setExit() {
exit = true;
}
@Override
public void run() {
if (exit) {
imageView.removeCallbacks(null);
imageView = null;
return;
}
imageView.setImageResource(pics[count++%5]);
imageView.postDelayed(this, 1000);
}
}
宣布成员:
MyRunnable mRunnable = null;
onResume
ImageView image = (ImageView) findViewById(R.id.slider);
image.postDelayed(mRunnable = new MyRunnable(image), 1000);
和onPause电话
mRunnable.setExit();
答案 2 :(得分:0)
或者您可以将图像放入Drawable中,然后使用
ImageView.setImageResource(int resId)
没有尝试但应该可以正常工作