Android开发中关于资源文件的存储操作。对于Android资源也是非常重要的,主要包括文本字符串(strings)、颜色(colors)、数组(arrays)、动画(anim)、布局(layout)、图像和图标(drawable)、音频视频(media)和其他应用程序使用的组件。

资源目录:

目录

存放的资源

/res/anim/ 存放定义补间动画的XML文件
/res/color/ 存放定义不同状态下颜色列表的XML文件
  /res/drawable/

该目录下存放各种位图文件(如*.png、*.9.png、*.jpg*、.gif)等,除此之外还可是编译成如下各种Drawable对象的XML文件:

BitmapDrawable

NinePatchDrawable对象

StateListDrawable对象

ShapeDrawable对象

AnimationDrawable对象

Drawable的其它各种子类的对象

/res/layout/ 存放各种用户界面的布局文件
/res/menu/ 存放为应用程序定义各种菜单的资源,包括选项菜单、子菜单、上下文菜单资源
/res/raw/ 该目录下存放任意类型的原生资源。在java代码中通过调用Resource对象的openRawResource(int id)方法获取该资源的二进制输入流。

实际上,如果应用程序使用原生资源,推荐把这些原生资源保存到/assrts目录下,然后在应用程序中使用AssetManager来访问这些资源。

/res/values/  存放各种简单的XML文件。这些简单值包括字符串值、整数值、颜色值、数组等。

字符串、整数值、颜色值、数组等各种值都是存放在该目录下,而且这些资源文件的根目录都是<resources.../>元素,当我们为该<resource.../>元素添加不同的子元素则代表不同的资源,例如:

string/integer/bool子元素:代表添加一个字符串值/整数值/boolean值

color子元素:代表添加一个颜色值

array子元素或string-array、int-array子元素:代表添加一个数组

style子元素:代表添加一个样式

dimen:代表添加一个尺寸

由于各种简单值都可以定义在/res/values/目录下的资源文件中,如果在同一份资源文件中定义各种值,势必增加程序维护的难度。为此,Android建议使用不同的文件来存放不同类型的值:

arrays.xml:定义数组资源

colors.xml:定义颜色值资源

dimens.xml:定义尺寸值资源

strings.xml:定义字符串资源

styles.xml:定义样式资源

/res/xml/ 任意的原声XML文件。这些XML文件可在java代码中使用Resources.getXML()访问。

资源的相关类:

int getColor(int id)  //对应res/values/colors.xml 

Drawable getDrawable(int id) //对应res/drawable/

XmlResourceParser getLayout(int id) //对应res/layout/

String getString(int id) 和CharSequence getText(int id) //对应res/values/strings.xml

InputStream openRawResource(int id) //对应res/raw/

void parseBundleExtra (String tagName, AttributeSet attrs, Bundle outBundle) //对应res/xml/

String[] getStringArray(int id) //对应res/values/arrays.xml

float getDimension(int id) //对应res/values/dimens.xml

1. 字符串:/res/values/strings.xml

String str = getResources().getString(R.string.hello);
CharSequence cha = getResources().getText(R.string.app_name);

2.字符串数组:/res/values/arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="flavors">
<item>Vanilla</item>
<item>Chocolate</item>
<item>Strawberry</item>
</string-array>
</resources>
String strs[] = getResources().getStringArray(R.array.flavors);

3.颜色值:/res/values/colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="text_color">#F00</color>
</resources>
getResources().getColor(R.color.code_sended)

4.尺寸值:/res/values/dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="txt_app_title">22sp</dimen>
<dimen name="font_size_10">10sp</dimen>
<dimen name="font_size_12">12sp</dimen>
<dimen name="font_size_14">14sp</dimen>
<dimen name="font_size_16">16sp</dimen>
</resources>
float myDimen = getResources().getDimension(R.dimen.dimen标签name属性的名字);

5.简单的Drawable图形:/res/drawable/drawables.xml

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<drawable name="red_rect">#F00</drawable>
</resources>
ColorDrawable myDraw = (ColorDrawable)getResources().getDrawable(R.drawable.red_rect);

参考:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0204/838.html

