getResourceId-Methode von TypedArray

8

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

  • Der erste Absatz ist klar:
  

Ruft die Ressourcen-ID für das Attribut im Index ab.

  • das zweite ist auch klar:
  

Beachten Sie, dass die Attributressource so aufgelöst wird, als das gesamte TypedArray   Objekt wird abgerufen.

  • Was aber bedeutet der Absatz 3? warum er nicht unbedingt die ursprüngliche Ressourcen-ID zurückgeben könnte?
  

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.

    
GPack 04.06.2016, 09:09
quelle

2 Antworten

4

Von der Dokumentation :

%Vor%

....

  

Wenn der endgültige Wert eines bestimmten Attributs bestimmt wird, gibt es   vier Eingänge, die ins Spiel kommen:

     
  1. Alle Attributwerte im angegebenen AttributSet.
  2.   
  3. Die im AttributSet angegebene Stilressource ("Stil" genannt).
  4.   
  5. Der Standardstil, der von defStyleAttr und defStyleRes
  6. angegeben wird   
  7. Die Basiswerte in diesem Thema.
  8.   
    
Kaamel 14.06.2016 18:54
quelle
1

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.

    
quelle