konwertowanie obrazu zasobów do rysowania na mapę bitową

172

Próbuję użyć tego, Notification.Builder.setLargeIcon(bitmap)który zajmuje obraz bitmapowy. Mam obraz, którego chcę użyć w moim folderze do rysowania, więc jak przekonwertować go na mapę bitową?

tyczj
źródło

Odpowiedzi:

406

Prawdopodobnie masz na myśli Notification.Builder.setLargeIcon(Bitmap), prawda? :)

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

To świetna metoda konwertowania obrazów zasobów na pliki z systemem Android Bitmap.

poitroae
źródło
2
Dlaczego nie nacisnąć przycisku „Edytuj” i nie rozwiązać problemu? (Bardziej sugestia na przyszłość - już to zrobiłem dla tego ... Proponuję zmienić twoją odpowiedź, aby nie krytykować ich literówek. Nie robię tego za ciebie.) Z drugiej strony, +1 za posiadanie odpowiedź robocza :)
ArtOfWarfare
1
Nie sądzę, żeby to była ogólna odpowiedź - przynajmniej nie odkąd Android zaczął obsługiwać rysunki wektorowe.
roberto tomás
po wdrożeniu rozwiązania otrzymuję to ...... 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();

Ponieważ API 22 getResources().getDrawable()jest przestarzałe, możemy użyć następującego rozwiązania.

Drawable vectorDrawable = VectorDrawableCompat.create(getResources(), R.drawable.logo,  getContext().getTheme());
Bitmap myLogo = ((BitmapDrawable) vectorDrawable).getBitmap();
AndyW
źródło
1
Mówi mi, że bitmapDrawable nie może być
Cześć @ 20Cents, czy próbowałeś stackoverflow.com/questions/18218938/ ...
AndyW
Po prostu naciśnij ctrl + shift + O, jeśli otrzymujesz nie można rozwiązać na typ dla bitmapDrawable. Twoje zdrowie!
portfoliobuilder
Niestety w ten sposób moja aplikacja ulega awarii!
Fahad Alduraibi
getDrawable jest przestarzałe
Junior Mayhé
13
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.my_drawable);

Contextmoże być Twoim obecnym Activity.

aromero
źródło
2
i dla rysunków wektorowych?
roberto tomás
9

Oto inny sposób konwersji zasobu do rysowania na mapę bitową w systemie Android:

Drawable drawable = getResources().getDrawable(R.drawable.input);
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();
Ramkailash
źródło
2
Czym różni się Twoje od rozwiązania AndyW? to jest to samo!
Fahad Alduraibi
6

Najpierw utwórz obraz bitmapowy

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

teraz ustaw bitmapę w ikonie kreatora powiadomień ....

Notification.Builder.setLargeIcon(bmp);
Ravi Makvana
źródło
0

W res/drawablefolderze

1. Utwórz nowy Drawable Resources.

2. Wprowadź nazwę pliku.

W folderze zostanie utworzony nowy plik res/drawable.

Zastąp ten kod w nowo utworzonym pliku i zastąp ic_action_backnazwą pliku do rysowania.

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

Teraz można go używać z zasobów identyfikatora R.id.filename.

Mohammedsalim Shivani
źródło