Maison  >  Article  >  développement back-end  >  Explication détaillée de l'exemple de code utilisé dans les fichiers XML Android

Explication détaillée de l'exemple de code utilisé dans les fichiers XML Android

黄舟
黄舟original
2017-03-09 16:50:051882parcourir

Explication détaillée de l'exemple de code utilisé dans les fichiers XML Android

1. Fichier de mise en page : Dans le répertoire de mise en page, il est largement utilisé

Nous pouvons définir ; deux ensembles pour l'application Ou plusieurs ensembles de mises en page, par exemple : vous pouvez créer de nouveaux répertoires layout_land (représentant la disposition horizontale de l'écran des téléphones mobiles), layout_port (représentant la disposition verticale de l'écran des téléphones mobiles). Le système trouvera automatiquement le plus. fichier de mise en page approprié selon différentes situations, mais deux ensembles de mises en page différents sur la même interface. Les noms de fichiers doivent être les mêmes, juste placés dans deux répertoires différents.

2. Fichiers image : Dans le répertoire drawable, il est divisé en trois répertoires à partir de la version 2.1

drawable-hdpi stocke les images haute résolution, telles que WVGA (480×800). , FWVGA (480 × 854)

drawable-mdpi stocke des images à moyenne résolution, telles que HVGA (320 × 480)

drawable-ldpi stocke des images à basse résolution, telles que QVGA (240 ×320)

Le système ira dans ces dossiers pour trouver les images correspondantes en fonction de la résolution de la machine. ​

Lors du développement d'un programme, afin d'être compatible avec différentes plateformes et différents écrans, il est recommandé que chaque dossier stocke différentes versions d'images selon les besoins.

Nous pouvons mettre les images préparées dans ce répertoire, ou réaliser les images souhaitées via des fichiers XML personnalisés. Par exemple, nous pouvons définir shape_1.xml et le mettre dans le répertoire dessinable, avec le contenu suivant :

<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>
Lorsque nous voulons qu'un contrôle affiche différentes images selon différents états, nous pouvons le contrôler directement dans le programme, ou nous pouvons créer un fichier XML dans le répertoire drawable pour obtenir le même effet. nous pouvons créer un nouveau fichier dans le répertoire dessinable File button_back.xml

<?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>
Le fichier XML ci-dessus peut implémenter un contrôle (supposé être un bouton), obtenir le focus, appuyer sur le bouton et afficher le effet de différentes images dans des conditions normales. Il suffit de le référencer lors de la définition du contrôle, par exemple :

<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文件-->
Mais que faire lorsque notre condition n'est pas un événement existant. tapez dans le système, par exemple, ImageView affiche différentes images en fonction de la valeur d'une variable var? Vous pouvez écrire le code suivant dans le programme

if (条件1)
{ 
image.setBackground(R.id.xxx1); 
}
else if (条件2)
{ 
image.setBackground(R.id.xxx2); 
} ...
Ou vous pouvez utiliser une autre méthode simple pour réaliser la même fonction et créer un fichier XML sous res/drawable avec le contenu suivant

<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>
Ensuite, définissez le src de l'imageview sur le fichier XML créé dans la mise en page. Lors de la modification de l'image dans le programme, il vous suffit d'utiliser imageview.getDrawable().setLevel(50);

Android sélectionnera automatiquement le correspondant basé sur la valeur de l'image de niveau. Le téléphone mobile utilise cette méthode pour afficher différentes images lors de l'affichage de la charge restante de la batterie.

3. Fichier Menu : Dans le répertoire menu, lors de l'écriture du code, il vous suffit de le charger avec MenuInflater dans la méthode onCreateOptionsMenu. Le format est le suivant,

<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. Le fichier de ressources se trouve dans le répertoire des valeurs Il est appelé fichier de ressources car les fichiers XML du répertoire des valeurs ont tous une ressource comme racine. node,

1.strings.xml Le fichier qui définit les chaînes, le format est le suivant :

<resources>
    <string name="hello">Hello World!</string>
    <string name="app_name">我的应用程序</string>
</resources>
2.colors.xml Le fichier qui définit les couleurs, le format est le suivant :

<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>
3.arrays xml. Un fichier qui définit un tableau. Le format est le suivant :

<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>
4.styles.xml. . Il est divisé en deux utilisations :

Style : Utilisé dans la mise en page en tant qu'unité Au sein d'un seul élément XML (contrôle). Par exemple : nous pouvons définir un style pour TextView, y compris la taille de la police et la couleur du texte, puis l'utiliser sur une instance spécifique de TextView.

Thème : utilisé comme une unité dans toutes les activités de l'application ou dans une certaine activité de l'application. Par exemple, nous pouvons définir un thème, qui définit un ensemble de couleurs pour le premier plan et l'arrière-plan du cadre et du panneau de la fenêtre, et définit la taille du texte et les attributs de couleur pour le menu. Ce thème peut être appliqué à toutes les activités de votre programme. .

<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>
Personnellement, je pense que qu'il s'agisse de thème ou de style, c'est juste le champ d'application qui est différent. La distinction doit être basée sur le xxxx d'android:name="xxxx". est évidemment différent.

5.dimen.xml Fichier qui définit les unités. Il existe les unités de mesure suivantes dans Android :

px (pixel) : les pixels réels de l'écran, la résolution couramment utilisée est de 1024*. 768 pixels signifie 1024 pixels horizontalement et 768 pixels verticalement. L'effet d'affichage est le même sur différents appareils.

po (pouces) : La taille physique de l'écran, chaque pouce est égal à 2,54 centimètres.

mm (millimètres) : La taille physique de l'écran.

 pt (point) : La taille physique de l'écran. 1/72 pouces.

dp/dip : pixel indépendant de la densité, une unité abstraite basée sur la densité de l'écran. Sur un moniteur de 160 points par pouce, 1dp = 1px. Cependant, le rapport dp/px changera avec le changement de densité de l'écran, et différents appareils ont des effets d'affichage différents.

sp : pixels qui n'ont rien à voir avec l'échelle, principalement utilisés pour l'affichage des polices, mieux pour la taille du texte, en tant qu'unité de taille liée au texte.

<resources> 
    <dimen name="one_pixel">1px</dimen> 
    <dimen name="double_density">2dp</dimen> 
    <dimen name="sixteen_sp">16sp</dimen> 
</resources>
6.attrs.xml Le fichier qui définit les attributs est principalement utilisé dans les composants personnalisés. L'utilisation spécifique sera présentée en détail dans la suite Comment utiliser les composants personnalisés. 🎜 >
<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配置文件,在我看来就是为了达到显示层和数据层的分离,提高了可维护性,也是我们的程序代码变得简洁。


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn