Android 资源目录(Style Resource)介绍

本文详细介绍了Android应用程序中的资源管理,包括资源目录结构、字符串资源、图片资源、布局资源、菜单资源、文件资源、动画资源和animator资源的使用方法,特别是重点讲解了values目录下如style资源的定义和应用,方便开发者理解和复用控件样式。
Android资源目录(Style Resource)介绍

1.      介绍

资源文件一般放在res/*/目录下.res目录下的文件夹分为values/drawable等用于存放不同类型的资源,改文件夹根据资源类型/语言/分辨率/横竖屏等,命名规则为:

value                     en                        ldpi

drawable              en-rUS               mdpi

layout                    CN                       hdpi                    land(横屏)

xml                        zh-rTW        -       xhdpi        -         port(竖屏)

menu                    ru                         nodpi

raw                        ru_rRU               xxhdpi

……                      ……                     ……                    ......

Example:value-en-rUS-hdpi-land

当前语言是en-rUS,分辨率是hdpi,屏幕是横屏时调用此目录下资源.

 

2.      字符串values/

字符串资源放在res/values/*.xml文件中.文件名任意.不过一般都放在相应名称文件中,便于识别.

申明方法:

<resources>

</resources>

(1)    string 存放一个字符串值(默认存放文件strings.xml)

ex: <string name="app_name">TestRes</string>
使用: getString(R.string.app_name);

(2)    string-array 存放一个string数组(默认存放文件strings.xml/arrays.xml)

ex: <string-arrayname="app_string_array">
        <item> item1 </item>
        <item> item2 </item>
      </string-array>
使用: Stringarray[] = getResources().getStringArray(R.array. app_string_array);

(3)    array 存放一个int数组(默认存放文件arrays.xml)

ex: <arrayname="app_array">
        <item> 0 </item>
        <item> 1 </item>
      </array>
使用: int array[]= getResources().getIntArray(R.array.app_array);

(4)    plurals  根据传进来的参数的大小来决定使用哪个字符串

ex: <pluralsname="app_plurals">
        <itemquantity="zero">%d, -- 0-use zero</item>
        <itemquantity="one">%d, -- 1-use one</item>
        <itemquantity="two">%d, -- 2-use two</item>
        <item quantity="few">%d,-- 3,4-use few</item>
        <itemquantity="many">%d, -- 11-99-use many</item>
        <itemquantity="other">%d, -- 0-use other</item>
</plurals>
使用: Stringplural = getResources().getQuantityString(R.plurals.app_plurals, 3, 3);(第一个参数3表示当传入3时使用哪个字串,第二个参数3会赋值到字串的%d中)

(5)    dimen 存放一个尺寸相关的参数(默认存放文件:dimens.xml)

ex: <dimen name="app_dimen"> 20dip</dimen>/*关于尺寸单位后续整理*/
使用:android:layout_width=”@dimen/app_dimen”
     setWidth(R.dimen.app_dimen);

(6)    style  定义一个包含各种属性的对象(默认存放文件:style.xml)

通俗点说,就是将控件(比如textview)的属性都写在这个style对象中,这样可以多个控件复用.

ex: <resources>
    <style name="CustomText"parent="@style/Text">
        <itemname="android:textSize">20sp</item>
        <itemname="android:textColor">#008</item>
    </style>
</resources>
使用: <EditText style="@style/CustomText"/>

(7)    color  定义一个包含color值的对象(默认存放文件color.xml)

ex: <color name="color_name"> #80ff0000</color>
使用: android:textColor="@color/ color_name"
 int color =res.getColor(R.color. color_name);

(8)    bool/integer 定义一个bool/int类型对象,就不一一介绍了.

 

3.      图片资源drawable/

最简单的就是在drawable目录下定义放一个图片文件,like image.png

使用: android:drawable="@drawable/image"
     getResources().getDrawable(R.drawable.image);

还可以定义一个img.xml文件,通过不同的state来决定使用不同的img.png

ex: <selectorxmlns:android="http://schemas.android.com/apk/res/android">
<itemandroid:state_enabled="true" android:state_active="false"android:state_focused="false"android:drawable="@drawable/ic_lockscreen_handle_mifavor_normal"/>
<itemandroid:state_enabled="true" android:state_active="true"android:state_focused="false"android:drawable="@drawable/ic_lockscreen_handle_mifavor_pressed"/>
</selector>


4.      布局layout/  xml/

布局资源放在res/layout(xml)/*.xml文件中

Layout/xml:  layout定义了一个activity的布局,

            使用方法: setContentView(R.layout.main_activity);

            xml通常是用来定义一个preference的布局,


5.      菜单 menu/

菜单资源放在 res/menu/*.xml文件中(菜单中各项含义后续介绍)

Ex:main.xml

<item
       android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
           android:title="@string/action_settings"/>
使用方法: getMenuInflater().inflate(R.menu.main, menu);


6.      文件 raw/

文件资源放在res/raw/*文件中.

读取: public InputStream openRawResource (int id)


7.      动画  anim/

用来定义一个tween动画(alpha,scale,translate,rotate)的所有参数


8.      animator/

不懂


如果你想在Android系统中使用`SettingsLib`模块中定义的样式,你需要将`SettingsLib`模块添加到Android系统的编译环境中。这可以通过修改Android系统的`build/core/main.mk`文件来实现。 首先,将以下代码添加到`build/core/main.mk`文件中的`PRODUCT_PACKAGES`列表中: ``` SettingsLib ``` 然后,将以下代码添加到`build/core/main.mk`文件中的`PRODUCT_MODULES`列表中: ``` SettingsLib: $(call all-subdir-makefiles, SettingsLib) ``` 接下来,在`SettingsLib`模块的目录中创建一个`Android.mk`文件,其中包含以下代码: ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_MODULE := SettingsLib LOCAL_SRC_FILES := \ $(call all-java-files-under, java) \ $(call all-Iaidl-files-under, aidl) LOCAL_AAPT_FLAGS := \ --auto-add-overlay \ --extra-packages com.android.settings LOCAL_PACKAGE_NAME := SettingsLib LOCAL_JAVA_LIBRARIES := \ android-support-v4 \ com.android.internal.annotations \ com.android.internal.customview LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res LOCAL_PROGUARD_ENABLED := disabled include $(BUILD_PACKAGE) ``` 上面的代码将`SettingsLib`模块打包为一个Android应用程序,并将其标记为可选模块。它还指定了该模块的包名、源目录、依赖项等。 最后,运行`make`命令编译Android系统,并将`SettingsLib`模块添加到系统中。一旦添加到系统中,你就可以在Android系统的代码中引用`SettingsLib`模块中定义的样式了。例如,在`Settings`应用程序的布局文件或主题文件中,你可以使用以下代码来引用`SettingsLib`模块中定义的`SettingsTheme`样式: ``` <style name="SettingsTheme" parent="@*android:style/Theme.Material"> <!-- Add your customizations here --> </style> ``` 这将使`Settings`应用程序使用`SettingsLib`模块中定义的样式作为其主题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值