Course 2-1-Android Framework介紹,特色與提供的功能

Report
1
Android 現況概述
Android OS Stack
開發環境介紹與熟悉
四大程式元件簡介
Activity
程式基本框架介紹
Intent
Service
Broadcast Receiver
Content Provider
開發演練
View System簡介
Layouts
進階應用介紹
UI s
主程式架構說明&練習
Android 現況概述
Android OS Stack
開發環境介紹與熟悉
四大程式元件簡介
Activity
程式基本框架介紹
Intent
Service
Broadcast Receiver
Content Provider
開發演練
View System簡介
Layouts
進階應用介紹
UI s
主程式架構說明&練習
3
Framework Stack OverView
4
5
Linux Kernel
 Base on Linux 2.6

已修改kernel, 以避免GPL授權問題(連結)
 Linux 版權 GNU General Public License version 2
(GPLv2)
 Driver移動至linux userspace,硬體廠商不需要公開driver
source
 Power Management修改
 針對手機環境
 沒有使用, 就關掉
6
Libraries
 Library以c/c++開發
 屬系統元件, 開發者可以透過Application Framework
來使用這些功能
7
Android Runtime
 Core Libraries
 對應於Java Programming Language
 Dalvik Virtual Machine (簡稱DVM)
 針對手機開發
 Run(綁) on Linux Virtual Memory, multiple
processes
 執行指令精簡(節省記憶體)&CPU效率(not JIT)
 詳細說明, 請看 連結
Application Framework
 Google提供API,此framework內已經具備多種不同的基
礎軟體元件,在開發app時,可直接使用
 內容可參考網頁
 http://developer.android.com/reference/packages.html
9
Applications
 包含內建的應用程式-聯絡人、eMail 、Map 、
Calendar 、簡訊…等等
 從Market下載的程式
 自行開發的程式
10
Applications(cont.)
 使用Java language開發
 編譯完成, 以tool/aapt.exe 包裹為.apk
 Apk ->application
 三種基本特性
 每個application在自己的Linux process中執行
 每個process有自己的Java VM, isolate from other
applications
 每個application權限獨立分開, 不能讀取其他application
的檔案
11
Android 現況概述
Android OS Stack
開發環境介紹與熟悉
四大程式元件簡介
Activity
程式基本框架介紹
Intent
Service
Broadcast Receiver
Content Provider
開發演練
View System簡介
Layouts
進階應用介紹
UI s
主程式架構說明&練習
12
Application Framework上
應用程式常用的四大區塊
 四大元件:
 Activities-管理應用程式顯示畫面的類別

Activity Life Cycle
 Services-服務功能
 Services Life Cycle
 Broadcast receivers -意圖與廣播接收
 Content Provider-內容提供
 溝通橋樑: Intent
13
1.Activity
 包括UI, 以及與user互動
 上面可以放button、list、picture、text…
 UI可動態調整(增加、減少、換位置)
 透過intent跳轉至其他activity
 費時的程式要放到Service, handler…, 超過5秒, 會出現
ANR (Android is Not Responding)
Reference: Component Lifecycles
Activity !!!
Life Cycle
啟動->出現畫面
onCreate()
onStart()
onResume()
關閉畫面->結束
onPause()
onStop()
onDestroy()
Reference: Component Lifecycles
Android 的虛擬機(VM) -主要有四種狀態:
 Active (活動)
 使用者啟動應用程式或 Activity 後,Activity 運行中的狀態
 在 Android 平台上,同一個時刻只會有一個 Activity 處於活動(Active)或運
行(Running)狀態。
Reference: http://code.google.com/p/androidbmi/wiki/LifeCycle
 Paused (暫停)
 「Paused」狀態是當 Activity 暫時暗下來,退到背景
畫面的狀態。
 當我們使用Toast、AlertDialog、或是電話來了時,都
會讓原本運行的 Activity 退到背景畫面。新出現的
Toast、AlertDialog等介面元件蓋住了原來的 Activity
畫面。Activity 處在「Paused」狀態時,使用者無法
與原 Activity 互動。
 Demo => ApiDemo , App/Dialog
17
 Stopped (停止)
 「Stopped」狀態是有其他 Activity 正在執行,而這個
Activity 已經離開螢幕,不再動作的狀態。
 透過長按「Home」鈕,可以叫出所有處於「Stopped
」狀態的應用程式列表。
 在「Stopped」狀態的 Activity,還可以透過「
Notification」來喚醒。
18
 Dead (已回收或未啟動)
 「Dead」狀態是 Activity 尚未被啟動、已經被手動終
止,或已經被系統回收的狀態。
 要手動終止 Activity,可以在程式中呼叫「finish」函
式
 如果是被系統回收,可能是因為記憶體不足了,所以
系統根據記憶體不足時的回收規則,將處於「
Stopped」狀態的 Activity 所佔用的記憶體回收
19
繼續行程時的行為
Intent
 用來描述一個程式想要作些什麼事情
 每個Intent都帶有一個動作(action),並根據不同的動
作去行動
 例
