1

Wie ich die folgende Sache kenne.Zuweisen von resourceId zum Layout in Android

Eine Ressourcen-ID ist eine 32-Bit-Nummer der Form: PPTTNNNN. PP ist das Paket, für das die Ressource bestimmt ist; TT ist der Typ der Ressource; NNNN ist der Name der Ressource in diesem Typ. Für Anwendungsressourcen ist PP immer 0x7f.

Beispiel:

diese durch aapt behandelten Ressource-Dateien in dieser Reihenfolge:

layout/main.xml 
drawable/icon.xml 
layout/listitem.xml 

Der erste Typ, den wir sehen, ist layout so dass TT == 1 gegeben. Der erste Name unter diesem Typ ist "main", so dass NNNN == 1 gegeben ist. Die endgültige Ressourcen-ID lautet 0x7f010001.

Als nächstes sehen wir drawable, so dass TT == 2 gegeben ist. Der erste Name für diesen Typ ist "Symbol", so dass NNNN == 1. Die endgültige Ressourcen-ID lautet 0x7f020001.

Zuletzt sehen wir noch eine layout, die wie zuvor TT == 1 hat. Dies hat einen neuen Namen listitem, so dass der nächste Wert NNNN == 2 erhalten wird. Die endgültige Ressourcen-ID lautet 0x7f010002.

Frage:

Aber Vor kurzem habe ich einen Teil der Layout-Datei sind assign ID von unten Art und Weise.

Java-Code

this.f5160k = (ImageView) findViewById(2131755224); 
this.f5163n = findViewById(2131755219); 
this.f5162m = (LinearLayout) findViewById(2131755223); 
this.f5161l = (LinearLayout) findViewById(2131755220); 
this.f5158i = (GridView) findViewById(2131755222); 

Als erste Teil this.f5160k ist Declartion wie ich weiß, aber was ist das Format 2131755224. Kann jemand mir Anregungen oder Wissen geben. ?

Antwort

5

2131755224 ist die Dezimaldarstellung 0x7F1000D8

In dem Code, den Sie gemeinsam, entschieden Entwickler die Dezimalzahl statt mit dem Hexadezimal-Format zu fest einprogrammiert. Beide haben jedoch den gleichen Wert und zeigen auf dieselbe Ressourcen-ID.

Sie können wählen, ob Sie 2131755224 oder 0x7F1000D8 verwenden möchten.

In R.java finden Sie die IDs im Hexadezimalformat.

+0

Diese '2131755224' wird manuell generiert oder wir haben die' public.xml' Datei erstellt. – Ironman

+0

Da der Wert fest codiert ist, müssen Sie public.xml verwenden. Auf diese Weise wird sich der Wert nicht ändern. R.java wird automatisch generiert und IDs ändern sich ständig (und es ist unmöglich, sie im Quellcode fest codieren zu lassen). In public.xml können Sie also die ID im Hexa-Format definieren und das Hexa- oder Dezimalformat in Java-Dateien verwenden ... Es gibt keinen Unterschied, da es sich um eine andere Darstellung handelt, die dieselbe Nummer (oder dieselbe ID in diesem Fall) hat. – W0rmH0le

3

Diese großen Zahlen sind nur die dezimale Darstellung der Zahlen des Formats 0x7f.. (die übrigens hexadezimal ist).

long n = 2131755224; 
System.out.println(Long.toHexString(n)); 

Ausgang: 7f1000d8

2131755224 == 0x7F1000D8 wird true zurück.