2012-06-18 32 views
11

Tôi đang thực hiện một tuỳ chỉnh ImageView. Một trong những phương pháp là tải một hình ảnh từ một URL. Và tôi muốn lấy Bitmap trong một Thread và tải bitmap trong luồng UI.runOnUiThread bên trong Chế độ xem

Tôi làm cách nào để thực hiện cuộc gọi runOnUIThread() để vẽ bitmap?

Có loại chức năng tích hợp nào không? Hoặc tôi có nên tạo một Handler trong hàm tạo và sử dụng nó để chạy runnables trong chuỗi giao diện người dùng không?

+2

đi kèm với Trình xử lý. runOnUIThread là một phương thức Hoạt động nếu tôi không nhầm lẫn – Rich

Trả lời

37

Tải hình ảnh qua AsyncTask và thiết lập để xem bạn trong phương pháp onPostExecute

HOẶC

Từ a thread hình ảnh tải riêng biệt sử dụng bài phương pháp View mà sẽ luôn luôn chạy Runnable của nó trên UI-thread:

yourImageView.post(new Runnable() { 
    @Override 
    public void run() { 
     // set the downloaded image here 

    } 
}); 
+0

thêm thông tin tại đây: http://stackoverflow.com/q/10558208 – cyrilchampier

2

Tạo một lớp mở rộng từ AsyncTask. Chuyển ImageView trong hàm tạo. Trong phương thức doInBackground, tải xuống hình ảnh. Trong phương thức postExecute, đặt hình ảnh thành ImageView.

4

Bạn có thể làm một cái gì đó như thế này:

new Thread(new Runnable() { 
    public void run() { 
    final Bitmap bm = getBitmapFromURL(myStation.getStation().imageURL); 
    ((Activity) context).runOnUiThread(new Runnable() { 
     public void run() { 
     icon.setImageBitmap(bm); 
     } 
    }); 
    } 
}).start(); 

này sẽ làm việc bên ngoài của một hoạt động, như trong một ListAdapter.

Các vấn đề liên quan