ホームページ バックエンド開発 XML/RSS チュートリアル Android XMLファイルで使用するサンプルコードの詳細説明

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

Mar 09, 2017 pm 04:50 PM

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します 新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します Sep 12, 2024 pm 12:23 PM

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Samsung Galaxy S25 Ultraの最初のレンダリング画像がリークされ、噂のデザイン変更が明らかに Samsung Galaxy S25 Ultraの最初のレンダリング画像がリークされ、噂のデザイン変更が明らかに Sep 11, 2024 am 06:37 AM

OnLeaks は、X (旧 Twitter) のフォロワーから 4,000 ドル以上を集めようとして失敗した数日後、Android Headlines と提携して Galaxy S25 Ultra のファーストルックを提供しました。コンテキストとして、h の下に埋め込まれたレンダリング イメージ

IFA 2024 | TCLのNXTPAPER 14は、パフォーマンスではGalaxy Tab S10 Ultraに匹敵しませんが、サイズではほぼ匹敵します IFA 2024 | TCLのNXTPAPER 14は、パフォーマンスではGalaxy Tab S10 Ultraに匹敵しませんが、サイズではほぼ匹敵します Sep 07, 2024 am 06:35 AM

TCLは、2つの新しいスマートフォンの発表に加えて、NXTPAPER 14と呼ばれる新しいAndroidタブレットも発表しました。その巨大な画面サイズはセールスポイントの1つです。 NXTPAPER 14 は、TCL の代表的なブランドであるマット LCD パネルのバージョン 3.0 を搭載しています。

新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します 新しいレポートは、噂のSamsung Galaxy S25、Galaxy S25 Plus、Galaxy S25 Ultraのカメラアップグレードのひどい評価を提供します Sep 12, 2024 pm 12:22 PM

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Vivo Y300 Pro は、7.69 mm のスリムなボディに 6,500 mAh のバッテリーを搭載 Vivo Y300 Pro は、7.69 mm のスリムなボディに 6,500 mAh のバッテリーを搭載 Sep 07, 2024 am 06:39 AM

Vivo Y300 Pro は完全に公開されたばかりで、大容量バッテリーを備えた最もスリムなミッドレンジ Android スマートフォンの 1 つです。正確に言うと、このスマートフォンの厚さはわずか 7.69 mm ですが、6,500 mAh のバッテリーを搭載しています。これは最近発売されたものと同じ容量です

Samsung Galaxy S24 FEは、4色と2つのメモリオプションで予想よりも低価格で発売されると請求されています Samsung Galaxy S24 FEは、4色と2つのメモリオプションで予想よりも低価格で発売されると請求されています Sep 12, 2024 pm 09:21 PM

サムスンは、ファンエディション(FE)スマートフォンシリーズをいつアップデートするかについて、まだ何のヒントも提供していない。現時点では、Galaxy S23 FE は 2023 年 10 月初めに発表された同社の最新版のままです。

Xiaomi Redmi Note 14 Pro Plusは、Light Hunter 800カメラを搭載した初のQualcomm Snapdragon 7s Gen 3スマートフォンとして登場します Xiaomi Redmi Note 14 Pro Plusは、Light Hunter 800カメラを搭載した初のQualcomm Snapdragon 7s Gen 3スマートフォンとして登場します Sep 27, 2024 am 06:23 AM

Redmi Note 14 Pro Plusは、昨年のRedmi Note 13 Pro Plus(Amazonで現在375ドル)の直接の後継者として正式に発表されました。予想通り、Redmi Note 14 Pro Plusは、Redmi Note 14およびRedmi Note 14 Proと並んでRedmi Note 14シリーズをリードします。李

iQOO Z9 Turbo Plus: 強化されたシリーズフラッグシップの予約開始 iQOO Z9 Turbo Plus: 強化されたシリーズフラッグシップの予約開始 Sep 10, 2024 am 06:45 AM

OnePlus の姉妹ブランドである iQOO の製品サイクルは 2023 年から 4 年で、ほぼ終わりに近づいている可能性があります。それにもかかわらず、ブランドはまだZ9シリーズの開発を終えていないと宣言しました。その最終、そしておそらく最高エンドとなる Turbo+ バリアントが、予測どおりに発表されました。 T

See all articles