博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android <Android应用开发实战> 资源类型<二>
阅读量:6948 次
发布时间:2019-06-27

本文共 2744 字,大约阅读时间需要 9 分钟。

1.菜单资源

菜单不仅可以在onCreateContextMenu或onCreateOptionsMenu方法中通过代码创建,还可以在res/menu目录中建立相应的菜单资源文件,并在上面两个方法中加载菜单资源;
菜单资源文件必须以<menu>标签作为根节点,每一个菜单项用一个<item>表示,如果要定义子菜单,可以在<item>标签中包含<menu>标签;如果想将多个菜单项划为一组,可以使用<group>包含多个<item>标签;

@Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        MenuInflater inflater = getMenuInflater();        inflater.inflate(R.menu.main, menu);        return true;    }

查看MenuInflater.inflate(int,Menu)

/**     * Inflate a menu hierarchy from the specified XML resource.      *      * @param menuRes Resource ID for an XML layout resource to load (e.g., R.menu.main_activity)     * @param menu The Menu to inflate into. The items and submenus will be added to this Menu.     */    public void inflate(int menuRes, Menu menu) {        XmlResourceParser parser = null;        try {            parser = mContext.getResources().getLayout(menuRes);            AttributeSet attrs = Xml.asAttributeSet(parser);                        parseMenu(parser, attrs, menu);        } catch ...finally {            if (parser != null) parser.close();        }    }

2.样式与主题(style/theme)

>>1.样式style
android中样式和css中样式作用是一样的,都是用于为界面元素定义显示风格,它是一个包含一个或者多个控件属性的集合。
定义样式需要在res/values/styles.xml中进行定义,如下是一个样式的定义:

所有定义的样式都会在R文件中自动生成一个资源ID,加一个点表示样式继承会生成上图所示的资源id;

样式的引用:

>>2.主题Theme

主题应用于整个应用或者activity,样式应用于具体的控件上。主题的应用与样式定义一样,不同的是主题还可以设置窗口的显示风格;主题的引用需要在清单文件中进行引用,如引用到整个应用之上就需要在Application节点中进行配置引用,而引用到单个Activity只需要在此Activity中进行配置引用;

android系统定义了一些属性,如android:theme="@android:style/Theme.Dialog",该主题可以让Activity看起来像一个对话框,更多主题可以在文档reference->android->R.style中查看。当主题里面的样式属性值与样式里面的属性值发生冲突的时候会显示样式里面的值;

3.xml资源

在android中,除上上述的资源之外,还可以直接读取xml资源;

例子:

res/xml/users.xml

Resources res = getResources();        XmlResourceParser p = res.getXml(R.xml.users);        try {            while (p.getEventType() != XmlResourceParser.END_DOCUMENT) {                if (p.getEventType() == XmlResourceParser.START_TAG) {                    if (p.getName().equals("user")) {                        Log.e("tag", "name:" + p.getAttributeValue(null, "name"));                        Log.e("tag", "age:" + p.getAttributeValue(null, "age"));                    }                }                p.next();            }        } catch (XmlPullParserException e) {        } catch (IOException e) {        }

 

4.其它资源

在资源文件中还可以包括尺寸(dimen)、整数(integer)、布尔(bool) 、整形数组资源(integer-array)、资源数组(array)、颜色(color)

TypedArray ta = getResources().obtainTypedArray(int id); // 获取数组资源,包括integer-array、array

Final总结:

除了res/values目录中的资源名,其它目录的资源都会以文件名在R类的相应子类中生成变量;而res/values中的资源会以name属性值为变量名在R类的相应子类中生成变量;

 

转载于:https://www.cnblogs.com/a284628487/p/3139154.html

你可能感兴趣的文章
了解大数据的特点、来源与数据呈现方式
查看>>
spring 组件扫描配置说明component-scan
查看>>
Clarke and five-pointed star
查看>>
设计模式系列2-----C++实现责任链模式(Chain of Responsibility)
查看>>
20189312任方园《网络攻防》第六次作业
查看>>
929. Unique Email Addresses
查看>>
php
查看>>
职场人的“存在主义”哲学
查看>>
全互联结构D***综合配置示例
查看>>
在路上【我与51CTO的故事】
查看>>
演示:外部全局地址与外部局部地址的使用案例
查看>>
Elasticsearch集群监控与报警原理解析
查看>>
离开网易的转型之路2:无悔选择测试之路-路上的抉择、进取
查看>>
2014年中回首与展望
查看>>
局域网共享
查看>>
mysql建表-主键-索引-外键
查看>>
Android Studio第三十期 - 介绍几种网络请求方式写法
查看>>
计划任务导致的邮件系统故障
查看>>
《从零开始学Swift》学习笔记(Day 35)——会使用下标吗?
查看>>
盛大私有化和陈天桥的土皇帝心态
查看>>