跟我學android-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的所有需要權限。這里就不給大家列出來了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM