【Xamarin開發 Android 系列 7】 Android 結構基礎(下)

來源:互聯網
上載者:User

標籤:

*******前期我們不打算進行太深入的東西,省的嚇跑剛進門的,感覺門檻高,so,我們一開始就是跑馬燈一樣,向前躥*************

 

前一篇 我們從大概上知道了 Android的體系,我強調,我們的重點是Application,包括以後的開發 我們也都是開發Application,沒有其他。

我們隊APP有了大概了了接,知道 .apk的組成。

那麼真正的app 包含哪些細節的東西呢,都是概念性的東西,但是必須知道。所以 我們一一羅列出來,並對照關係。

首先我們講解的是其四大組件 Activity  /BroadcastReceiver/ Service /Content Provider

1.Activity

 一個Activity是一個應用程式組件,提供一個螢幕,使用者可以用來互動為了完成某項任務,例如撥號、拍照、發送email、看地圖。每一個activity被給予一個視窗,在上面可以繪製使用者介面。視窗通常充滿螢幕,但也可以小於螢幕而浮於其它視窗之上。Android應用中每一個Activity都必須要在AndroidManifest.xml設定檔中聲明,否則系統將不識別也不執行該Activity

  一個應用程式通常由多個activities組成,他們通常是松耦合關係。通常,一個應用程式中的activity被指定為"main"activity,當第一次啟動應用程式的時候呈現給使用者的那個activity。每一個activity然後可以啟動另一個activity為了完成不同的動作。每一次一個activity啟動,前一個activity就停止了,但是系統保留activity在一個棧上(“back stack”)。當一個新activity啟動,它被推送到棧頂,取得使用者焦點。Back Stack符合簡單“後進先出”原則,所以,當使用者完成當前activity然後點擊back按鈕,它被彈出棧(並且被摧毀),然後之前的activity恢複。

2.Service 

 一個Service 是一段長生命週期的,沒有使用者介面的程式,可以用來開發如監控類程式.類似 windows 服務。可以用來進行 緩衝處理、大資料處理、音樂媒體檔案播放等幕後處理。

比較好的一個例子就是一個正在從播放清單中播放歌曲的媒體播放器。在一個媒體播放器的應用中,應該會有多個activity,讓使用者可以選擇歌曲並播放歌曲。然而,音樂重放這個功能並沒有對應的activity,因為使用者當然會認為在導航到其它螢幕時音樂應該還在播放的。在這個例子中,媒體播放器這個activity 會使用Context.startService()來啟動一個service,從而可以在後台保持音樂的播放。同時,系統也將保持這個service 一直執行,直到這個service 運行結束。另外,我們還可以通過使用Context.bindService()方法,串連到一個service 上(如果這個service 還沒有運行將啟動它)。當串連到一個service 之後,我們還可以service 提供的介面與它進行通訊。拿媒體播放器這個例子來說,我們還可以進行暫停、重播等操作。

3.Content Provider

此組件提供資料內容分發共用,相當於自身的資料的對外一個介面Provider,android平台提供了Content Provider使一個應用程式的指定資料集提供給其他應用程式。這些資料可以儲存在檔案系統中、在一個SQLite資料庫、或以任何其他合理的方式

4.Broadcast receivers

 廣播接收器,顧名思義,就是接受來自系統或者程式的事件通知,然後轉寄通知訂閱者程式。相當於C#中的事件 訂閱 廣播模式。Broadcast receivers訂閱自己需要的事件通知資訊,進行自身的處理,比如 :電池電量過低,藍芽開啟,等等,系統推送訊息到 系統的 事件匯流排,然後由訂閱者擷取事件,(Event-Bus)事件匯流排模式,是我推測的,不知道是不是這種模式,在  WCF基於 Azure開發的時候,提供事件匯流排,對來自不同來源 的訊息進行推播通知,交由特定的訂閱者進行訊息的分發處理。

 

 

5.Views and ViewGroups

在程式介面上你能看到的程式控制項 都是派生來自 View 類,例如:buttons, labels, textboxes, and radio

buttons are all examples of Views,

View是所有UI組件的基類,而ViewGroup是容納這些組件的容器,其本身也是從View派生出來的。AndroidUI介面的一般結構可參見下面的:

 

