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

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

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

 

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

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

那麼真正的app 包含哪些細節的東西呢,都是概念性的東西,可是必須知道。因此 咱們一一羅列出來,並對照關係。數據庫

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

1.Activitywindows

 一個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恢復。app

2.Service ide

 一個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中的一個子元素指定一個位置。後一個子元素將會直接在前一個子元素之上進行覆蓋填充,把它們部份或所有擋住(除非後一個子元素是透明的)。    
三、AbsoluteLayout
   AbsoluteLayout 這個佈局方式很簡單,主要屬性就兩個 layout_x 和 layout_y 分別定義 這個組件的絕對位置。 即,以屏幕左上角爲(0,0)的座標軸的x,y值,當向下或向右移動時,座標值將變大。AbsoluteLayout 沒有頁邊框,容許元素之間互相重疊(儘管不推薦)。咱們一般不推薦使用 AbsoluteLayout ,除非你有正當理由要使用它,由於它使界面代碼太過剛性,以致於在不一樣的設備上可能不能很好地工做。

四、RelativeLayout
    相對佈局能夠理解爲某一個元素爲參照物,來定位的佈局方式。

五、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的各個部件間進行通信的時候,消息承載。

主要用於:一、窗體Activity的數據傳遞  二、服務數據通知 三、組件間進行通信數據傳遞 等

11. Resources

實現對程序的資源文件 ,圖像 、音頻、視頻、文件、動畫菜單、樣式 的操做管理。

12. R.java 文件

當編譯項目的時候,程序包中的資源文件ID標識被放置到程序的R.Java文件中,R class 文件中包含各個資源的int 類型的標識ID。以下圖:

   

 

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

相關文章
相關標籤/搜索