2012-02-15 27 views
9

Tôi đang sử dụng một API trong ứng dụng Android của tôi mà tải hình ảnh từ web và cho thấy một hình ảnh động giữ chỗ trong khi những hình ảnh được tải (RemoteImageView, một phần của gói Ignition hereAndroid -. Drawable nguồn tham khảo như một URL

tại một số điểm trong ứng dụng, tôi cần phải hiển thị hình ảnh từ drawables tài nguyên địa phương và không được tải về từ trang web.

có thể để truy cập drawables tài nguyên địa phương sử dụng một URL?

Trả lời

3

nguồn hình ảnh địa phương làm không có url, họ có URI. Vì vậy, nếu bạn có hình ảnh có thể vẽ, bạn có thể phân tích cú pháp t hem từ id tài nguyên sang URI.

Uri uri=Uri.parse("R.drawable.image"); 

Tuy nhiên, nếu bạn cũng có thể đặt hình ảnh vào thư mục nội dung của gói và truy cập chúng bằng URL của chúng. URL của tệp hình ảnh sẽ là "tệp: ///android_asset/image.png" Bạn có thể sử dụng một trong hai tùy chọn.

+0

Uri.parse đang nói rằng R.drawable.image phải là một Chuỗi. Điều đó không thể đúng ?? –

+0

Woops, quên thêm dấu ngoặc kép. Đã sửa ngay. – noob

+0

Không ... không hoạt động. Tôi nghĩ rằng API đang tạo kết nối thông qua URLConnection và tôi phải chuyển nó qua một biểu diễn String của URL. Uri.parse(). ToString() chỉ trả lại chuỗi gốc ... và không tìm thấy nó với tệp: /// android_asset/.. đường dẫn hoặc –

10

Cách làm:

sử dụng dòng này "android.resource://[your package]/"+[res id]

Dưới đây là một ví dụ

Uri myURI = Uri.parse("android.resource://com.example.project/" + R.drawable.myimage); 

cho thuận tiện bạn có thể sử dụng nó như một phương pháp:

public static Uri getUrl(int res){ 
    return Uri.parse("android.resource://com.example.project/" + res); 
} 

Cảnh báo không sử dụng context.getPackageName() thay thế cho tên gói vì nó có thể trả về giá trị rỗng.

+0

Trong trường hợp nào nó trả về null sau khi ứng dụng của bạn đã khởi tạo? Nếu bạn không tải nó theo chương trình, sau đó xây dựng mà thay đổi gói sẽ phá vỡ mã. –

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