Nếu Mauro Banze đến muộn thì tôi không biết mình đang làm gì ở đây. Nhưng đối với những người đến đây tuyệt vọng tìm kiếm một giải pháp, đây là những gì tôi đã làm:
Tôi tình cờ gặp vấn đề tương tự khi đưa Dự án từ JavaFX lên Android. Tôi muốn sử dụng lại hầu hết các lớp "dữ liệu" chỉ quản lý và cung cấp dữ liệu của mình và không ảnh hưởng đến giao diện người dùng.
Đủ kể chuyện, ở đây chúng tôi đi:
Vấn đề:
- Tại một số điểm chúng ta cần một
Drawable
để thoát khỏi Bitmap trên màn hình.
- Chúng tôi muốn tải về (từ đám mây, internet, hoặc bất cứ nơi nào) Bitmap này và cất giữ để sử dụng sau này như là một
Drawable
- Chúng ta không thể làm điều đó trong một lớp không
Context
hoặc phi Activity
, như chúng ta cần Resources
.
Vậy tại sao chúng ta không chỉ cần lưu nó như là một Bitmap
cho đến khi chúng ta cần nó để được rút ra (mà chắc chắn sẽ xảy ra trong một lớp học Context
hoặc Activity
).
Tôi đã tạo một lớp có tên là BitmapImage
. Nó trông giống như thế này:
public class BitmapImage {
private final Bitmap bitmap;
public BitmapImage (Bitmap bitmap) {
this.bitmap = bitmap;
}
public Bitmap getBitmap() {
return bitmap;
}
public Drawable getDrawable(Resources res) {
return new BitmapDrawable(res,getBitmap());
}
này rất đơn giản lớp "tiết kiệm" Bitmap. Vì vậy, thay vì sau đó làm việc với một Drawable
bạn làm việc với các BitmapImage
cho đến khi bạn thực sự tuyệt vọng cần Drawable
.
Tại thời điểm đó, bạn phải ở trong số Activity
hoặc Context
và tại đó bạn có thể gọi Drawable foo = anyBitmapImage.getDrawable(getResource())
.
bạn có thể thử điều này 'Drawable d = new BitmapDrawable (res, bmp); '? –
@SimplePlan, như tôi đã viết trong chủ đề ban đầu, bitmap đến từ đám mây, không phải tài nguyên. – Igor
thì bạn phải tải xuống hình ảnh đó từ đám mây và sau đó tải dưới dạng Bản vẽ. –