当前位置: 代码迷 >> Android >> ImageView的多图片切换的有关问题
  详细解决方案

ImageView的多图片切换的有关问题

热度:77   发布时间:2016-04-28 03:52:25.0
ImageView的多图片切换的问题
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);希望能帮到你。
  相关解决方案