2013-01-16 15 views
6

Dieser Codeabrufen HiDensity ziehbar aus dem Paket (Wabe)

final ApplicationInfo ai = getPackageManager().getApplicationInfo("com.company.hello", 0); 
final Drawable d = getPackageManager().getApplicationIcon(ai); 

sogar auf meinem HiDensity HoneyComb Gerät ein 48x48 (MDPI) ziehbar retreive.

Da ich die ziehbar von Bitmap.createScaledBitmap vergrößern kann, ich frage, wie das hallo Dichte Symbol zu extrahieren, die bereits vorhanden ist. Die Methode getDrawableForDensity ist für SDK < 15 nicht verfügbar, aber ich bin nicht glücklich, eine Skalierungsfunktion für jedes Symbol aufzurufen, das ich zeichnen muss, wenn es im Paket kostenlos verfügbar ist.

Edit für Bounty

zu vergessen für eine Weile meines Gerät Anzeigedichte der Frage ist folgende: ein eigenes Paket gegeben, für die wir sicher wissen, ein 72x72-Symbol in den relativen hdpi res Ordnern haben, Wie kann ich dieses Symbol aus einem anderen Paket extrahieren?

THIS FUNCTION ist nicht in Wabenumgebung verfügbar.

+0

Wofür verwenden Sie das Zeichenfeld, wenn Sie es einmal haben? Es scheint mir so, als könnten Sie die 'R.drawable.id' des Bildes benutzen, um es zu bekommen, welches automatisch das richtige für den aktuellen Bildschirm einnimmt, auf dem Sie gerade laufen. – FoamyGuy

+0

Vielleicht verwirren Sie Größe mit Dichte (sie sind unterschiedlich). Sie sollten Ihre PNG-Ressourcen nicht skalieren (dies ist der Hauptzweck der Verwendung unterschiedlicher Auflösungszeichensätze). – Booger

+0

Hallo FoamGuy Ich habe bereits versucht, das Symbol nach spezifischer ID zu extrahieren, aber das Ergebnis ist das gleiche: 48x48 Zeichen. Booger: Ich verwechsle nichts: Bei einem Paket möchte ich das 72x72 Zeichen, das ich kenne. Meine Bildschirmdichte ist HI_DENSITY und die Lösung kann getDrawalForDensity sein, ist aber nicht verfügbar. – lorenzoff

Antwort

1

Ihre ziehbar directlyy mit der guten Dichte zu finden, haben Sie dies nur, um zu versuchen:

mContext.getResources().getDrawable(R.drawable.mydrawable); 

, was ist das Problem? Wenn Android Ihnen ein 48x48 Icon gibt, ist es das gute Icon oder, Sie haben das Icon nicht im guten res/drawable-Ordner gesetzt.

+0

Ja, danke für Ihre Antwort, aber die Frage ist nicht, ob das 48x48 Symbol gut ist oder nicht, sondern wie man alle Auflösungssymbole aus einem Paket extrahiert, unabhängig von der Gerätedichte. Wie ich bereits mit der API> 15 geschrieben habe, ist eine Funktion, die genau das tut, was ich brauche, verfügbar (getDrawableForDensity) und die Frage ist, wie man das gleiche Ergebnis erhält, ohne diese Funktion zu benutzen. – lorenzoff