UI有一个Button按钮和一个ImageView控件,当点击按钮的时候,ImageView控件会循环显示各种图片。
但是为什么在整个循环过程中,只显示第一张和最后一张图片呢?中间的图片变化,为什么在UI上面没有
看到呢?刚开始我以为太快,加了线程让它等待,也没有看到图片变化,请大家帮帮忙,谢谢各位~~~
关键循环代码如下:
class btnClick implements OnClickListener{
public void onClick(View v){
int rc=1;
while(true){
if (rc == 1) imageview1.setImageResource(R.drawable.one);
if (rc == 2) imageview1.setImageResource(R.drawable.two);
if (rc == 3) imageview1.setImageResource(R.drawable.three);
if (rc == 4) imageview1.setImageResource(R.drawable.four);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
rc++;
if(rc==5){
break;
}
}
}
}
是不是不能这样写,必须用Handler来处理?感觉图片变化过程中,VIEW没有重绘,只是直接用最后一张
图片来替换,没看到变化的过程。
想请教大家,有什么别的方法,可以看到图片变化的过程呢?谢谢了。。。
------解决思路----------------------
最好不要在ui线程暂停。你可以在普通线程里做,不过要用到handler
------解决思路----------------------
用timer定时器+handler控制器可以实现。我做过一个骑马的动画,就是1个ImageView不停的切换图片。
------解决思路----------------------
Handler myHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch(msg.what){case LOADING:
if(loading_index<=100){
loading_index=loading_index+5;
jinduTextView.setText("正在缓冲:"+loading_index+"%");
sendEmptyMessage(LOADING);
}else{
loading_index=0;
vv.start();
loadingView.setVisibility(View.GONE);
}
break;
}
super.handleMessage(msg);
}
};
不用定时器也可以只用handler,大体就是这样的意思,在handler里更新ui,在onclick方法里发送消息myHandler.sendEmptyMessage(LOADING);希望能帮到你。