我试图在1秒后更改图像以进行图像查看。但它不会在屏幕上显示任何图像。以下是code.please help.thank you。
代码 -
public class Shapes extends Activity {
Timer timer = new Timer();
int flag;
String images[]={};
ImageView iv;
static int v[]={R.drawable.round,R.drawable.rectangle};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.shapes);
iv=(ImageView) findViewById(R.id.imageView1);
timer.schedule(new TimerTask() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
if (flag > 1) {
timer.cancel();
timer = null;
} else
iv.setImageResource(v[flag++]);
}
});
}
}, System.currentTimeMillis(), 1000);
}
}
如何检查资源图像并进行更改
答案 0 :(得分:2)
使用Handler代替Timer
Handler handler = new Handler();
Runnable changeImage = new Runnable(){
@Override
public void run(){
if(flag>1)
handler.removeCallbacks(changeImage);
else{
iv.setImageResource(v[flag++]);
handler.postDelayed(changeImage, 1000);
}
}
};
从oncreate()开始第一次
public void onCreate(Bundle b){
handler.postDelayed(changeImage, 1000);
}
答案 1 :(得分:1)
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
flag++;
if (flag > 1) {
timer.cancel();
timer = null;
}
else
iv.setImageResource(v[flag]);
}
});
}
}, 1000, 1000); // wait 1 second before start.. then repeat every second..
答案 2 :(得分:0)
这是因为你把System.currentTimeMillis()作为延迟。 尝试将其替换为0,因为时间应该在0 ms后开始。