Android程式入口以及專案檔夾的含義和使用總結—入門

來源:互聯網
上載者:User

標籤:bucket   分享圖片   感知   www.   targe   18C   數組   添加   問題   

    • 1 Android程式的入口1.1 Activity類

      在andriod的應用程式中,使用者所感知的都是一個個應用介面,在android程式裡面每個應用介面對應一個 Activity類,這類似於.NET Winform項目中的Form表單。與WinForm中的Form一樣,Activity類也是一個基類,每個視圖介面都是繼承Activity的。下面看一下Activity的擴充類的代碼。

      public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); //執行邏輯代碼 } }

      當Activity進行建立的時候,它會執行onCreate函數,當然,在Activity不同的生命週期中,會執行相應的函數。onCreate函數會在建立的時候被調用,同樣的,當這個Activity介面不可見的時候,又會調用onStop函數。這和WinForm又有些類似,這些函數對應Winform表單的FormLoad和FormClosing事件,但是不一樣的,FormClosing事件內部可以取消該表單的關閉,而Activity卻不可以,這也是很好理解,因為在android程式中,你自己點擊後退鍵,那是肯定會回到前一個介面,當前介面會消失。

      我們可以在程式建立許多個Activity介面類,和我們的WinForm程式一樣,也可以建立多個Form表單介面,那麼問題來了,這麼Activity介面,程式在啟動的時候,應該啟動哪一個?

      1.2 AndroidManifest.xml設定檔

      在WinForm程式中,程式的啟動一般是Program類中的Main 負責啟動第一個程式介面,而在android程式中則是使用設定檔來配置入口的Activity介面。下面是AndroidManifest.xml 設定檔中的代碼。

      <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.helloworld" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="21" /> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".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項目都必須要有的,下面解釋部分節點的含義。

      1. uses-permission :表示使用者需要授權該程式的許可權,上面xml中配置的需要使用者授予訪問網路的許可權。
      2. application : 這個配置節點很重要,它的子節點 activity 就是配置android程式的入口,android:name=".MainActivity" 配置了程式的初始視圖介面為MainActivity (這個MainActivity類在src檔案夾中)。而 action 和 category 節點配置也很關鍵,action節點中的android.intent.action.MAIN表明這個Activity是整個應用程式的進入點;而category中的android.intent.category.LAUNCHER意思是把這個Activity歸屬到載入器類,即把這個Activity標註為自動會載入和啟動的Activity,這樣程式啟動時候就先載入這個Activity了。

      目前理解的andriod程式運行是這樣的。至於內部如何?的,目前涉獵不深,暫不明白。(望高手指點)

      首先,載入程式需要的一個資源,接著讀取設定檔,找到application節點中配置的入口Activity視圖,然後載入該Activity視圖進行顯示。

      2 專案檔夾的含義

      建立一個android的項目之後,就會出現如下的目錄結構。

      主要的目錄有src、gen、assets、bin、res。

      1. src:存放項目的原始碼。
      2. gen:該檔案是建立項目時候自動產生的,裡麵包了一個R.java的靜態類,它裡麵包括很多靜態類(內部類),每個靜態類中的靜態成員名稱都對應res檔案夾中的一個資源名稱,儲存著該資源的索引,方便在代碼中進行擷取資源。
      3. assets:assets檔案夾裡面都儲存原始的檔案格式,在代碼中通過AssetManager來進行訪問。
      4. bin:存放編譯後的apk和資源檔。
      5. res:存放項目需要的資源檔,比如字串,布局,皮膚等,這裡面每個資源的索引都儲存在R.java類中。
      2.1 src

      src檔案主要存放著項目的java原始碼,比如Activity視圖類,還有其他邏輯處理代碼。

      2.2 gen

      gen目錄中的R.java檔案儲存著res檔案中的資源索引。索引都是int類型的。

      從上往下看,array類儲存數組的資源索引,drawable:儲存圖片索引,id:儲存布局檔案中控制項id,layout:儲存布局檔案的索引,string:儲存字串資源的索引。

      注意,R.java這個類是儲存著當前項目中工程師定義的資源索引,而android.R.java,是儲存著android內部預定義好的資源索引。

      2.3 res

      res中有許多檔案夾,不同的檔案存放不同的資源。

      1. drawable:存放圖片資源,每添加一個圖片資源,R.drawble類中對應添加一個圖片索引。不同的drawable檔案夾存放不同解析度的圖片。
      2. layout:存放介面的布局,每一個布局檔案對應R.layout裡面的布局索引,索引名稱與布局檔案名稱一致。
      3. values:裡面存放xml資源檔,每個xml檔案可以存放字串、數組、樣式等資料。xml檔案可以按照自己需要進行建立。

      string.xml檔案中存放了兩個字串資料,那麼在R.string類中會儲存兩個字串資料的索引,索引名稱和字串資源中的name標籤的值一致。

      添加一個數組資源,在R.array類中會添加一個數組資源索引,索引名稱和標籤中name屬性值一致。

      布局中檔案每個控制項的id也會被添加到R.id類中去。其中在為控制項指定id時有兩種方式,一種是@id/btn ,另外一種是@+id/btn ,前一種是R.id類中已經有了這個id定義,後一種是新增一個btn的id索引。

      2.4 assets

      assets檔案夾主要儲存原始的檔案格式,比如我需要在代碼中訪問載入一個html檔案,或者一個txt文檔,那麼就需要把html檔案和txt文檔儲存到assets檔案下。

      3 專案檔夾中各種資源的使用

      第2節已經搞清楚了各種檔案夾中存放何種資源,那麼本小節總結一下如何在程式碼中訪問這些資源檔。(所有的資源索引都已經自動更新到R類中)

      3.1 使用布局檔案

      布局檔案類似wpf的介面布局檔案,如果沒有程式使用它,那它僅僅只是一個xml檔案,我們需要把這個檔案通過Activity的setContentView方法進行渲染之後,它才會顯示到該Activity視圖上,這種設計方式實現了UI和商務邏輯代碼的分離。

      在Activity的onCreate方法中,調用布局檔案,渲染介面。

      setContentView(R.layout.activity_main);//實現介面的渲染

      Activity的setContentView 方法,帶一個參數,該參數就是布局檔案的索引。該方法通過布局檔案索引實現介面綁定。

      擷取布局檔案中的控制項

      TextView myView=(TextView) this.findViewById(R.id.textView1);
      3.2 擷取values檔案夾下的各種資源

      訪問字串資源

      String sstr=this.getResources().getString(R.string.app_name);//擷取app名稱

      訪問數組資源

      int []myarray=this.getResources().getIntArray(R.array.my_array);
      3.3 擷取assets檔案夾下的資源

      在assets檔案中儲存一個html頁面,我們需要在代碼利用WebView控制項載入這個html頁面.

      代碼如下:

      myWebView.loadUrl("file:///android_asset/myblog.html"); //注意擷取檔案的路徑格式 4 總結

      將項目中的各個部分的作用弄清楚對於剛接觸android編程的新手我來說是很重要,這是基礎性的東西,明白了這個才能夠更好的深入android的學習。

    • 以上是

Android程式入口以及專案檔夾的含義和使用總結—入門

      的內容,更多 

義和 檔案夾 入門 入口 以及 Android 總結 程式 項目 使用 

    的內容,請您使用右上方搜尋功能擷取相關資訊。
  • 上一篇 

Android程式入口以及專案檔夾的含義和使用總結—入門

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.