自動生成的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的所有需要權限。這里就不給大家列出來了。