Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des in Android-XML-Dateien verwendeten Beispielcodes

Detaillierte Erläuterung des in Android-XML-Dateien verwendeten Beispielcodes

黄舟
黄舟Original
2017-03-09 16:50:051836Durchsuche

Detaillierte Erläuterung des in Android-XML-Dateien verwendeten Beispielcodes

1. Layoutdatei: Im Layoutverzeichnis wird es häufig verwendet.

Wir können es definieren Zwei Sätze für die Anwendung Oder mehrere Sätze von Layouts, zum Beispiel: Sie können neue Verzeichnisse erstellen: „Layout_land“ (darstellt das horizontale Bildschirmlayout von Mobiltelefonen) und „layout_port“ (darstellt das vertikale Bildschirmlayout von Mobiltelefonen). Das System findet automatisch die meisten geeignete Layoutdatei für unterschiedliche Situationen, aber zwei unterschiedliche Layoutsätze auf derselben Schnittstelle. Die Dateinamen der Dateien sollten gleich sein, nur in zwei verschiedenen Verzeichnissen abgelegt.

2. Bilddateien: Im Drawable-Verzeichnis ist es ab Version 2.1 in drei Verzeichnisse unterteilt.

Drawable-hdpi speichert hochauflösende Bilder, z. B. WVGA (480×800). , FWVGA (480×854)

drawable-mdpi speichert Bilder mittlerer Auflösung, wie HVGA (320×480)

drawable-ldpi speichert Bilder niedriger Auflösung, wie QVGA (240). ×320)

Das System geht zu diesen Ordnern, um die entsprechenden Bilder entsprechend der Auflösung des Geräts zu finden. ​

Um bei der Entwicklung von Programmen mit verschiedenen Plattformen und Bildschirmen kompatibel zu sein, wird empfohlen, je nach Bedarf unterschiedliche Versionen von Bildern in jedem Ordner zu speichern.

Wir können die vorbereiteten Bilder in diesem Verzeichnis ablegen oder die gewünschten Bilder über benutzerdefinierte XML-Dateien realisieren. Beispielsweise können wir „shape_1.xml“ definieren und im Zeichenverzeichnis mit dem folgenden Inhalt ablegen:

<shape xmlns:android="http://schemas.android.com/apk/res/android"   android:shape="oval"> 
<!--android:shape="oval"表示所要绘制的图形是一个椭圆,默认是rectangle,长方形-->
<gradient 
    android:startColor="#0055ff88" 
    android:centerColor="#0055ff00" 
    android:centerY="0.75" 
    android:endColor="#00320077" 
    android:angle="270" 
/> 
<!--gradient 产生颜色渐变 android:angle 从哪个角度开始变 只有90的整数倍可以 -->
<solid android:color="#ff4100ff"/> 
<!--solid表示图形是实心的,填充里面,#ff4100ff为填充颜色-->
<stroke 
    android:width="2dp"
    android:color="#ee31ff5e" 
    android:dashWidth="3dp" 
    android:dashGap="2dp" /> 
<!-- 描边 采用那样的方式将外形轮廓线画出来,width表示笔的粗细,dashWidth表示小横线的宽度,dashGap表示小横线之间的距离-->
<padding
    android:left="7dp"
    android:top="7dp"
    android:right="7dp" 
    android:bottom="7dp" /> 
<!--和CSS中的padding应该是一个道理-->
<corners android:radius="6dp" /> 
<!--corners表示是有半径为5像素的圆角-->
</shape>

Wenn wir möchten, dass ein Steuerelement je nach Status unterschiedliche Bilder anzeigt, können wir es direkt im Programm steuern oder eine XML-Datei im Zeichenverzeichnis erstellen, um den gleichen Effekt zu erzielen. Beispiel: Wir können eine neue Datei im Zeichenverzeichnis „File button_back.xml“ erstellen.

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item  android:state_pressed="false"android:drawable="@drawable/xxx1" />
    <item  android:state_pressed="true"  android:drawable="@drawable/xxx2" />
    <item  android:state_focused="true"  android:drawable="@drawable/xxx3" />
    <-- 这里还可以加N多效果和动作 只要你用的到 -->
    <item  android:drawable="@drawable/xxx4" />
</selector>

Die obige XML-Datei kann ein Steuerelement implementieren (angenommen, es handelt sich um eine Schaltfläche), den Fokus erhalten, die Schaltfläche drücken und die anzeigen Wirkung verschiedener Bilder unter normalen Bedingungen Sie müssen nur darauf verweisen, wenn Sie das Steuerelement definieren. Der Dateiname reicht aus, zum Beispiel:

<Button
     android:id="@+id/Button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:background="@drawable/button_add_x">
</Button>
<!--android:background="@drawable/button_back"指向button_back.xml文件-->

