Kennt jemand einen Weg, um festzustellen, welchen Ordner das Android-System auflöst, wenn ich ein bestimmtes Drawable aus den Ressourcen anfordere ( drawable-long
vs. drawable-notlong
zum Beispiel)? Ich möchte sicherstellen, dass die Ressourcen so geladen werden, wie ich es erwarte (z. B. um sicherzustellen, dass das Tattoo wirklich ldpi
und nicht mdpi
da es genau an der Grenze liegt).
Ich könnte immer ausdrucken die intrinsische Größe des drawable, nachdem ich es aus Ressourcen holen, und überprüfen Sie, dass gegen die verschiedenen Bildgrößen, die ich habe, aber das ist Art von Schmerz. Plus, mein Unternehmen erlaubt seinen Kunden, ihre app zu skinnen, bevor es freigegeben wird, so dass, nachdem es skinned ich nicht in der Lage, auf diese Methode zu verlassen.
Ich habe es mit Resources.getName(resId)
aber das gibt den Ordnernamen nicht an, und soweit ich weiß, kann man eine AssetFileDescriptor
für die Ressource, aber Sie können keinen tatsächlichen Dateinamen erhalten.
UPDATE: Seitdem ich diese Frage gestellt habe, habe ich entdeckt, dass man auf viele der Namen der Ressourcenbezeichner durch die Configuration
と DisplayMetrics
Klassen (beide zugänglich über getResources()
). DisplayMetrics
kann Ihnen die ldpi
/ mdpi
/ hdpi
Bezeichnung, und Configuration
können Sie small
/ normal
/ large
Bildschirmgröße, long
/ notlong
Seitenverhältnis, Gebietsschema, Mobilfunknetzcodes und andere Hardware-Informationen. Dies ist jedoch immer noch keine positive Bestätigung dafür, dass Sie die Ressourcen erhalten, die Sie erwarten, wenn Sie einen komplizierten Ressourcensatz haben. Es schützt Sie auch nicht vor Fehlern, die falsche Werte melden, wie der Motorola Droid-Fehler, bei dem die DisplayMetrics
meldet die falschen xdpi
と ydpi
(er meldet 96dpi, obwohl der tatsächliche Wert eher 265dpi beträgt! Schrecklicher Fehler).