2010-04-15 10 views
9

Ich muss die Bildschirmdichte zur Laufzeit in einem Android AppWidget bestimmen. Ich habe ein HDPI-Emulator-Gerät (AVD) eingerichtet. Wenn ein normales Programm Projekt einrichten, und legt diesen Code in die onCreate Methode:Wie bekomme ich die richtigen DisplayMetrics von einem AppWidget in Android?

DisplayMetrics dm = getResources().getDisplayMetrics(); 
Log.d("MyTag", "screen density " + dm.densityDpi); 

Diese Ausgänge „Rasterdichte 240“, wie erwartet.

Wenn jedoch ein I AppWidget Projekt eingerichtet, und legen diesen Code in das onUpdate Methode:

DisplayMetrics dm = context.getResources().getDisplayMetrics(); 
Log.d("MyTag", "screen density " + dm.densityDpi); 

Diese Ausgänge "Rasterdichte 160". Mir ist aufgefallen, dass der mDefaultDisplay-Member des Resources-Objekts hier im AppWidget-Fall null ist.

Wenn ich eine Ressource zur Laufzeit mithilfe des Resources-Objekts abrufen, das von context.getResources() im AppWidget abgerufen wird, gibt es eine falsche Ressource basierend auf der Bildschirmdichte zurück. Zum Beispiel habe ich ein 60x60px für mdpi und ein 80x80 Zeichen für hdpi. Wenn ich dieses Drawable-Objekt mit context.getResources(). GetDrawable (...) erhalte, wird die 60x60-Version zurückgegeben.

Gibt es eine Möglichkeit, Ressourcen zur Laufzeit aus dem Kontext eines AppWidget korrekt zu behandeln?

Danke!

Antwort

1

Das fühlt sich an wie ein Fehler. Wenn Sie ein Beispielprojekt erstellen können, das den Fehler veranschaulicht, veröffentlichen Sie ein Problem unter . Wenn Sie darüber nachdenken, fügen Sie einen Kommentar hinzu, der auf das Problem verweist.

+0

Hmmm. Ich habe ein einfaches Widget erstellt, um nur diesen Fehler zu demonstrieren, und es zeigt korrekt 240 im HDPI-Emulator-Gerät an. Ich gehe zurück und versuche herauszufinden, was an meinem anderen Widget anders ist. Danke fürs schauen. – ManicBlowfish

+4

Aha. Ich habe das Tag in meinem Manifest vermisst. Wenn ich die min sdk version auf etwas> = 4 setze, bekomme ich zur Laufzeit die richtige Bildschirmdichte. – ManicBlowfish