3 Stimmen

Intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bmp) Bild ist nicht zentriert

Ich habe ein kleines Problem beim Erstellen von Verknüpfungen auf meinem Android-Desktop.

Zunächst einmal habe ich ein 72x72 Symbol, das ich von meiner SD-Karte in ein Bitmap-Objekt lade.

Mit diesem Bitmap-Objekt setze ich es als mein Icon-Ressource.

Das Problem, das ich habe, ist, wenn ich es setze, erscheint das Bild auf der Verknüpfung verschoben und abgeschnitten. Aus den Bildschirmmetriken erhalte ich die Größe als 72x72, ich bin mir nicht sicher, was das Problem ist.

Code:

Bitmap theBitmap = BitmapFactory.decodeFile("/sdcard/icon.png");
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, theBitmap)

Ich habe versucht, es zu verkleinern und es funktioniert, indem ich ein Canvas, Drawable und ein weiteres Bitmap verwende, aber beim Neustart des Telefons wird es auf eine kleine Größe zurückgesetzt.

Das Verwenden desselben Symbols als Drawable-Ressource macht es perfekt aussehen, aber es ist nicht dynamisch:

Parcelable iconResource = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);

Verwendung eines Samsung Epic 4g w/ 2.1

8voto

Lior Punkte 7674

Ich hatte ein ähnliches Problem. Ich habe mir den Quellcode des Launchers angesehen und festgestellt, dass es einen Fehler gibt, der bewirkt, dass das Symbol nicht korrekt erscheint, wenn die Anfangsgröße des Bitmaps zu klein ist.

Skalieren Sie zuerst das Bitmap auf 128x128:

Bitmap scaledBitmap = Bitmap.createScaledBitmap(theBitmap, 128, 128, true);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, scaledBitmap);

Das wird es beheben.

5voto

Wei-Tsung Punkte 297

Auch wenn es sich um einen Thread handelt, der schon lange her ist, habe ich eine Lösung gefunden:

int size = (int) getResources().getDimension(android.R.dimen.app_icon_size);
installer.putExtra(Intent.EXTRA_SHORTCUT_ICON, Bitmap.createScaledBitmap(b, size, size, false));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X