Android res 资源文件

本文内容摘自《疯狂Android讲义 第三版-李刚著作》

Android res 资源文件


Android res 资源文件


Android res 资源文件


Android5.0  res目录包含drawable,drawable-ldpi(底分辨率),drawable-mdpi(中分辨率)、drawable-hdpi(高分辨率)、drawable-xhdpi(超高分辨率)

在Java代码中使用资源清单项

Android SDK编译应用时在R类中为res/目录下所有资源文件创建引索,Java代码中通过R类来访问资源文件,语法:

[<package_name>.]R.<resource_type>.<resource_name>

Resource 类主要提供了如下两类方法:

getXxx(int id):根据清单ID来获取实际资源。

getAssets():获取访问/assets/目录下的资源AssetsManager对象。

使用示例:

Resource res  = getResource();

String str = res.getString(R.string.name);

Drawable icon = res.getDrawable(R.drawable.icon);

int[] intarray = res.getIntArray(R.array.books);


/res/values/string.xml  定义string

<resources>
    <string name="app_name">SetupWizard</string>
    <string name="language">Language</string>
    <string name="timezone">Time zone</string>
    <string name="screen">Screen</string>
    <string name="network">Network</string>
</resourc


/res/values/colors.xml 定义color

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
</resources>

/res/values/dimens.xml  定义组件尺寸、字体大小等

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- 定义组件宽高 -->
    <dimen name="cell_height">26dp</dimen>
    <dimen name="cell_weight">66dp</dimen>
    <!-- 定义字体大小 -->
    <dimen name="title_font_size">16sp</dimen>
</resources>

/res/values/bools.xml 定义boolean常量  

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="is_male">true</bool>
    <bool name="is_small">false</bool>
</resources>

/res/values/integers.xml 定义Integer常量

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="age">23</integer>
    <integer name="size">80</integer>
</resources>

/res/values/arrays.xml 定义各种类型数组

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="plain_array">
        <item>@color/colorPrimary</item>
        <item>@color/colorAccent</item>
        <item>@color/colorPrimaryDark</item>
    </array>

    <array name="my_photo">
        <item>@drawable/background</item>
    </array>
    
    <string-array name="string_array">
        <item>@string/app_name</item>
        <item>@string/language</item>
        <item>@string/screen</item>
    </string-array>

    <string name="string_lan_arr">
        <item>Android</item>
        <item>Java</item>
        <item>Python</item>
        <item>PHP</item>
        <item>C/C++</item>
        <item>JSP</item>
    </string>

    <integer-array name="integer_arr">
        <item>@integer/age</item>
        <item>@integer/size</item>
    </integer-array>
</resources>

StateListDrawable资源

Android res 资源文件


/res/drawable/my_image.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true"
        android:color="#225"/>
    <item android:state_focused="false"
        android:color="#00f"/>
    <item android:state_checked="false"
        android:drawable="@drawable/background"
        />
    <item android:state_checked="true"
        android:drawable="@drawable/background"/>
</selector>

LayerDrawable资源

Android res 资源文件

/res/drawable/my_progressbar.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background"
        android:drawable="@drawable/alert_dialog_icon"
        />
    <item android:id="@android:id/progress"
        android:drawable="@drawable/sun"
        />
</layer-list>

/res/drawable/layout_logo.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap android:src="@drawable/img1"
            android:gravity="center"/>
    </item>
    <item android:top="25dp" android:left="25dp">
        <bitmap android:src="@drawable/img2"
            android:gravity="center"
            />
    </item>
    <item android:top="25dp" android:left="50dp">
        <bitmap android:src="@drawable/img3"
            android:gravity="center"
            />
    </item>
</layer-list>

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/layout_logo"/>
<SeekBar
    android:id="@+id/seekbar1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/show_image"
    android:max="255"
    android:progress="100"
    android:progressDrawable="@drawable/my_progressbar"
    />