Android中的资源访问
Android中的资源是指非代码部分,指外部文件。
assets中保存的一般是原生的文件,例如MP3文件,Android程序不能直接访问,必须通过AssetManager类以二进制流的形式来读取。
res中的资源可以通过R资源类直接访问。
R类是自动生成的,在该类中根据不同的资源类型生成了相应的内部类,该类包含了系统中使用到的所有资源文件的标识。
1.在代码中使用资源文件
在代码中访问资源文件,是通过R类中定义的资源文件类型和资源文件名称来访问的。
具体格式为:
R.资源文件类型.资源文件名称
另外,除了访问用户自定义的资源文件,还可以访问系统中的资源文件。
访问系统中的资源文件的格式为:
android.R. 资源文件类型.资源文件名称
2.在其他资源文件中引用资源文件
经常会在布局文件中引用图片、颜色资源、字符串资源和尺寸资源。
在其他资源中引用资源的一般格式是:
@[包名称:]资源类型/资源名称
使用颜色资源
颜色值定义的开始时一个#号,后面是Alpha-RGB的格式。
例如:
#RGB
#ARGB
#RRGGBB
#AARRGGBB
引用资源格式:
Java代码中:R.color.color_name
XML文件中:@[package:]color/color_name
使用时在res\values\目录下,定义一个colors.xml文件,里面存放颜色名字和颜色值的键值对。
如:
<resources>
<color name="red_bg">#f00</color>
<color name="blue_text">#0000ff</color>
</resources>
其他资源如字符串、尺寸都是类似的方法。
使用字符串资源
创建字符串资源文件strings.xml.里面内容也是键值对
在Java代码中引用字符串资源R.string.string_name
可如下取得:
String str = getString(R.string.string_name).toString();
在xml文件中引用字符串资源:@[package:]string/string_name
使用尺寸资源
尺寸资源被定义在res\values\dimens.xml文件中。
Android中支持的尺寸单位:
单位表示 |
单位名称 |
说明 |
dip |
设备独立像素 |
不同设备不同的显示效果,dip与屏幕密度有关 |
px |
像素 |
屏幕上的真实像素表示,不同设备不同显示屏显示效果相同 |
in |
英尺 |
基于屏幕的物理尺寸 |
mm |
毫米 |
基于屏幕的物理尺寸 |
pt |
点(磅) |
英尺的1/72 |
dp |
和密度无关的像素 |
相对屏幕物理密度的抽象单位 |
sp |
和精度无关的像素 |
和dp类似,与刻度无关的像素,主要处理字体大小 |
引用尺寸资源:
在Java代码中: R.dimen.dimen_name
在xml文件中:@[package:]dimen/dimen_name
使用原始XML资源
XML文件定义在工程的res\xml\目录下,通过Resources.getXML()方法来访问。
获得原始XML文件的思路是,通过getResources().getXml()获得XML原始文件,得到XmlResourceParser对象,通过该对象来判断是文档的开始还是结尾、是某个标签的开始还是结尾,并通过一些获得属性的方法来遍历XML文件,从而访问XML文件的内容。
使用drawables资源
drawable资源是一些图片或者颜色资源,主要用来绘制屏幕,通过Resources.getDrawable()方法获得。
drawable资源分为三类:Bitmap File(位图文件)、Color Drawable(颜色)、Nine-Patch Image(九片图片)。
Android中支持的位图文件有png、jpg和gif。
引用位图资源的格式:
Java代码中:R.drawable.file_name
XML文件中:@[package:]drawable/file_name
使用布局(layout)资源
布局资源是Android中最常用的一种资源,将屏幕中组件的布局方式定义在一个XML文件中,类似于Web中的HTML页面。
布局文件位于res\layout\中,名称任意。Android通过LayoutInflater类将XML文件中的组件解析为可视化的视图组件。
在Activity中,调用Activity.setContentView()方法,将布局文件设置为Activity的界面,使用findViewById()方法来得到布局中的组件。
引用布局文件:
Java代码中:R.layout.my_layout
XML文件中:@[package:]layout/my_layout
使用菜单资源
任何视图组件的创建方式都有两种:一种通过在布局文件中声明创建;另一种通过在代码中创建。
Android中的菜单分为选项菜单、上下文菜单和子菜单,都可以在XML文件中声明定义,在代码中通过MenuInflater类使用。
菜单资源文件也是XML文件,放在工程res\menu\目录下。通过R.menu.my_menu的方式来引用。
典型菜单资源文件的结构:<menu>根元素,在根元素里会嵌套<item>和<group>子元素,<item>元素中也可嵌套<menu>形成子菜单。
Android中的资源访问的更多相关文章
- Android笔记(四十九) Android中的资源访问——asset
1.文件读取方式 AssetManager.open(String filename),返回的是一个InputSteam类型的字节流,这里的filename必须是文件,而不能是文件夹, ...
- Android笔记(四十八) Android中的资源访问——SDCard
访问存储在SD卡中的文件 使用 Environment.getExternalStorageState(); 判断是否存在内存卡 使用 Environment.getExternalStorageDi ...
- Android中的各种访问权限Permission含义
android.permission.EXPAND_STATUS_BAR 允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似Windows Mobile中的托盘程序 android. ...
- 今天给大家分享一下Android中的资源与国际化的问题
摘要:该文章将向大家分享Android中的资源与国际化的问题. 今天给大家分享一下Android中的资源与国际化的问题,通常我们新建一个Android工程,目录结构如下图所示: 我们主要看一下layo ...
- Android中的资源文件
最近复习Android资源文件的内容,留下点记录以备后用. Android中的资源主要是指存放在应用程序或者Framework相应包下/res中的内容.它们可以被本地化,如果必要的话会被编译成二进制文 ...
- Android中的资源与国际化!
Android中的资源与国际化的问题,通常我们新建一个Android工程,目录结构如下图所示: 我们主要看一下layout与values目录,layout里的xml文件的我们应用使用布局的文件,val ...
- Android之旅十六 android中各种资源的使用
android中各种资源的使用: 在android开发中,各种资源的合理使用应该在各自的xml中进行定义,以便反复使用; 字符串资源:strings.xml,xml中引用:@string/XXX,ja ...
- IntelliJ IDEA+SpringBoot中静态资源访问路径陷阱:静态资源访问404
IntelliJ IDEA+SpringBoot中静态资源访问路径陷阱:静态资源访问404 .embody{ padding:10px 10px 10px; margin:0 -20px; borde ...
- [转]android中drawable资源的解释及例子
原文链接: http://blog.csdn.net/wode_dream/article/details/38584693 文章中的内容参考Dev Guide中的Drawable R ...
随机推荐
- 开发ionic准备之安卓模拟器设置(2)
发现这个安卓模拟器设置屏幕还不能太大,太大显示不全,然后整个模拟器不能拖动,所以尽量不要设置太大的分辨率 ,如下即可 如果选安卓4.4然后勾选了其他下面的ok还不能点击的话,这下要去sdk manag ...
- Linux网络编程中tcp_server和tcp_client函数的封装
本文的主要目的是将server套接字和client套接字的获取,做一个简易的封装,使用C语言完成. tcp_server 服务器端fd的获取主要分为以下几步: 1.创建socket,这一步仅仅 ...
- Restful风格的前后端分离
1.概述 ResultFul推荐每个URL能操作具体的资源,而且能准确描述服务器对资源的处理动作,通常服务器对资源支持get/post/put/delete/等,用来实现资源的增删改查.前后端分离的话 ...
- SQL 怎样 远程备份数据库到本地
SQL 怎样 远程备份数据库到本地 --1.启用xp_cmdshell USE master EXEC sp_configure 'show advanced options', 1 RECONFIG ...
- C#中静态方法和非静态方法的区别
静态方法和非静态方法的区别: 1.静态方法不需要类实例化就可以调用,反之非静态方法需要实例化后才能调用: 2.静态方法只能访问静态成员和方法,非静态方法都可以访问: 3.静态方法不能标记为overri ...
- docker与虚拟化的联系与区别
虚拟化技术是一个总称,是一系列实现虚拟技术的统称.从广义上来说,虚拟化技术包括了虚拟机技术和容器技术, 所谓虚拟化技术最大的特点就是将一个真实的机器进行虚拟地分割,然后分割出来的部分可以独立使用 ...
- MySQL_使用时遇到的问题汇总
一.data too long for column 'name' at row 1 1.现象:把数据库的字符集编码设置为utf-8,通过DOS界面向表的某一列插入汉字时会遇到类似 data too ...
- java.lang.NoClassDefFoundError: ch/qos/logback/core/joran/spi/JoranException
问题描述:启动tomcat服务器的时候,报找不到JoranException类的异常 原因:tomcat中没有logback-core-1.1.2.jar包 解决方法:在tomcat中的lib目录添加 ...
- js中的DOM节点
文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法. DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 把上面的代码拆分为Dom节 ...
- centos7.2 开发 部署 .net core
1.centos7.2 安装 nginx官方文档:http://nginx.org/en/linux_packages.html#mainline 创建nginx.repo 文件 Pre-Built ...