跟我学android-Android应用结构分析(四)_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 跟我学android-Android应用结构分析(四)

跟我学android-Android应用结构分析(四)

 2014/8/28 16:23:31  IT萌妹子  程序员俱乐部  我要评论(0)
  • 摘要:自动生成的R.java文件说明1publicfinalclassR{2publicstaticfinalclassattr{3}4publicstaticfinalclassdimen{5/**Defaultscreenmargins,pertheAndroidDesignguidelines.67Customizedimensionsoriginallydefinedinres/values/dimens.xml(suchas8screenmargins)forsw720dpdevices
  • 标签:android 应用 分析

自动生成的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应用程序架构之res 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名