杨_飞
2013-08-07 18:32
采纳率: 0%
浏览 534
已采纳

Android ImageView循环显示,但是就显示最后一张

getAllImageName()方法是获得SD卡上的所有图片 30张,然后for循环中String filePath=AsyncImageLoader.path+"/"+list.get(i); 是获得图片的具体路径,想在点击Btn_play_ClickEvent按钮事件,在ImageView中循环显示这些图片,截图的方法只是显示最后一张,求解怎么实现循环显示!!!!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • clxy大叔 2013-08-07 22:28
    已采纳

    需要异步加载图片,不然它会在完全循环结束后才更新UI,也就是永远是最后一张。

    你应该使用AsyncTask

    [list]
    [*]在doInBackground里面加载。
    [*]在onPostExecute里设置图片。
    [/list]

    http://developer.android.com/reference/android/os/AsyncTask.html

    点赞 评论
  • clxy大叔 2013-08-08 17:03

    上面的代码copy了你的,还没改好。请无视。

    [code="java"]
    class Btn_play_ClickEvent implements OnClickListener {
    @Override
    public void onClick(View arg0) {
    try {
    new ExecuteChangeImg().execute(null, null, null);
    Thread.sleep(1000);
    } catch (InterruptedException e) {
    HLog.writeLog(HLog.ERROR, e.getMessage());
    }
    }
    }

    class ExecuteChangeImg extends AsyncTask {
    @Override
    protected String doInBackground(String... filePaths) {
    List list = WeatherDao.getAllImageName();
    for (int i = 0; i < list.size(); i++) {
    String filePath = AsyncImageLoader.path + "/" + list.get(i);
    File file = new File(filePath);
    if (!file.exists()) {
    filePath = AsyncImageLoader.DefaultImg;
    }
    Bitmap bmp = BitmapFactory.decodeFile(filePath);
    publishProgress(bmp);
    }
    return "全部结束!";
    }

    protected void onProgressUpdate(Bitmap... bitmap) {
        imageView.setImageBitmap(bitmap[0]);
    }
    

    }
    [/code]

    点赞 评论

相关推荐 更多相似问题