Aber was sollen wir tun, wenn es sich bei unserer Bedingung nicht um ein vorhandenes Ereignis handelt Geben Sie beispielsweise ImageView im System ein und zeigen Sie verschiedene Bilder basierend auf dem Wert einer Variablen var an? Sie können den folgenden Code in das Programm schreiben

if (条件1)
{ 
image.setBackground(R.id.xxx1); 
}
else if (条件2)
{ 
image.setBackground(R.id.xxx2); 
} ...

Oder Sie können eine andere einfache Methode verwenden, um dieselbe Funktion zu erreichen und eine XML-Datei unter res/drawable mit dem folgenden Inhalt erstellen

<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:maxLevel="9" android:drawable="@drawable/battery_0" />
    <item android:maxLevel="39" android:drawable="@drawable/battery_1" />
    <item android:maxLevel="69" android:drawable="@drawable/battery_2" />
    <item android:maxLevel="89" android:drawable="@drawable/battery_3" />
    <item android:maxLevel="100" android:drawable="@drawable/battery_4" />
</level-list>

Setzen Sie dann den Quellcode der Bildansicht auf die erstellte XML-Datei im Layout. Wenn Sie das Bild im Programm ändern, müssen Sie nur imageview.getDrawable().setLevel(50) verwenden.
Android wählt automatisch aus entsprechendes basierend auf dem Wert des Levelbildes. Das Mobiltelefon nutzt diese Methode, um bei der Anzeige der verbleibenden Akkukapazität unterschiedliche Bilder anzuzeigen.

3. Menüdatei: Im Menüverzeichnis müssen Sie ihn beim Schreiben von Code nur mit MenuInflater in der onCreateOptionsMenu-Methode laden. Das Format ist wie folgt:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/enabled_item"
        android:title="Enabled"
        android:icon="@drawable/stat_happy" />

    <item android:id="@+id/disabled_item"
        android:title="Disabled"
        android:enabled="false"
        android:icon="@drawable/stat_sad" />

    <item android:id="@+id/enabled_item_2"
        android:title="Enabled"
        android:icon="@drawable/stat_happy" />

    <item android:id="@+id/disabled_item_2"
        android:title="Disabled"
        android:enabled="false"
        android:icon="@drawable/stat_sad" />
</menu>

4. Die Ressourcendatei befindet sich im Werteverzeichnis. Sie wird als Ressourcendatei bezeichnet, da alle XML-Dateien im Werteverzeichnis die Ressource als Stammverzeichnis haben Knoten,

1.strings.xml Die Datei, die Zeichenfolgen definiert, das Format ist wie folgt:

<resources>
    <string name="hello">Hello World!</string>
    <string name="app_name">我的应用程序</string>
</resources>

2.colors.xml Die Datei, die Farben definiert, das Format ist wie folgt :

<resources>
    <!--定义图片颜色-->
    <drawable name="screen_background_black">#ff000000</drawable>
    <drawable name="translucent_background">#e0000000</drawable>
    <drawable name="transparent_background">#00000000</drawable>
    <!--定义文字颜色-->
    <color name="solid_red">#f00</color>
    <color name="solid_blue">#0000ff</color>
    <color name="solid_green">#f0f0</color>
    <color name="solid_yellow">#ffffff00</color>
</resources>

Eine Datei, die ein Array definiert. Das Format ist wie folgt:

<resources>
    <string-array name="planets">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
        <item>Jupiter</item>
        <item>Saturn</item>
        <item>Uranus</item>
        <item>Neptune</item>
        <item>Pluto</item>
    </string-array>

    <integer-array name="numbers">
        <item>100</item>
        <item>500</item>
        <item>800</item> 
    </integer-array>
</resources>

Eine Datei, die einen Stil definiert . Es ist in zwei Verwendungszwecke unterteilt:

Stil: Wird im Layout als Einheit (Steuerelement) verwendet. Beispiel: Wir können einen Stil für TextView definieren, einschließlich der Schriftgröße und Farbe des Texts, und ihn dann für eine bestimmte Instanz von TextView verwenden.
Thema: Wird als Einheit in allen Aktivitäten in der Anwendung oder in einer bestimmten Aktivität in der Anwendung verwendet. Beispielsweise können wir ein Thema definieren, das eine Reihe von Farben für den Vorder- und Hintergrund des Fensterrahmens und des Bedienfelds sowie die textbaren Größen- und Farbattribute für das Menü definiert. Dieses Thema kann auf alle Aktivitäten in Ihrem Programm angewendet werden .

<resources>
   <!--Theme,可以用来定义activity的主题-->
   <style name="Theme.Transparent">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
        <item name="android:windowBackground">@drawable/transparent_background</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:colorForeground">#fff</item>
    </style>
    <!--Style,可以用来定义某个View元素,这里是ImageView的样式-->
    <style name="ImageView120dpi">
        <item name="android:src">@drawable/stylogo120dpi</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
    </style>
