Android Ressourcen (Ressourcen) Management
Es gibt viele Dinge verwendet, um eine ausgezeichnete Android App bauen. Neben der Anwendung zur Codierung, müssen Sie sich auf eine Vielzahl von Ressourcen zu konzentrieren, wie Sie eine Vielzahl von statischen Inhalten verwenden, wie Bitmaps, Farben, Layout-Definition, Benutzeroberfläche Strings, Animation und so weiter. Diese Ressourcen werden in die Projekt res / Standalone-Unterverzeichnis in Verkehr gebracht.
In diesem Abschnitt des Tutorials erfahren Sie, wie Sie Ihre Anwendungsressourcen zu organisieren, alternative Ressourcen angeben, und greifen Sie in Ihrer Anwendung.
Organisatorische Ressourcen in Eclipse
Sie müssen in jeder Ressource unter bestimmten Unterverzeichnis Ihres Projekts res / Verzeichnis abgelegt werden. Zum Beispiel ist dies eine einfache Datei-Level-Projekt:
MyProject/ src/ MyActivity.java res/ drawable/ icon.png layout/ activity_main.xml info.xml values/ strings.xml
res / Verzeichnis enthält alle Ressourcen in verschiedenen Unterverzeichnissen. Hier ist ein Bild Ressource, zwei Layout-Ressourcen und eine String-Ressource-Datei. Die folgende Tabelle gibt eine detaillierte in den Projekt res / Verzeichnis Support-Ressourcen.
Verzeichnis | Ressourcentyp |
---|---|
anim / | XML-Datei, die die Animationseigenschaft definiert. Sie werden in res / Anim / Ordner gespeichert, nach Art des Zugriffs R.anim |
Farbe / | XML-Datei, die die Farbe Statusliste definiert. Sie werden in res / Farbe / Ordner gespeichert, nach Art des Zugriffs R.color |
ziehbar / | Bilddateien, wie .png, .jpg, .gif oder XML-Datei wird als Bitmap, Zustandsliste zusammengestellt, Formen, animierte Bilder. Sie werden in res / ziehbar / Ordner gespeichert, nach Art des Zugriffs R.drawable |
Layout / | Custom UI-XML-Datei-Layout. Sie werden in res / Layout / Ordner gespeichert, nach Art des Zugriffs R.layout |
Menü / | Benutzerdefinierte Anwendungsmenü XML-Dateien, wie im Optionsmenü, Kontextmenüs, Untermenüs. Sie werden in res / Menü / Ordner gespeichert, nach Art des Zugriffs R.menu |
raw / | Alle Dateien werden in ihrer ursprünglichen Form gespeichert. Wir müssen benannte Ressource ID R.raw.filename, die RAW-Datei zu öffnen, indem Resource.openRawResource () aufrufen |
Werte / | XML-Dateien enthalten einfache Werte (wie Strings, Integer, Farbe, etc.). Hier sind einige der Ressourcen unter den Ordner-Namenskonventionen. arrays.xml im Namen einer Reihe von Ressourcen, durch R.array Art des Zugriffs; bools.xml Ressourcen im Namen der Boolesche Werte, Art des Zugriffs von R.bool;; integers.xml eine ganze Zahl von Ressourcen durch R.integer Klasse zugegriffen stellt Colors.xml Ressourcen im Namen der Farbe, R.color Klasse zugegriffen durch; dimens.xml Vertreter Bemaßungswerte, durch R.dimen Art des Zugriffs; strings.xml stellt eine String-Ressource, durch R.string Art des Zugriffs; styles.xml Vertreter Stil Ressource, nach Art der Zugang R.style |
xml / | Durch den Aufruf von Resources.getXML () beliebige XML-Dateien zur Laufzeit zu lesen. Verschiedene Konfigurationsdateien können Runtime hier gespeichert werden |
Alternative Ressourcen
Ihre Anwendung Ressourcen bereitzustellen, die eine alternative Konfiguration für ein bestimmtes Gerät zu unterstützen. Zum Beispiel benötigen Sie eine alternative Bild von Ressourcen für verschiedene Bildschirmauflösungen zur Verfügung zu stellen, die eine alternative String-Ressourcen für verschiedene Sprachen. Zur Laufzeit erkennt Android die aktuelle Gerätekonfiguration und laden die entsprechenden Ressourcen für eine Anwendung.
Um eine Reihe von alternativen Ressourcen für spezifische Konfiguration, im Anschluss an die Schritte identifizieren:
- Erstellen Sie ein neues Verzeichnis res / bis <resource_name> _ <config_qualifier> benannt werden. Hier resources_name alle Ressourcen in der Tabelle erwähnt, wie das Layout und Bilder. Qualifier wird feststellen, welche Ressourcen personalisierte Konfiguration zu verwenden. Sie können die offizielle Dokumentation für eine vollständige Liste der verschiedenen Arten von Ressourcen-Qualifikationsspiel zu sehen.
- Speichern von alternativen Ressourcen in Reaktion auf dieses Verzeichnis. Diese Ressource-Dateien müssen zeigen, die Standard-Ressource-Dateinamen mit den folgenden Beispielen konsistent ist, aber diese Dokumente den Inhalt der Substitution bestimmen. Zum Beispiel: Während die Datei denselben Namen Bild, aber die Bildschirmauflösung des Bildauflösung höher sein wird.
Hier ist ein Beispiel, das Standardbild des Bildschirms und hochauflösende Bild Substitution zu spezifizieren.
MyProject/ src/ main/ java/ MyActivity.java res/ drawable/ icon.png background.png drawable-hdpi/ icon.png background.png layout/ activity_main.xml info.xml values/ strings.xml
Hier ist ein weiteres Beispiel, das Standard-Layout-Sprache und alternative Layouts arabische Sprache angeben.
MyProject/ src/ main/ java/ MyActivity.java res/ drawable/ icon.png background.png drawable-hdpi/ icon.png background.png layout/ activity_main.xml info.xml layout-ar/ main.xml values/ strings.xml
Der Zugang zu Ressourcen
In der Anwendungsentwicklung benötigen wir Zugriff auf definierte Ressourcen, entweder durch Code oder über XML-Dateien. Die folgenden Abschnitte beschreiben, wie diese Ressourcen in zwei Szenarien separat zuzugreifen.
Im Code-Ressourcen zugreifen
Wenn die Android-Anwendung kompiliert wird eine Klasse R zu erzeugen, die die ID und alle res / Verzeichnis-Ressourcen enthält. Sie können die Klasse R verwenden, + von der Unterklasse Ressourcennamen oder direkt die Ressourcen-ID verwenden, um Ressourcen zugreifen zu können.
Beispiele
Zugang res / ziehbar / myimage.png, und legen Sie es auf die Image, würden Sie den folgenden Code verwenden:
ImageView imageView = (ImageView) findViewById(R.id.myimageview); imageView.setImageResource(R.drawable.myimage);
Die erste Zeile des Codes in hier zu R.id.myimageview definiert myimageview von Image in der Layout-Datei erhalten. Die zweite Zeile mit R.drawable.myimage, um das Bild in res / ziehbar in einem Unterverzeichnis namens myimage bekommen.
Beispiele
Betrachten wir ein Beispiel, in dem res / Werte / strings.xml wie folgt definiert:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello, World!</string> </resources>
Jetzt können Sie die ID des Objekts msg von Textview-Ressource-ID verwenden, um den Text zu setzen, wie folgt:
TextView msgTextView = (TextView) findViewById(R.id.msg); msgTextView.setText(R.string.hello);
Beispiele
Betrachten Sie die folgende Definition des Layouts res / Layout / activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a TextView" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a Button" /> </LinearLayout>
Der Anwendungscode wird die Aktivität Layout onCreate () -Methode wie folgt laden:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="opaque_red">#f00</color> <string name="hello">Hello!</string> </resources>
Der Zugang in XML
Betrachten Sie die folgende XML-Ressource-Datei res / Werte / strings.xml, die eine Farbressource und eine String-Ressource enthält -
<?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="@color/opaque_red" android:text="@string/hello" />
Jetzt können Sie diese Ressourcen in der folgenden Layout-Datei verwenden, um die Textfarbe und Textinhalt zu setzen:
<code><?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="@color/opaque_red" android:text="@string/hello" /> </code>
Nun, wenn Sie zum vorherigen Abschnitt zurückkehren, die "Hallo Welt!" Instanz zu erklären, kann ich Ihnen in diesem Abschnitt bestätigen alle ein besseres Verständnis des Konzepts haben. Daher empfehle ich zu stark zurückgehen in den vorherigen Beispielen zu suchen, und ich verwende eine andere Sicht auf die Basisressourcennutzung.