public void onClick()
{
Uri uri = Uri.parse("http://www.nccu.com.tw/");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
 要開啟一個網頁, 由Android去決定誰要開網頁
 Intent Filter : 向系統宣告該Activity可以做甚麼 ?
24
 Demo :
 demo code -> demo_Intent

透過Intent , 達到Activity 之間的切換
25
Service
 長時間於背景執行, 無UI畫面
 可避免ANR的問題
例
 播放音樂
 背景接收網路訊息
 壓縮or解壓縮檔案
 利用bindService(), 讓Activity與Service溝通
26
Broadcast Receiver
 監聽有興趣的Intent
 利用sendBroadcast()啟動一個廣播, 並附上對應參數
 要於5sec.內完成
 可啟動特定Activity or Service or 更新畫面
例
 Android系統於電力狀況有變動時, 傳遞一個電力廣播
 若我們是一個電力容量顯示程式, 則可接收此廣播, 並顯
示於畫面上, 或鈴聲, 或震動
 Demo Code\ demo_BroadcastReceiver
 用DDMS模擬簡訊發送,進行測試
Reference : http://www.cnblogs.com/xirihanlin/archive/2009/08/03/1537402.html
27
Content Provider
 與其他程式分享資料
例
 存取Contact


content://contacts/people/45 (傳回:聯絡人編號45的聯絡人記
錄)
content://contacts/people/ (傳回:全部聯絡人)
 Demo : demo code/demo_ContentProvider
Reference :
http://ysl-paradise.blogspot.com/2008/11/content-provider.html
http://blog.sina.com.cn/s/blog_3f7f41d40100cnax.html
28
上述Android Framework 之下,
所帶來的App特色
1.應用程式一律平等 (Applications)
http://www.youtube.com/watch?v=3aUjukCdPyQ
2.應用程式無界限 (Intent filter)
http://www.youtube.com/watch?v=3LkNlTNHZzE
3.應用程式可輕鬆嵌入網頁 (webView)
http://www.youtube.com/watch?v=Ex7YsQ_YH2U
4.應用程式可以平行執行 (service 機制)
http://www.youtube.com/watch?v=7lScgyXGxwo
Reference: http://www.youtube.com/user/androiddevelopers
Android 現況概述
Android OS Stack
開發環境介紹與熟悉
四大程式元件簡介
Activity
程式基本框架介紹
Intent
Service
Broadcast Receiver
Content Provider
開發演練
View System簡介
Layouts
進階應用介紹
UI s
App權限管理與設定
30
View
31
32
Views
33
View是所有UI(Widget)的父類
別
http://developer.android.com/intl/zh-TW/reference/android/widget/TextView.html
Refer: http://school.brad.tw/mod/resource/view.php?id=384
34
LayOut-決定UI的排版方式
Reference : Declaring Layout.
LayOut
36
Reference : Declaring Layout.
LayOut
Demo: demo code\demo_ChangeLayOut
Reference: ApiDemo ->Views ->Layouts
37
View – Widget
 直接與使用者進行互動的View Object
 EX: Buttons , checkboxes , EditText ,…
 EX: Date Picker , Clock , Zoom Controls
 可以根據需要,在既有的Widget 上建立新的View Object

Ref : Building Custom Components
38
39
40
Tabs
41
42
ImageView
43
ImageSwitcher
44
Progress Bar
45
Radio Group
46
47
Auto-Completion
Api demo/com.example.android.apis.view
48
DatePicker
49
Rating Bar
50
如何讓UI跟使用者產生互動?
 UI Events :
 1. Define an event listener

EX: View.OnClickListener
 View.OnTouchListener
 View.OnKeyListener
 2. register it with the View
51
Android 現況概述
Android OS Stack
開發環境介紹與熟悉
四大程式元件簡介
Activity
程式基本框架介紹
Intent
Service
Broadcast Receiver
Content Provider
開發演練
View System簡介
Layouts
進階應用介紹
UI s
主程式架構說明&練習
52
package com.demo.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
53
public class myMainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
54
練習1.:Button -> 顯示
 Demo code ->pratice00_Button
 Step:
 1. res/-> Layout/-> main.xml

Button , TextView
 程式碼中




2. Button ,TextView實體宣告,
3.透過findViewById 從資源檔中取得對應的介面元件
4.定義onClickListener 事件
5.註冊到Button中
55
//2.
Button btn_MyButton;
TextView txt_MyText;
//3.
btn_MyButton = (Button)findViewById(R.id.Button01);
txt_MyText = (TextView)findViewById(R.id.TextView01);
//5.
btn_MyButton.setOnClickListener(showText);
//4.
private View.OnClickListener showText = new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
txt_MyText.setText("Hello World !");
}
};
練習2
 同上,但顯示文字時,同時也更換顏色,字型大小
 setTextColor()

http://developer.android.com/intl/zhTW/reference/android/widget/TextView.html
 Color

http://developer.android.com/intl/zhTW/reference/android/graphics/Color.html
57
Next
Android 現況概述
進一步介紹開發環境
開發環境介紹與熟悉
Emulator
Debug Tools
程式基本框架介紹
建立第一個App – BMI
Demo Code
開發演練
Plan & Design
Coding- UI描述 與設計
程式流程解讀
與使用者對話- Dialog
Activities & Intent
進階應用介紹
Data Storage
多媒體-圖片與聲音
後續延伸-Web Service

similar documents