ホームページ  >  記事  >  バックエンド開発  >  Android XMLファイルで使用するサンプルコードの詳細説明

Android XMLファイルで使用するサンプルコードの詳細説明

黄舟
黄舟オリジナル
2017-03-09 16:50:051899ブラウズ

Android XML ファイルで使用されるサンプル コードの詳細な説明

1. レイアウト ファイル: レイアウト ディレクトリで広く使用されます

アプリケーションに対して 2 つ以上のレイアウト セットを定義できます。新しいディレクトリを作成します。layout_land (携帯電話の横画面レイアウトを表す)、layout_port (携帯電話の縦画面レイアウトを表す)、システムはさまざまな状況に応じて最適なレイアウト ファイルを自動的に見つけますが、2 つのセットのファイル名は異なります。同じインターフェイス上のレイアウト ファイルは同じである必要があり、異なるディレクトリにある 2 つのレイアウトの間に配置するだけです。

2. 画像ファイル: バージョン 2.1 以降、drawable ディレクトリは 3 つのディレクトリに分かれています

drawable-hdpi には、WVGA (480×800)、FWVGA (480×854) などの高解像度の画像が保存されます。

drawable-mdpi は、HVGA (320×480) などの中解像度の画像を保存します

drawable-ldpi は、QVGA (240×320) などの低解像度の画像を保存します

システムは、画像の解像度に従ってそれらを区別します。マシン これらのフォルダーに移動して、対応する画像を見つけます。

プログラム開発時に異なるプラットフォームや異なる画面と互換性を持たせるために、必要に応じて異なるバージョンのイメージを各フォルダーに保存することをお勧めします。

すでに準備されている画像をこのディレクトリに置くことも、XML ファイルをカスタマイズして目的の画像を実現することもできます。たとえば、shape_1.xml を定義して、それをdrawable ディレクトリに置くことができます。

<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>

さまざまな状態に応じてさまざまな画像を表示するコントロールが必要な場合は、プログラム内で直接コントロールすることも、ドローアブル ディレクトリに XML ファイルを作成して同じ効果を実現することもできます。たとえば、新しいものを作成できます。ドローアブルディレクトリの 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>

上記の XML ファイル コントロール (ボタンであると想定) を実装し、フォーカスを取得し、ボタンを押して、通常の状態でさまざまな画像を表示することができます。このファイルを参照するだけで済みます。コントロールを定義するときに名前を付けます。例:

<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文件-->

しかし、条件がそうでない場合、変数 var の値に基づいて異なる画像を表示する ImageView など、システムに既存のイベント タイプがある場合はどうすればよいでしょうか?プログラム内に次のコードを記述することもできます

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

または、別の簡単な方法を使用して、次の内容の xml ファイルを res/drawable の下に作成します

<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>

次に、imageview の src を Created in に設定します。レイアウト 適切な XML ファイルの場合、プログラム内で画像を変更するときは、imageview.getDrawable().setLevel(50); を使用するだけです。

Android は、level の値に従って、対応する画像を自動的に選択します。携帯電話ではこの方式を利用し、電池残量を表示する際に異なる画像を表示します。

3. メニュー ファイル: メニュー ディレクトリでは、コードを記述するときに、onCreateOptionsMenu メソッドの MenuInflater を使用してロードするだけで済みます。形式は次のとおりです。

<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. リソース ファイルは、values ディレクトリにあります。values ディレクトリ内の xml ファイルはすべて、ルート ノードとしてリソースを持っているため、リソース ファイルと呼ばれます。 strings.xml 文字列を定義するファイル、形式は次のとおりです:

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

2.colors.xml 色を定義するファイル、形式は次のとおりです:

<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 配列を定義するファイル、形式は次のとおりです:

<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 スタイルを定義するファイル。2 つの用途に分かれます:

スタイル: 単一の XML 要素 (コントロール) を単位としてレイアウトに使用されます。 たとえば、テキストのフォント サイズや色を含む TextView のスタイルを定義し、それを TextView の特定のインスタンスで使用できます。

テーマ: アプリケーション内のすべてのアクティビティ、またはアプリケーション内の特定のアクティビティの単位として使用されます。たとえば、ウィンドウ フレームとパネルの前景色と背景の色のセットを定義し、メニューのテキスト表示可能なサイズと色の属性を定義するテーマを定義できます。このテーマはプログラム内のすべてのアクティビティに適用できます。 。

<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>

個人的には、テーマにしてもスタイルにしても、適用範囲が違うだけで、android:name="xxxx" の xxxx で区別すべきだと思います。

5.dimen.xml 単位を定義するファイル Androidでの測定単位は以下の通りです:

px(ピクセル): 画面の実際のピクセル、一般的に言われている解像度は1024*768ピクセル、つまり横1024ピクセルです。および垂直方向に 768 ピクセルの場合、表示効果は異なるデバイスでも同じです。

in (インチ): 画面の物理的なサイズ。各インチは 2.54 センチメートルに相当します。

MM(ミリメートル):画面の物理的なサイズ。

pt(ポイント):画面の物理的なサイズ。 1/72インチ。

dp/dip: 密度に依存しないピクセル、画面密度に基づく抽象的な単位。 160 ドット/インチのモニターでは、1dp = 1px です。ただし、dp と px の比率は画面密度の変化に応じて変化し、デバイスが異なれば表示効果も異なります。

sp: スケールとは関係のないピクセルで、主にテキストに関係するサイズの単位として、テキストサイズに最適なフォント表示に使用されます。

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

6.attrs.xml 属性を定義するファイルは主にカスタムコンポーネントで使用され、具体的な使い方は後述のカスタムコンポーネントの使い方で詳しく紹介します

<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配置文件,在我看来就是为了达到显示层和数据层的分离,提高了可维护性,也是我们的程序代码变得简洁。


以上がAndroid XMLファイルで使用するサンプルコードの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。