2013-05-28 6 views
6

Ich habe eine sehr einfache Frage:Wie erhalten Sie die Qualifier für eine bestimmte Ressource (wenn Sie sie verwenden)?

Angesichts einer bestimmten Ressource (ID, Zeichenkette, Zeichen, ...) aus R.java-Datei, ist es möglich zu wissen, welche Qualifikationsmerkmal es in seinem Ordner, der ihm entsprach? Wenn das so ist, wie ?

Zum Beispiel, wenn mein Gerät einen Bildschirm mit HDPI-Dichte hat, und ich habe den gleichen Dateinamen "x.png" auf "res/drawable-hdpi" und "res/drawable-mdpi", und ich bin über Um diese Datei zu dekodieren, möchte ich wissen, dass sie die Datei von res/drawable-hdpi erhalten hat und dadurch weiß, dass sie die hdpi-Dichte hat.

Natürlich, in diesem Beispiel, wenn die Datei in anderen Ordnern existiert, aber nicht im hdpi-Ordner, würde ich mir wünschen, dass sie mir sagt, welche Datei beim Dekodieren der Datei verwendet wird.

Dasselbe gilt für den Rest der Qualifier (locale, screenSize, ...).

+0

Ich bin in dieser Frage interessiert. Ich habe das gleiche Problem. Hast du es gelöst? Haben Sie eine Funktion gefunden, mit der Sie den Qualifer des Geräts in jeder Situation erraten können? – GmloMalo

+0

@GmloMalo Nein. Ich erinnere mich nicht einmal, warum ich das wollte ... –

+0

Ok. Danke trotzdem – GmloMalo

Antwort

0

Dieses Problem tritt häufig auf, wenn Sie auf eine große Anzahl von Geräten ausgerichtet sind. Daher habe ich mich entschlossen, meine eigene einfache Anwendung zu erstellen, um herauszufinden, welches Zeichen verwendet wird. Here ist der Link.

Hoffe, das wird helfen.

+0

Beispielcode hat keinen Code und keine Funktion, die das tut, über was ich geschrieben habe ... –

+0

nur den Beispielcode ausführen und Sie werden verstehen. – bladeX

0

Ich glaube nicht, dass das Android-Framework einen Mechanismus für Ihre Anwendung bietet, um herauszufinden, welche Ressource verwendet wurde.

Aber Sie können die Regeln immer auf der Grundlage der Regeln, die in der Android Resource Qualifiers-Dokumentation angegeben sind, formulieren.

Aber ich bin nicht klar, was genau Ihre Anforderung ist? Möchten Sie, dass Ihre Anwendung erkennt, welche Ressource verwendet wird? Oder wollen Sie das nur beim Design/Build?

Um herauszufinden, welche Ressource verwendet wird, können Sie leicht eine Logik basierend auf Bildschirmdichte, Bildschirmgröße, aktuellen Telefongebietsschema und aktueller Ausrichtung formulieren, die alle über verschiedene Android-apis verfügbar sind.

+0

Angenommen, der Code weiß nichts darüber, welche Ressourcen-Dateien existieren, was ich will, ist eine Funktion, die sagt, welche Qualifikationsmerkmale für die gegebene Ressource verwendet werden. es ist für die Laufzeit (weil ich sonst selbst sehen kann, wo die Dateien sind ...). –

+0

das ist meiner Meinung nach nicht möglich ... Das Beste, was Sie tun können, ist, dass Sie wissen, welche Ressourcen Sie in jedem Ordner mit den von Ihnen angegebenen Qualifiern angelegt haben. Abhängig von den genannten Geräte-Metriken können Sie erraten, welche Ressource von Ihrer App erfasst wird. Ich glaube nicht, dass Sie herausfinden können, welche Qualifikationen für eine bestimmte Ressource vorhanden sind, die vom Android-System und nicht von Ihrer Anwendung stammen. –

0

Verwendung http://developer.android.com/reference/android/content/res/Configuration.html

Beispiel für dpi:

Configuration config = getResources().getConfiguration(); 
    Log.d("DPI ", Integer.toString(config.densityDpi)); 
+0

Wo ist der Teil, den ich dir die Ressourcen-ID gebe? Derzeit sehe ich nur, dass Sie die Dichte des Geräts ermittelt haben.Es hat nichts mit einer bestimmten Ressource zu tun. –

+0

Dies können Sie dpi in Zahlen anzeigen. http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-in-android Überprüfen Sie dpi mit Konfiguration und bekannten Density Bucket für Ihr Handy. – Novikov

+0

Sie verstehen die Frage nicht. Ich frage nicht nach Dichte. Ich frage, wie man den Ursprungsordner der Ressource, die ich wähle, erhält. Zum Beispiel, wenn ich einen Drawable innerhalb mehrerer Ordner habe ("drawable-ldpi", "drawable-port", "drawable-iw", ...), möchte ich herausfinden, welche der Dateien er ausgewählt hat, wenn ich versuche, zu bekommen es. –

Verwandte Themen