Ich lese gerade Dokumente über getResourceId () Methode. Es sagt, dass
Ruft die Ressourcen-ID für das Attribut im Index ab. Hinweis Diese Attributressource wird aufgelöst, wenn das gesamte TypedArray-Objekt ausgeführt wird wird abgerufen. Als Ergebnis wird diese Funktion die Ressource zurückgeben Bezeichner des endgültigen Ressourcenwerts, der nicht unbedingt gefunden wurde die ursprüngliche Ressource, die durch das Attribut angegeben wurde.
Also
Ruft die Ressourcen-ID für das Attribut im Index ab.
Beachten Sie, dass die Attributressource so aufgelöst wird, als das gesamte TypedArray Objekt wird abgerufen.
Als Ergebnis gibt diese Funktion die Ressourcen-ID des endgültiger Ressourcenwert, der gefunden wurde, nicht unbedingt das Original Ressource, die durch das Attribut angegeben wurde.
Von der Dokumentation :
%Vor%....
Wenn der endgültige Wert eines bestimmten Attributs bestimmt wird, gibt es vier Eingänge, die ins Spiel kommen:
- Alle Attributwerte im angegebenen AttributSet.
- Die im AttributSet angegebene Stilressource ("Stil" genannt).
- Der Standardstil, der von defStyleAttr und defStyleRes
angegeben wird- Die Basiswerte in diesem Thema.
Dies liegt daran, dass Ressourcenzusammenführung vor dem TypedArray
stattfinden muss. wird abgerufen.
Das Gradle-base-Build-System verwendet einen neuen Merging-Mechanismus für Ressourcen. In früheren Build-Systemen wurde das Zusammenführen durch Übergeben von a durchgeführt Liste von Ressourcenordnern zu aapt, die nebenbei als Overlays fungierten das --auto-add-overlay, um sicherzustellen, dass neue Ressourcen in den Overlays vorhanden sind würde automatisch hinzugefügt (Standardverhalten ist für Overlays ist zu überschreiben Sie nur vorhandene Ressourcen, erstellen Sie keine neuen).
Eines der Ziele des Gradle-basierten Build-Systems war es, mehr zu bieten Flexibilität und eine häufig gestellte Feature-Anforderung war die Fähigkeit um mehr als einen Ressourcenordner zu haben. aapt kann nicht damit umgehen Das bedeutet, dass das neue Build-System einen neuen Merging-Mechanismus einführt wird vor aapt ausgeführt und generiert einen einzelnen, zusammengelegten Ressourcenordner das ist aapt gefüttert. Diese Verschmelzung hat den Vorteil, dass sie ist inkrementell, sowohl durch Gradles Eingabe- / Ausgabeänderungserkennung, als auch in der Weise, wie es implementiert wird (dh es kann die Zusammenführung nur durch erneut ausführen Anwendung der Änderung in einer einzigen Datei).
Die zusammengeführten Ressourcen stammen aus drei Arten von Quellen:
- Die Hauptressourcen, die mit dem main sourceSet verbunden sind und sich im Allgemeinen in src / main / res
befinden- Die Variantenüberlagerungen, die vom Buildtyp und Flavour (s) stammen.
- Die Abhängigkeiten des Bibliotheksprojekts, die Ressourcen über den Res-Eintrag in ihrem aar-Bündel beisteuern.
z. B. Wenn Sie verschiedene productFlavors
oder buildTypes
verwenden, können Sie für jede Geschmacksrichtung unterschiedliche Ressourcen haben. So kann sich der ursprünglich zum Zeitpunkt der Entwicklung eingestellte Wert von dem unterscheiden, was nach dem Ändern des Geschmacks tatsächlich präsentiert wird.