Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4ecfb525 authored by Adam Lesinski's avatar Adam Lesinski Committed by android-build-merger
Browse files

Merge "Add Complex XML Resources guide to docs" into nyc-dev

am: 98a41875

* commit '98a41875':
  Add Complex XML Resources guide to docs

Change-Id: I1d639704050837c3fd7131bfb8d3939dca321a01
parents aa38a0cf 98a41875
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -133,6 +133,9 @@
      <li><a href="<?cs var:toroot ?>guide/topics/resources/localization.html">
          <span class="en">Localization</span>
        </a></li>
      <li><a href="<?cs var:toroot ?>guide/topics/resources/complex-xml-resources.html">
          <span class="en">Complex XML Resources</span>
        </a></li>
      <li class="nav-section">
        <div class="nav-section-header"><a href="<?cs var:toroot ?>guide/topics/resources/available-resources.html">
            <span class="en">Resource Types</span>
+117 −0
Original line number Diff line number Diff line
page.title=Inline Complex XML Resources
parent.title=Application Resources
parent.link=index.html
@jd:body

<p>Certain resource types are a composition of multiple complex resources represented by XML files.
One example is an animated vector drawable, which is a drawable resource encapsulating a vector
drawable and an animation. This requires the use of at least three XML files.</p>

<dl>

<dt><code>res/drawable/avd.xml</code></dt>
<dd>
<pre class="stx">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/vectordrawable" &gt;
    &lt;target
        android:name="rotationGroup"
        android:animation="@anim/rotation" /&gt;
&lt;/animated-vector&gt;
</pre>
</dd>

<dt><code>res/drawable/vectordrawable.xml</code></dt>
<dd>
<pre class="stx">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:height="64dp"
    android:width="64dp"
    android:viewportHeight="600"
    android:viewportWidth="600" &gt;

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

   &lt;/group&gt;
&lt;/vector&gt;
</pre>
</dd>

<dt><code>res/anim/rotation.xml</code></dt>
<dd>
<pre class="stx">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;objectAnimator xmlns:android="http://schemas.android.com/apk/android"
    android:duration="6000"
    android:propertyName="rotation"
    android:valueFrom="0"

   android:valueTo="360" /&gt;
</pre>
</dd>

</dl>

<p>There are a lot of files here just to make a single animated vector drawable!
If the vector drawable and animations are re-used elsewhere, this is the best way to implement an
animated vector drawable. If they’re only ever used for this animated vector drawable, then there is
a more compact way to implement them.</p>

<p>Using AAPT’s inline resource format, you can define all three resources in the same XML file.
Since we’re making an animated vector drawable, we put the file under <code>res/drawable/</code>.</p>

<dl>

<dt><code>res/drawable/avd.xml</code></dt>
<dd>
<pre class="stx">
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
    <strong>xmlns:aapt="http://schemas.android.com/aapt"</strong> &gt;

    <strong>&lt;aapt:attr name="android:drawable" &gt;</strong>
        &lt;vector
            android:height="64dp"
            android:width="64dp"
            android:viewportHeight="600"
            android:viewportWidth="600" &gt;

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

           &lt;/group&gt;
        &lt;/vector&gt;
    <strong>&lt;aapt:attr /&gt;</strong>

    &lt;target
        android:name="rotationGroup" /&gt;
        <strong>&lt;aapt:attr name="android:animation" &gt;</strong>
            &lt;objectAnimator
                android:duration="6000"
                android:propertyName="rotation"
                android:valueFrom="0"

               android:valueTo="360" /&gt;
        <strong>&lt;aapt:attr&gt;</strong>
&lt;/animated-vector&gt;
</pre>
</dd>

</dl>

<p>The XML tag <code>&lt;aapt:attr &gt;</code> tells AAPT that the tag’s child shall be treated as a
resource and extracted into its own resource file. The value in the attribute name specifies where
to use the inline resource within the parent tag.</p>

<p>AAPT will generate resource files and names for all of the inline resources.
Applications built using this inline format are compatible with all versions of Android.</p>
+4 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ page.title=Resources Overview
    <li><a href="accessing-resources.html">Accessing Resources</a></li>
    <li><a href="runtime-changes.html">Handling Runtime Changes</a></li>
    <li><a href="localization.html">Localization</a></li>
    <li><a href="complex-xml-resources.html">Complex XML Resources</a></li>
  </ol>

  <h2>Reference</h2>
@@ -79,6 +80,9 @@ code or from other XML resources.</dd>
  <dd>A bottom-up guide to localizing your application using alternative resources. While this is
just one specific use of alternative resources, it is very important in order to reach more
users.</dd>
  <dt><strong><a href="complex-xml-resources.html">Complex XML Resources</a></strong></dt>
  <dd>An XML format for building complex resources like animated vector drawables in a single
XML file.</dd>
  <dt><strong><a href="available-resources.html">Resource Types</a></strong></dt>
  <dd>A reference of various resource types you can provide, describing their XML elements,
attributes, and syntax. For example, this reference shows you how to create a resource for