Android开发(四)——Android中的颜色的更多相关文章

  1. Android开发:Android Studio开发环境配置

    一.android studio下载: 1.Windows版: 下载地址:https://pan.baidu.com/s/1-sg4dN_2B5nn2YJf-C7XLQ 提取码:yedc 2.Mac版 ...

  2. AllJoyn+Android开发案例-android跨设备调用方法

    AllJoyn+Android开发案例-android跨设备调用方法 项目须要涉及AllJoyn开源物联网框架.前面主要了解了一些AllJoyn主要的概念.像总线,总线附件,总线对象,总线接口这种概念 ...

  3. CSharp程序员学Android开发---3.Android内部元素不填充BUG

    最近公司组织项目组成员开发一个Android项目的Demo,之前没有人有Andoid方面的开发经验,都是开发C#的. 虽说项目要求并不是很高,但是对于没有这方面经验的人来说,第一步是最困难的. 项目历 ...

  4. android开发:Android 中自定义View的应用

    大家好我们今天的教程是在Android 教程中自定义View 的学习,对于初学着来说,他们习惯了Android 传统的页面布局方式,如下代码: <?xml version="1.0&q ...

  5. android开发在adapter中使用反射添加元素

    android开发中最常用的控件之一就是listview,伴随listview还要有adapter和放入适配器的item.然后假设其中有一部分item的生成符合一定规律,Item item = new ...

  6. Android开发技巧——设置系统状态栏颜色

    开门见山,先来三张效果图: 然后我们再来讲如何实现以及如何快速地实现. 如何实现 实现设置系统状态栏颜色需要至少在Android 4.4.2(API 19)以上.这是因为,在这个版本以下,没有任何的A ...

  7. Android开发——异步任务中Activity销毁时的问题

    0.  前言 在Android开发中经常会发生Activity的销毁重建,比如用户长时间接听一个电话后回到APP.在Android开发--Fragment知识整理(二)中我们提到了使用Fragment ...

  8. android开发:Android 中自定义属性(attr.xml,TypedArray)的使用

    今天我们的教程是根据前面一节扩展进行的,如果你没有看,请点击 Android高手进阶教程(三)查看第三课,这样跟容易方便你的理解! 在xml 文件里定义控件的属性,我们已经习惯了android:att ...

  9. Android开发:Eclipse中SqliteManager插件使用

    通常开发Android的时候要使用到数据库操作,会遇到下面小问题: 数据库文件在哪?怎样訪问或操作? 能够通过:打开DDMS->File Explorer看到的sqlite数据库在eclipse ...

  10. Android开发(24)---安卓中实现多线程下载(带进度条和百分比)

    当我们学完java中多线程的下载后,可以将它移植到我们的安卓中来,下面是具体实现源码: DownActivity.java package com.example.downloads; import ...

随机推荐

  1. java线程池的应用

    package com.test; import java.util.concurrent.Callable; public class TestThread implements Callable& ...

  2. c语言之函数参数传递之数组篇(转)

    在VC中写程序都习惯了,一般数组作为函数实参时,最常用的方法就是引用和指针的方法,但是到C语言中就没有引用了,还有一种比较常用的方法: #include <stdio.h>void sor ...

  3. 页面生命周期里面还有很东西,如PageHandlerFactory等等这些东东也够吃一壶的,发现每走到一个领域,发现要学的东西实在是太多太多啦,总感觉自己所学的东西只是沧海一粟,走过了这道坎,又是一片海洋,我只能呐喊:生命永不止息,学海无涯----够用就好。

    页面生命周期里面还有很东西,如PageHandlerFactory等等这些东东也够吃一壶的,发现每走到一个领域,发现要学的东西实在是太多太多啦,总感觉自己所学的东西只是沧海一粟,走过了这道坎,又是一片 ...

  4. MySQL数据库知识点整理 (持续更新中)

    一.修改用户密码 格式(在命令行下输入):mysqladmin -u 用户名 -p旧密码 password 新密码 1. 给root添加密码ab12:  mysqladmin -uroot -pass ...

  5. [转]Servlet 单例多线程

    Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在 ...

  6. uefi+GPT分区安装ubuntu[zz]

    现状:1.预装win8的笔记本几乎都是uefi启动模式,配合GPT磁盘分区,于是遇到了“麻烦”不会装了,或者说按照老教程安装,结果失败了.而且有很多人在问怎么解决,其实网上就有嘛,关键词就是“uefi ...

  7. 微信小程序图片宽100%显示并且不变形

    <view class="meiti" style="background-color:red;"> <image src="htt ...

  8. Spring Security教程(四):自定义登录页

    在前面的例子中,登陆页面都是用的Spring Security自己提供的,这明显不符合实际开发场景,同时也没有退出和注销按钮,因此在每次测试的时候都要通过关闭浏览器来注销达到清除session的效果. ...

  9. 手把手教你使用“谷歌云消息服务(GCM)"

    原文: http://android.eoe.cn/topic/summary GCM结构概述-GCM Architectural Overview 快速预览* 一个状态通知允许应用程序通知用户一个事 ...

  10. 微信小程序调用蓝牙功能控制车位锁

    第一次学用微信小程序,项目需要,被逼着研究了一下,功能是调用微信小程序的蓝牙功能,连接上智能车位锁,控制升降,大概步骤及调用的小程序接口API如下: 1.打开蓝牙模块 wx.openBluetooth ...