View 的建立 可以通過編程 或者xml布局的方式進行。我們通常都是在IDE下進行 View  控制項的開發

 

6.User interface widgets 

   介面組件,Android提供基於組件的形式進行友好的介面體驗式開發,組件集在 Framework下的android.widget 

7. Common layouts 布局(五種配置模式)

  1 LinearLayout 線性布局 

線性布局,這個東西,從外框上可以理解為一個div,他首先是一個一個從上往下羅列在螢幕上。每一個LinearLayout裡面又可分為垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。當垂直布局時,每一行就只有一個元素,多個元素依次垂直往下;水平布局時,只有一行,每一個元素依次向右排列。
  linearLayout中有一個重要的屬性 android:layout_weight="1",這個weight在垂直布局時,代表行距;水平的時候代表列寬;weight值越大就越大。

線形布局中預覽和真機中完全一樣。

TextView佔一定的空間,沒有賦值也有一定的寬高,要特別注意。

 2 FrameLayout

      FrameLayout是最簡單的一個布局對象。它被定製為你螢幕上的一個空白備用地區,之後你可以在其中填充一個單一對象 — 比如,一張你要發布的圖片。所有的子項目將會固定在螢幕的左上方;你不能為FrameLayout中的一個子項目指定一個位置。後一個子項目將會直接在前一個子項目之上進行覆蓋填充,把它們部份或全部擋住(除非後一個子項目是透明的)。    
3、AbsoluteLayout
   AbsoluteLayout 這個布局方式很簡單,主要屬性就兩個 layout_x 和 layout_y 分別定義 這個組件的絕對位置。 即,以螢幕左上方為(0,0)的座標軸的x,y值,當向下或向右移動時,座標值將變大。AbsoluteLayout 沒有頁邊框,允許元素之間互相重疊(儘管不推薦)。我們通常不推薦使用 AbsoluteLayout ,除非你有正當理由要使用它,因為它使介面代碼太過剛性,以至於在不同的裝置上可能不能很好地工作。

4、RelativeLayout
    相對布局可以理解為某一個元素為參照物,來定位的布局方式。

5、TableLayout

       表格版面配置類似Html裡面的Table。每一個TableLayout裡面有表格行TableRow,TableRow裡面可以具體定義每一個元素。每個TableRow 都會定義一個 row (事實上,你可以定義其它的子物件,這在下面會解釋到)。TableLayout 容器不會顯示row 、cloumns 或cell 的邊框線。每個 row 擁有0個或多個的cell ;每個cell 擁有一個View 對象。表格由列和行組成許多的儲存格。表格允許儲存格為空白。儲存格不能跨列,這與HTML 中的不一樣。

  TabRow只論行,不論列(列自訂)。

(布局參考來自:http://www.cnblogs.com/chiao/archive/2011/08/24/2152435.html)

 

8.Adapter layouts 調適型配置

List View

Grid View  

兩個調適型配置

 

 

 

9.XML layout files

 頁面配置檔案,一個xml檔案,包含 Tags 來進行布局  控制項的 聲明,每個控制項對應的是 對應 的控制項類,屬性進行控制項的初始化賦值。每個控制項都有唯一的ID,

如:android:id="@+id/searchButton",@ 告訴解析器 這是控制項的Id,+ 表示註冊到資源檔到R.java,在資源檔中,對應的整數數字ID標識到控制項。

10.Intents 

訊息傳遞承載容器,用來在Android的各個組件間進行通訊的時候,訊息承載。

主要用於:1、表單Activity的資料傳遞  2、服務資料通知 3、組件間進行通訊資料傳遞 等

11. Resources

實現對程式的資源檔 ,映像 、音頻、視頻、檔案、動畫菜單、樣式 的操作管理。

12. R.java 檔案

當編譯項目的時候,程式包中的資源檔ID標識被放置到程式的R.Java檔案中,R class 檔案中包含各個資源的int 類型的標識ID。如:

   

 

看完以上的內容,我們對app 的開發的認知基本完畢。再次提示:不會進行過深的層次的講解。待熟練後,可以對各個組件 概念進行更深入的學習。

 

【Xamarin開發 Android 系列 7】 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.