</resources>

Ich persönlich denke, dass, egal ob es sich um ein Thema oder einen Stil handelt, der Anwendungsbereich unterschiedlich ist. Die Unterscheidung sollte auf dem xxxx von android:name="xxxx" basieren ist offensichtlich anders.

5.dimen.xml Datei, die Einheiten definiert. In Android gibt es die folgenden Maßeinheiten:

px (Pixel): die tatsächlichen Pixel des Bildschirms, die üblicherweise verwendete Auflösung ist 1024*. 768 Pixel bedeuten 1024 Pixel horizontal und 768 Pixel vertikal. Der Anzeigeeffekt ist auf verschiedenen Geräten gleich.

in (Zoll): Die physische Größe des Bildschirms, jeder Zoll entspricht 2,54 Zentimetern.

mm (Millimeter): Die physische Größe des Bildschirms.

 pt (Punkt): Die physische Größe des Bildschirms. 1/72 Zoll.

dp/dip: Dichteunabhängiges Pixel, eine abstrakte Einheit basierend auf der Bildschirmdichte. Auf einem Monitor mit 160 Punkten pro Zoll ist 1dp = 1px. Allerdings ändert sich das Verhältnis von dp zu px mit der Änderung der Bildschirmdichte und verschiedene Geräte haben unterschiedliche Anzeigeeffekte.

sp: Pixel, die nichts mit der Skalierung zu tun haben, werden hauptsächlich zur Anzeige von Schriftarten verwendet, am besten für die Textgröße, als Größeneinheit im Zusammenhang mit Text.

<resources> 
    <dimen name="one_pixel">1px</dimen> 
    <dimen name="double_density">2dp</dimen> 
    <dimen name="sixteen_sp">16sp</dimen> 
</resources>

6.attrs.xml Die Datei, die Attribute definiert, wird hauptsächlich in benutzerdefinierten Komponenten verwendet. Die spezifische Verwendung wird im Folgenden ausführlich beschrieben. Das Format lautet wie folgt:

<resources>     
    <declare-styleable name="MyView">     
        <attr name="textColor" format="color" />     
        <attr name="textSize" format="dimension" />     
    </declare-styleable>     
</resources>

五、动画文件  在anim目录下,动画资源分为两种,

 

1.实现图片的translate、scale、rotate、alpha四种变化,还可以设置动画的播放特性,称为Tween动画。

<set xmlns:android="http://schemas.android.com/apk/res/android">               
    <translate android:interpolator="@android:anim/accelerate_interpolator"
         android:fromXDelta="0" android:toXDelta="200" android:fromYDelta="0"
         android:toYDelta="180" android:duration="2000" />
    <scale android:interpolator="@android:anim/accelerate_interpolator"
         android:fromXScale="1.0" android:toXScale="2.0" android:fromYScale="1.0"
         android:toYScale="2.0" android:pivotX="150%" android:pivotY="150%"
         android:duration="2000" />
    <alpha android:fromAlpha="1.0" android:toAlpha="1.0"
         android:duration="@android:integer/config_mediumAnimTime" />
    <rotate ....各个属性></rotate>
    <Interpolator >可以使用其子类和属性定义动画的运行方式,先快后慢,先慢后快等</Interpolator>
</set>

 

2.帧动画,逐帧播放设置的资源,称为Frame动画。

<animation-list xmlns:android=”http://schemas.android.com/apk/res/android” 
android:oneshot=”true”> 
    <item android:drawable=”@drawable/rocket_thrust1″ android:duration=”200″ /> 
    <item android:drawable=”@drawable/rocket_thrust2″ android:duration=”200″ /> 
    <item android:drawable=”@drawable/rocket_thrust3″ android:duration=”200″ /> 
</animation-list>

六、raw目录下的文件,是直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。一般为应用要用到的音频或视频文件等等

 

   要使用这些资源,可以调用Resources.openRawResource(),参数是资源的ID,即R.raw.somefilename。

七、xml目录下的文件,是程序中需要使用的普通xml文件。在运行时可以通过调用Resources.getXML()读取。

八、assets目录下的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。

  1. 先在Activity里面调用getAssets()来获取AssetManager引用。

  2. 再用AssetManager的open(String fileName, int accessMode)方法则指定读取的文件以及访问模式就能得到输入流InputStream。

  3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream.close()。

  4.调用AssetManager.close()关闭AssetManager。        


总结:其实android中定义如此多的XML配置文件,在我看来就是为了达到显示层和数据层的分离,提高了可维护性,也是我们的程序代码变得简洁。


Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des in Android-XML-Dateien verwendeten Beispielcodes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn