自动生成的R.java文件说明

  1. public final class R {
  2. public static final class attr {
  3. }
  4. public static final class dimen {
  5. /** Default screen margins, per the Android Design guidelines.
  6.  
  7. Customize dimensions originally defined in res/values/dimens.xml (such as
  8. screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
  9.  
  10. */
  11. public static final int activity_horizontal_margin=0x7f040000;
  12. public static final int activity_vertical_margin=0x7f040001;
  13. }
  14. public static final class drawable {
  15. public static final int ic_launcher=0x7f020000;
  16. }
  17. public static final class id {
  18. public static final int action_settings=0x7f080002;
  19. public static final int btn_change=0x7f080001;
  20. public static final int tv_info=0x7f080000;
  21. }
  22. public static final class layout {
  23. public static final int activity_main=0x7f030000;
  24. public static final int second_layout=0x7f030001;
  25. }

通过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文件,可以看到该文件的内容非常的简单

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3.  
  4. <string name="app_name">FirstAndroid</string>
  5. <string name="action_settings">Settings</string>
  6. <string name="hello_world">Hello world!</string>
  7.  
  8. </resources>

这个资源文件定义了3个字符串常量,app_name 是一个常量名称,FirstAndroid是常量值。一旦定义了这份资源文件后,Android项目允许分别在java代码、XML代码中使用这份资源文件中定义的字符串资源。

        ♦   在Java代码中使用资源

    为了能在Java代码里使用资源,aapt会为Android项目生成一个R.java文件,R类里为每份资源定义了一个内部类,其中每个资源对应内部类里的一个int类型的属性。例如上图的strings.xml资源文件,在R文件里生成的内容如下

    

  1. public static final class string {
  2. public static final int action_settings=0x7f050001;
  3. public static final int app_name=0x7f050000;
  4. public static final int hello_world=0x7f050002;
  5. }

借助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清单文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.zy.android.firstandroid"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6.  
  7. <uses-sdk
  8. android:minSdkVersion="8"
  9. android:targetSdkVersion="17" />
  10.  
  11. <application
  12. android:allowBackup="true"
  13. android:icon="@drawable/ic_launcher"
  14. android:label="@string/app_name"
  15. android:theme="@style/AppTheme" >
  16. <activity
  17. android:name="com.zy.android.firstandroid.MainActivity"
  18. android:label="@string/app_name" >
  19. <intent-filter>
  20. <action android:name="android.intent.action.MAIN" />
  21.  
  22. <category android:name="android.intent.category.LAUNCHER" />
  23. </intent-filter>
  24. </activity>
  25. </application>
  26.  
  27. </manifest>

 权限说明

一个Android应用可能需要权限才能调用Android系统的功能

声明运行该应用本身需要的权限

通过为<manifest …/>元素添加<uses-permission…/>子元素即可为本应用声明权限。

例如我们的程序需要访问网络,则需要声明网络权限

<!-- 访问网络权限 -->
      <uses-permission android:name="android.permission.INTERNET"/>

其实权限的用法并不难,大家可以在官网上查找到 android的所有需要权限。这里就不给大家列出来了。

跟我学android-Android应用结构分析(四)的更多相关文章

  1. Android Animation学习(四) ApiDemos解析:多属性动画

    Android Animation学习(四) ApiDemos解析:多属性动画 如果想同时改变多个属性,根据前面所学的,比较显而易见的一种思路是构造多个对象Animator , ( Animator可 ...

  2. Android项目目录结构分析

    Android项目目录结构分析 1.HelloWorld项目的目录结构1.1.src文件夹1.2.gen文件夹1.3.Android 2.1文件夹1.4.assets 1.5.res文件夹1.6.An ...

  3. Android实训案例(四)——关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程!

    Android实训案例(四)--关于Game,2048方块的设计,逻辑,实现,编写,加上色彩,分数等深度剖析开发过程! 关于2048,我看到很多大神,比如医生,郭神,所以我也研究了一段时间,还好是研究 ...

  4. Android高手速成--第四部分 开发工具及测试工具

    第四部分 开发工具及测试工具 主要介绍和Android开发工具和测试工具相关的开源项目. 一.开发效率工具 Json2Java根据JSon数据自动生成对应的Java实体类,还支持Parcel.Gson ...

  5. Android Studio系列教程四--Gradle基础

    Android Studio系列教程四--Gradle基础 2014 年 12 月 18 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzhang ...

  6. Android Bitmap 全面解析(四)图片处理效果对比 ...

    对比对象: UIL Volley 官方教程中的方法(此系列教程一里介绍的,ImageLoader的处理方法和官方的差不多) -------------------------------------- ...

  7. Xamarin.Android开发实践(四)

    原文:Xamarin.Android开发实践(四) Xamarin.Android下获取与解析JSON 一.新建项目 1.新建一个Android项目,并命名为为NetJsonList 2.右击引用,选 ...

  8. android使用篇(四) 注解依赖注入IOC实现绑定控件

    在android使用篇(三) MVC模式中提到一个问题: 1) 视图层(View):一般採用XML文件进行界面的描写叙述,使用的时候能够很方便的引入,可是用xml编写了,又须要在Acitvity声明而 ...

  9. Android bluetooth介绍(四): a2dp connect流程分析

    关键词:蓝牙blueZ  A2DP.SINK.sink_connect.sink_disconnect.sink_suspend.sink_resume.sink_is_connected.sink_ ...

  10. Android笔记二十四.Android基于回调的事件处理机制

        假设说事件监听机制是一种托付式的事件处理,那么回调机制则与之相反,对于基于回调的事件处理模型来说,事件源和事件监听器是统一的,或者说事件监听器全然消失了,当用户在GUI控件上激发某个事件时,控 ...

随机推荐

  1. BestCoder Round #51 (div.2)

    明显是无良心的数学round= = 1000 Zball in Tina Town #include<iostream> #include<cstdio> #include&l ...

  2. 【宽搜】BAPC2014 J Jury Jeopardy (Codeforces GYM 100526)

    题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...

  3. 加密解密,CryptoStream()的使用

    一:上图 二:代码 主界面代码 using System; using System.Collections.Generic; using System.ComponentModel; using S ...

  4. C++排序

    浅谈C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析(好戏在后面,有图有真相) 最近一段时间去武汉参加了N多笔试,在几次试题中都出现了排序.偏偏出现了我没怎么看的插入排序, ...

  5. 九度online judge 1543 二叉树

    题目1543:无限完全二叉树的层次遍历 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:389 解决:54 题目描述: 有一棵无限完全二叉树,他的根节点是1/1,且任意一个节点p/q的左儿 ...

  6. RabbitMQ-清空队列中(一个channel或连接中)的Unacknowledged状态的消息

    清空所有:nack 时将参数delivery-tag设为0,multiple设为1. 清空小于等于某delivery-tag的所有消息:nack 时将参数delivery-tag设为正数(介于1和92 ...

  7. Spring Boot 启动原理分析

    https://yq.aliyun.com/articles/6056 转 在spring boot里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启 ...

  8. GitLib

    http://www.360doc.com/content/15/0603/14/21631240_475362133.shtml 原文 http://blog.csdn.net/williamwan ...

  9. mysql5.5 对触发器,函数,存储引擎,事件进行主从复制情况.(转)

       mysql5.5 对触发器,函数,存储引擎,事件进行主从复制情况. 转(http://blog.csdn.net/m582445672/article/details/7670802) 一.My ...

  10. IOS UITextField 设置光标位置

    textField.leftView = [[[UIView alloc] initWithFrame:CGRectMake(, , , )] autorelease]; textField.left ...