chuyển đổi hình ảnh tài nguyên có thể vẽ thành bitmap


172

Tôi đang cố gắng sử dụng Notification.Builder.setLargeIcon(bitmap)hình ảnh bitmap. Tôi có hình ảnh tôi muốn sử dụng trong thư mục drawable của mình, vậy làm cách nào để chuyển đổi nó thành bitmap?

Câu trả lời:


406

Bạn có thể có nghĩa Notification.Builder.setLargeIcon(Bitmap), phải không? :)

Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.large_icon);
notBuilder.setLargeIcon(largeIcon);

Đây là một phương pháp tuyệt vời để chuyển đổi hình ảnh tài nguyên sang Android Bitmap.


2
Tại sao không nhấn nút "Chỉnh sửa" và sửa câu hỏi? (Thêm một gợi ý cho tương lai - Tôi đã thực hiện nó cho điều này ... Tôi đề nghị chỉnh sửa câu trả lời của bạn để không chỉ trích lỗi chính tả của họ. Tôi không làm điều đó cho bạn.) Trên một lưu ý khác, +1 vì có một câu trả lời làm việc :)
ArtOfWarfare

1
Tôi không nghĩ rằng đây là một câu trả lời chung chung - ít nhất là kể từ khi Android bắt đầu hỗ trợ các bản vẽ vector.
roberto tomás

sau khi thực hiện giải pháp tôi nhận được điều này ...... E/CommitToConfigurationOperation: Malformed snapshot token (size): ... E/NotificationService: Not posting notification with icon==0: Notification(pri=0 contentView=null vibrate=null sound=content://settings/system/notification_sound defaults=0x0 flags=0x10 color=0x00000000 vis=PRIVATE) ... E/NotificationService: WARNING: In a future release this will crash the app:...
Bhuro

44
Drawable myDrawable = getResources().getDrawable(R.drawable.logo);
Bitmap myLogo = ((BitmapDrawable) myDrawable).getBitmap();

Vì API 22 getResources().getDrawable()không được dùng nữa, vì vậy chúng tôi có thể sử dụng giải pháp sau.

Drawable vectorDrawable = VectorDrawableCompat.create(getResources(), R.drawable.logo,  getContext().getTheme());
Bitmap myLogo = ((BitmapDrawable) vectorDrawable).getBitmap();

1
Nó cho tôi biết bitmapDrawable không thể được phân giải thành một loại

Xin chào @ 20Cents bạn đã thử stackoverflow.com/questions/18218938/ từ
AndyW

Chỉ cần nhấn ctrl + shift + O nếu bạn đang nhận không thể được giải quyết thành một loại cho bitmapDrawable. Chúc mừng!
portfoliobuilder

Thật không may, cách này làm hỏng ứng dụng của tôi!
Fahad Alduraibi 16/2/2016

getDrawable bị phản đối
Junior Mayhé

13
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.my_drawable);

Contextcó thể là hiện tại của bạn Activity.


2
và cho vector vẽ?
roberto tomás

9

Đây là một cách khác để chuyển đổi tài nguyên Drawable thành Bitmap trong Android:

Drawable drawable = getResources().getDrawable(R.drawable.input);
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();

2
Bạn khác với giải pháp của AndyW như thế nào? nó giống nhau
Fahad Alduraibi 16/2/2016

6

Tạo hình ảnh Bitmap đầu tiên

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.image);

bây giờ đặt bitmap trong Biểu tượng trình tạo thông báo ....

Notification.Builder.setLargeIcon(bmp);

0

Trong res/drawablethư mục,

1. Tạo một cái mới Drawable Resources.

2. Tên tệp đầu vào.

Một tập tin mới sẽ được tạo bên trong res/drawable thư mục.

Thay thế mã này bên trong tệp vừa tạo và thay thế ic_action_backbằng tên tệp có thể vẽ của bạn.

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/ic_action_back"
    android:tint="@color/color_primary_text" />

Bây giờ, bạn có thể sử dụng nó với Resource ID , R.id.filename.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.