跟我学android-Android应用结构分析(四)
自动生成的R.java文件说明
public final class R {
public static final class attr {
}
public static final class dimen {
/** Default screen margins, per the Android Design guidelines.
Customize dimensions originally defined in res/values/dimens.xml (such as
screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
*/
public static final int activity_horizontal_margin=0x7f040000;
public static final int activity_vertical_margin=0x7f040001;
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int action_settings=0x7f080002;
public static final int btn_change=0x7f080001;
public static final int tv_info=0x7f080000;
}
public static final class layout {
public static final int activity_main=0x7f030000;
public static final int second_layout=0x7f030001;
}
通过R类中的注释可以看出,R.java是由aapt工具根据应用中的资源文件自动生成的,因此,我们可以把R.java看成一个Android应用的资源字典文件
apt生成R.java文件的规则主要是如下2点:
- 每类资源对应R类的一个内部类。
- 每个具体的资源对应内部类的一个属性。
所以大家请记住,在res里的命名一定要规范,因为他会在R文件里生成对应的属性名称,要符合java命名规范
res目录说明
res 是resource的缩写,该目录存放了Android应用所用的全部资源,包括 图片,布局,字符串资源,颜色资源,尺寸资源等。
Android按照约定,将不同的资源放在不同的文件夹内,这样可以方便aapt工具扫描这些资源,并为他们生成对应的资源清单 R.java
我们打开res/values/strings.xml文件,可以看到该文件的内容非常的简单
<?xml version="1.0" encoding="utf-8"?>
<resources> <string name="app_name">FirstAndroid</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string> </resources>
这个资源文件定义了3个字符串常量,app_name 是一个常量名称,FirstAndroid是常量值。一旦定义了这份资源文件后,Android项目允许分别在java代码、XML代码中使用这份资源文件中定义的字符串资源。
♦ 在Java代码中使用资源
为了能在Java代码里使用资源,aapt会为Android项目生成一个R.java文件,R类里为每份资源定义了一个内部类,其中每个资源对应内部类里的一个int类型的属性。例如上图的strings.xml资源文件,在R文件里生成的内容如下
public static final class string {
public static final int action_settings=0x7f050001;
public static final int app_name=0x7f050000;
public static final int hello_world=0x7f050002;
}
借助R类,在Java代码中 我们就可以通过 R.string.app_name来引用” FirstAndroid”字符串常量
♦ 在XML代码中使用资源
在XML里引用资源更简单,只要按照如下格式来访问即可
@<资源对应的内部类的类名>/<资源的名称>
例如 我现在想让activity_main.xml 这个布局的文本显示我们的app_name
则 修改 activity_main.xml 中 TextView 的属性即可
assets目录说明
原生资源文件夹,在这里的文件不会被aapt生成资源到R文件中去
libs目录说明
库文件夹,一般存放jar,so文件
AndroidManifest.xml文件说明
AndroidManifest.xml 清单文件是每个Android应用程序必须的,它是整个应用程序的全局描述文件,AndroidManifest.xml 清单文件说明了该应用的名称,图标,以及包含的组件等
Androidmanifest清单文件通常包含如下信息:
应用程序的包名,该包名作为应用的唯一标识。
应用程序包含的组件(activity,service等)
应用程序兼容的最低版本
应用程序使用系统所需的权限声明
下面是一份简单的Androidmanifest清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zy.android.firstandroid"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.zy.android.firstandroid.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>
权限说明
一个Android应用可能需要权限才能调用Android系统的功能
声明运行该应用本身需要的权限
通过为<manifest …/>元素添加<uses-permission…/>子元素即可为本应用声明权限。
例如我们的程序需要访问网络,则需要声明网络权限
<!-- 访问网络权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
其实权限的用法并不难,大家可以在官网上查找到 android的所有需要权限。这里就不给大家列出来了。
跟我学android-Android应用结构分析(四)的更多相关文章
- Android Animation学习(四) ApiDemos解析:多属性动画
Android Animation学习(四) ApiDemos解析:多属性动画 如果想同时改变多个属性,根据前面所学的,比较显而易见的一种思路是构造多个对象Animator , ( Animator可 ...
- Android项目目录结构分析
Android项目目录结构分析 1.HelloWorld项目的目录结构1.1.src文件夹1.2.gen文件夹1.3.Android 2.1文件夹1.4.assets 1.5.res文件夹1.6.An ...
- Android实训案例(四)——关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程!
Android实训案例(四)--关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程! 关于2048,我看到很多大神,比如医生,郭神,所以我也研究了一段时间,还好是研究 ...
- Android高手速成--第四部分 开发工具及测试工具
第四部分 开发工具及测试工具 主要介绍和Android开发工具和测试工具相关的开源项目. 一.开发效率工具 Json2Java根据JSon数据自动生成对应的Java实体类,还支持Parcel.Gson ...
- Android Studio系列教程四--Gradle基础
Android Studio系列教程四--Gradle基础 2014 年 12 月 18 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzhang ...
- Android Bitmap 全面解析(四)图片处理效果对比 ...
对比对象: UIL Volley 官方教程中的方法(此系列教程一里介绍的,ImageLoader的处理方法和官方的差不多) -------------------------------------- ...
- Xamarin.Android开发实践(四)
原文:Xamarin.Android开发实践(四) Xamarin.Android下获取与解析JSON 一.新建项目 1.新建一个Android项目,并命名为为NetJsonList 2.右击引用,选 ...
- android使用篇(四) 注解依赖注入IOC实现绑定控件
在android使用篇(三) MVC模式中提到一个问题: 1) 视图层(View):一般採用XML文件进行界面的描写叙述,使用的时候能够很方便的引入,可是用xml编写了,又须要在Acitvity声明而 ...
- Android bluetooth介绍(四): a2dp connect流程分析
关键词:蓝牙blueZ A2DP.SINK.sink_connect.sink_disconnect.sink_suspend.sink_resume.sink_is_connected.sink_ ...
- Android笔记二十四.Android基于回调的事件处理机制
假设说事件监听机制是一种托付式的事件处理,那么回调机制则与之相反,对于基于回调的事件处理模型来说,事件源和事件监听器是统一的,或者说事件监听器全然消失了,当用户在GUI控件上激发某个事件时,控 ...
随机推荐
- poj2594
特殊的最小路径覆盖回顾一下经典的最小路径覆盖问题是每个点都恰好被一条路径覆盖我们把有向无环图的点拆成i,i',对于原图中边i--->j,连边i-->j'做最大匹配,答案是原图点数-最大匹配 ...
- bzoj3709
首先明显会想到贪心对于那些怪物回血比耗血多的,我们显然应该先打耗血少的那些回血比耗血多的怎么办呢?由于不管怎么打(假设体力负数了还能打),最终体力是一定,我们从最终体力倒推,相当于先吃药掉血,打怪物回 ...
- CSS样式中字体乱码
今天写程序时,明明设置了label标签的属性font-family:"微软雅黑"的,但是字体的显示的效果就是宋体,后来查看了一下网页源代码,结果发现设置的字体为中文的都是乱码,难怪 ...
- UVA-10735 - Euler Circuit(混合欧拉回路输出)
题意:给你一个图,有N个点,M条边,这M条边有的是单向的,有的是双向的. 问你能否找出一条欧拉回路,使得每条边都只经过一次! 分析: 下面转自别人的题解: 把该图的无向边随便定向,然后计算每个点的入度 ...
- 组合数学 UVa 11538 Chess Queen
Problem A Chess Queen Input: Standard Input Output: Standard Output You probably know how the game o ...
- cache的工作原理
http://www.360doc.com/content/11/0307/21/3791508_99049437.shtml TLB(Translation Lookaside Buffer,也称快 ...
- LeetCode--判断二叉树是否对称
主要是检查该二叉树是否是自己的一个镜像(也就是以中心轴对称的) 举例来说,下面显示的就是一个对称的二叉树 1 / \ 2 2 / \ / \ 3 4 4 3 下面显示的就不是一个对称的二叉树了 1 / ...
- 滑雪 (搜索)(dp)(贪心)
以每一点为起点找出所有路径,并求出以此点做为起点的最大路径 求出每个点的最大路径后再找出其中最大的值,输出最大值 #include <stdio.h>#include <string ...
- Period - HDU 1358(next求循环节)
题目大意:有一个长N的字符串,如果前缀Ni是一个完全循环的串(循环次数大于1),输出Ni和它循环了多少次. 分析:输入next的应用,求出来next数组直接判断Ni是否是完全的循环就行了,也就是N ...
- Android网络:开发浏览器(一)——基本的浏览网页功能开发
我们定义这个版本为1.0版本. 首先,因为要制作一个浏览器,那么就不能通过调用内置浏览器来实现网页的浏览功能,但是可以使用WebView组件来进行. 在此之前,我们可以来看看两种网页显示方式: ...