365連休

にわかのandroidとかの開発メモ。

Inline complex XML resourcesの意訳

developer.android.com

 

特定のリソースは複数のXMLにより構成される。次の例はアニメーションベクタードローワブルで、描画可能な「ベクタードローワブル」と「アニメーション」をカプセル化したリソースである。少なくとも3つのXMLファイルが必要である。

 

res/drawable/avd.xml

<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/vectordrawable" >
    <target
        android:name="rotationGroup"
        android:animation="@anim/rotation" />
</animated-vector>

 

res/drawable/vectordrawable.xml

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:height="64dp"
    android:width="64dp"
    android:viewportHeight="600"
    android:viewportWidth="600" >

   <group
        android:name="rotationGroup"
        android:pivotX="300.0"
        android:pivotY="300.0"
        android:rotation="45.0" >
        <path
            android:fillColor="#000000"
            android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />

   </group>
</vector>

 

res/anim/rotation.xml

<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/android"
    android:duration="6000"
    android:propertyName="rotation"
    android:valueFrom="0"

   android:valueTo="360" />

 

単一のアニメーションベクタードローワブルを作るために、ここに多くのファイルがある。

もし、他の場所でベクタードローワブルやアニメーションを再利用する場合、この方法は実装するための最良の方法である。

 

もし、一度だけの使用ならば、よりコンパクトな方法で実装できる。

AAPTのインラインリソース形式を使用して、同じXMLファイル内に3つのリソースをすべて定義できる。

アニメーションベクタードローワブルを作るので、ファイルをres/drawable/へ配置する。

 

res/drawable/avd.xml

<?xml version="1.0" encoding="utf-8"?>
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:aapt="http://schemas.android.com/aapt" >

    <aapt:attr name="android:drawable" >
        <vector
            android:height="64dp"
            android:width="64dp"
            android:viewportHeight="600"
            android:viewportWidth="600" >

           <group
                android:name="rotationGroup"
                android:pivotX="300.0"
                android:pivotY="300.0"
                android:rotation="45.0" >
                <path
                    android:fillColor="#000000"
                    android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />

           </group>
        </vector>
    </aapt:attr>

    <target android:name="rotationGroup">
        <aapt:attr name="android:animation" >
            <objectAnimator
                android:duration="6000"
                android:propertyName="rotation"
                android:valueFrom="0"

               android:valueTo="360" />
        </aapt:attr>
    </target>
</animated-vector>

 

XMLタグの<aapt:attr>は子タグが独自のリソースファイルとして抽出されることAAPTに指示する。

name属性は親タグの中でインラインリソースとして使われる場所を指定する。

 

AAPTは、全てのインラインリソースのファイルと名前を生成する。

インライン形式を使用してビルドされたアプリは、Androidの全てのバージョンと互換性がある。

 

※AAPT:Android Asset Packaging Tool

※上記はhttps://developer.android.com/guide/topics/resources/complex-xml-resourcesの意訳である

Android開発者向けドキュメントを意訳してみる。 - 365連休

意訳元https://developer.android.com/ライセンス解釈
ソースコードから抽出されたドキュメントやコードはAndroid Open Source Projectの優先ライセンスであるApache 2.0 licenseが適用され、それ以外のコンテンツはCC BY 2.5が適用されている。
よって、ページ全体の意訳についてはCC BY 2.5における翻案行為、ページ内のコード転載についてはApache 2.0 licenseにおける頒布行為にあたると解釈している。