版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、移動平臺及其應用第4章 Android應用開發(fā)基礎(6學時)4.1 視圖類View 用戶界面 用戶界面事件 UI設計4.2 窗口組件Activity4.3 常用Widget控件 TextView EditText Toast Button Dialog ListView4.4 其它Widget控件:日期/時間選擇器 自動完成文本 菜單設計4.5 狀態(tài)欄消息通知Notification4.6 文件存儲4.7 使用SharedPreferences保存用戶信息4.8 意圖類 Activity組件的顯式調用與隱式調用 延期意圖 4.9 注冊應用程序需要的權限 移動平臺及其應用4.1.1 Androi
2、d4.1.1 Android界面視圖類界面視圖類移動平臺及其應用在Android MVC中,控制器是由Activity組件(詳見第4.2節(jié))完成的,它能夠接受并響應程序的外部動作 。移動平臺及其應用4.1.2 Android4.1.2 Android用戶界面事件用戶界面事件移動平臺及其應用4.1.2 Android4.1.2 Android用戶界面事件用戶界面事件移動平臺及其應用鍵盤事件移動平臺及其應用按鍵禁用的一個例子【返回】移動平臺及其應用移動平臺及其應用注意:初學者應先掌握垂直線性布局垂直線性布局、水平線性布局水平線性布局及其嵌套嵌套用法 Activity的UI設計與ASP.NET窗體設
3、計類似【返回】移動平臺及其應用導入圖片資源方法n 先在res文件夾上右鍵 - 新建 Folder,命名為 drawable圖片資源固定存放位置名字不要更改移動平臺及其應用n 接著在res/drawable文件夾上右鍵 - Import - 選擇General下的 File System移動平臺及其應用n 下一步,點擊Browse,找到圖片位置,并選中所需圖片文件,F(xiàn)inish。選中圖片移動平臺及其應用圖片資源導入完成后自動在R.java注冊(索引)文件夾變化R.Java自動生成自動生成圖片文件的索引移動平臺及其應用最終生成的testlayout.xml代碼【返回】布局根元素+:表示要在R.ja
4、va中新建一個索引+id/imageView1:表示在R.id類中創(chuàng)建一個id值為imageView1的索引變量引用圖片資源移動平臺及其應用4.2 窗口組件Activityn 每一個顯示屏幕就是一個Activity。n Activity能為用戶提供可視化界面。n 程序通常由多個Activity組成。n Activity有自己的生命周期,由Android系統(tǒng)控制。Activity1(界面1)Activity2(界面2)ActivityN(界面N)其他Java類Android類移動平臺及其應用MainActivity.java代碼分析設置一個Activity的布局界面訪問在R.java中注冊的ac
5、tivity_main.xml布局資源文件Activity一般以 *Activity 命名且首字母大寫繼承Activity生命周期之一(可理解為程序入口)調用父類的onCreate方法當一個Activity被創(chuàng)建時,就能從onCreate的參數(shù)saveInsanceState中獲得狀態(tài)數(shù)據(jù)菜單設計見第4.4.3小節(jié)子類覆蓋父類方法程序存放的包導入程序所需的包移動平臺及其應用Activity及其生命周期n Activity生命周期指Activity從啟動到銷毀的過程。n Activity表現(xiàn)為四種狀態(tài):n 活動狀態(tài)Active:Activity在用戶界面中處于最上層,完全能被用戶看到,能夠與用戶
6、進行交互。n 暫停狀態(tài)Pause:Activity在界面上被部分遮擋,不再處于用戶界面的最上層,且不能夠與用戶進行交互。(如彈出選擇框時)n 停止狀態(tài)Stop:Activity被其他Activity全部遮擋,界面完全不能被用戶看到。(如玩游戲時來電了)n 非活動狀態(tài)Dead:Activity沒有啟動或者被finish()。移動平臺及其應用Hello工程 回顧系統(tǒng)自動生成的java文件R.java是項目中所有資源的索引文件,資源以(資源id,值)形式存放在對應的內部類中R.java文件在程序中引用資源時用:R.內部類.資源id例如:setContentView(R.layout.activity
7、_main);getResources().getString(R.string.hello_world)在xml布局中則引用:內部類/資源idandroid:text=string/hello_world 資源目錄圖片資源布局資源菜單資源值資源值資源是單個映射過去res文件夾下的文件會被映射到R.java中布局資源、菜單資源文件是整體映射過去內部類例如例如移動平臺及其應用n 比方:墻上鑲嵌了壁櫥,壁櫥放置了各種各樣的物件。Activity和界面布局layout簡潔實用夸張移動平臺及其應用Activity和界面布局layoutn 墻就類似Activity,壁櫥就類似layout布局管理器,壁櫥
8、上的物件就類似那些UI元素。n 墻的背后或許還有我們看不見的東西,這些東西可能是Java的實體類、邏輯控制類、網絡連接類等。移動平臺及其應用activity_main.xml布局代碼分析可視化設計界面自動生成的布局文件TextView組件各種UI組件布局文件通常命名為: activity_*, 其中*對應某個Activity移動平臺及其應用布局根元素TextView組件嵌在RelativeLayout組件中TextView屬性布局屬性:表示要引用一個資源string/hello_world:表示引用 R.string.hello_world 這個值資源,R.string 類中的值資源來源于 r
9、es/values/strings.xml 文件strings.xml文件這個就是:string/hello_world移動平臺及其應用界面布局文件中描述組件的xml語法格式2:組件中嵌入組件 嵌入的其他組件格式1:單個組件簡寫不要掉了結束符結束符移動平臺及其應用Activity的四種狀態(tài)的變換關系圖移動平臺及其應用Activity棧:后進先出新的按了返回鍵或Activity被finish被系統(tǒng)強制終止移動平臺及其應用Activity生命周期的事件回調函數(shù)n 隨著Activity自身狀態(tài)的變化,Android系統(tǒng)會調用不同的事件回調函數(shù)(7個):public class MyActivity
10、extends Activity protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); 移動平臺及其應用回調函數(shù)說明函數(shù)函數(shù)說明說明onCreate()Activity啟動后第一個被調用的函數(shù),常用來進行Activity的初始化,
11、例如創(chuàng)建View、綁定數(shù)據(jù)或恢復信息等。onStart()當Activity顯示在屏幕上時(此刻用戶尚不能交互),該函數(shù)被調用。onResume()當用戶可以與Activity交互時(此時Activity成為前臺程序),被調用。onPause()當Activity進入暫停狀態(tài)時(部分遮擋),該函數(shù)被調用。主要用來釋放CPU資源、保存持久數(shù)據(jù)、關閉動畫等。onStop()當Activity對用戶不可見后,該函數(shù)被調用,Activity進入停止狀態(tài)。onRestart()當Activity從停止stop狀態(tài)進入start狀態(tài)前,調用該函數(shù)。onDestroy()在Activity被終止前,即進入非
12、活動狀態(tài)前,該函數(shù)被調用。有兩種情況該函數(shù)會被調用:(1)當程序主動調用finish()函數(shù);(2)程序被Android系統(tǒng)終結。移動平臺及其應用Activity生命周期圖移動平臺及其應用Activity生命周期的示例public class MainActivity extends Activity Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toast.makeTe
13、xt(getApplicationContext(), 創(chuàng)建, Toast.LENGTH_SHORT).show(); Override protected void onStart() super.onStart(); Toast.makeText(getApplicationContext(), 啟動, Toast.LENGTH_SHORT).show(); 備注:創(chuàng)建onStart()等快捷方法在編碼區(qū)用:ALT+/ 組合鍵移動平臺及其應用 Override protected void onResume() super.onResume(); Toast.makeText(getApp
14、licationContext(), 恢復, Toast.LENGTH_SHORT).show(); Override protected void onPause() super.onPause(); Toast.makeText(getApplicationContext(), 暫停, Toast.LENGTH_SHORT).show(); Override protected void onStop() super.onStop(); Toast.makeText(getApplicationContext(), 停止, Toast.LENGTH_SHORT).show(); 移動平臺及
15、其應用 Override protected void onRestart() super.onRestart(); Toast.makeText(getApplicationContext(), 重啟, Toast.LENGTH_SHORT).show(); Override protected void onDestroy() super.onDestroy(); Toast.makeText(getApplicationContext(), 再見, Toast.LENGTH_SHORT).show(); /end activity移動平臺及其應用設置Activity背景 (布局背景)1.
16、 設置背景色n在string.xml中配置:#000 n在layout文件中設置屬性:android:background=drawable/bgkcolor或者:直接賦值 android:background=#000移動平臺及其應用2. 設置背景圖片移動平臺及其應用主要步驟n 將適當大小(如320*480)的圖片導入res/drawable文件夾 此時自動生成資源idn 在Activity的onCreate()方法中添加代碼:R.javathis.getWindow().setBackgroundDrawableResource(R.drawable.bg320_480);設置背景圖片的方
17、法移動平臺及其應用測試1:正常啟動程序onCreateonStartonResume移動平臺及其應用測試2:正常啟動程序后點擊 退出程序onPauseonStoponDestroy移動平臺及其應用測試3:新啟動一個AVD窗口(5556),給5554撥打電話,之后結束通話5554:是虛擬電話號碼新AVD窗口:5556【返回】來電時通話結束onPauseonStoponRestartonStartonResume移動平臺及其應用補充幾個:1. 正常啟動后按Home鍵:n onPause onStop2. 按Home鍵后再單擊應用進入:n onRestart onStart onResume3. 正
18、常啟動后切換為橫屏(Ctrl+F11):n onPause onStop onDestroy onCreate onStart onResume【返回】移動平臺及其應用【返回】移動平臺及其應用4.3 Widget常用控件的使用移動平臺及其應用移動平臺及其應用【返回】移動平臺及其應用移動平臺及其應用移動平臺及其應用移動平臺及其應用課堂問題1. 示例中創(chuàng)建的程序放在哪兒?是什么類型的?在哪兒可以體現(xiàn)這個程序是主程序?2. Activity程序的入口在哪兒?3. Activity就是界面嗎?界面文件什么類型,存放在哪兒?4. Activity如何調用一個界面?實現(xiàn)的語句是什么?5. 一個Activi
19、ty只能使用一個界面嗎?【返回】移動平臺及其應用Activity切換不同的界面步驟1:新建布局文件步驟2:修改菜單文件步驟3:為菜單項添加代碼【返回】移動平臺及其應用步驟1:新建布局文件n 在layout文件夾上,右鍵 - new - other - 選擇Android XML Layout File 移動平臺及其應用n 下一步,輸入布局文件名:testlayout,布局的根元素選擇:RelativeLayout移動平臺及其應用n 下一步,配置xml文檔屬性,可以不選擇,直接Finish。自動生成的testlayout.xml文件移動平臺及其應用n 將一個ImageView組件拖放到界面上,并
20、設置屬性。設置要用的圖片問題:圖片資源如何導入項目?移動平臺及其應用4.3.3 Toastn Toast 在應用程序上浮動顯示少量信息給用戶,它永遠不會獲得焦點,不影響用戶的輸入等操作。n 基本用法:n Toast toast=Toast.makeText( 參數(shù)1, 參數(shù)2, 參數(shù)3 ); toast.show(); 當前的上下文環(huán)境要顯示的字符串顯示的時間長短getApplicationContext()或用:某個Activity.thisToast.LENGTH_SHORT或 Toast.LENGTH_LONG顯示toast【返回】移動平臺及其應用【返回】移動平臺及其應用【返回】移動平臺
21、及其應用移動平臺及其應用移動平臺及其應用【返回】移動平臺及其應用移動平臺及其應用移動平臺及其應用移動平臺及其應用移動平臺及其應用移動平臺及其應用【返回】移動平臺及其應用移動平臺及其應用【返回】移動平臺及其應用移動平臺及其應用移動平臺及其應用【返回】package com.example.autocompletetext;import android.app.Activity;import android.os.Bundle;import android.widget.AutoCompleteTextView; /import android.widget.ArrayAdapter;public
22、 class MainActivity extends Activity private AutoCompleteTextView textView; private static final String autotext = new String China,Canada,India,Italy,Iran,Iraq;Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); textV
23、iew = (AutoCompleteTextView )findViewById(R.id.autoCompleteTextView1); ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.simple_dropdown_item_1line,autotext); textView.setAdapter(adapter);移動平臺及其應用4.4.3 菜單設計新菜單默認的老菜單移動平臺及其應用MainActivity.java菜單代碼分析Activity創(chuàng)建Option類型菜單事件R.javagetMenuInflater(
24、)得到當前Activity的MenuInflater對象,該對象提供inflate()方法用于設置菜單資源。參數(shù)menu可獲得當前Activity的菜單對象R.menu.main是res/menu/main.xml文件在R.java中的映射移動平臺及其應用菜單資源main.xml代碼分析菜單項R.java兩個主要屬性菜單id、菜單titlemain.xml字符串資源文件res/values/string.xml菜單標題是引用string/action_settings這個字符串資源,該資源在res/values/string.xml中定義,這里其實也可以直接賦值(見后)。+:表示要在R.jav
25、a中新建一個索引+id/action_settings:表示在R.id類中創(chuàng)建一個id值為action_settings的索引值移動平臺及其應用創(chuàng)建新菜單n 將原來的菜單項注釋掉 :n XML注釋: n 新建2個菜單項:n n n 運行結果:菜單id引用菜單title(直接賦值也可以)結束符不要掉MainActivity的新菜單【返回】移動平臺及其應用為菜單項添加功能n 在MainActivity.java中添加如下代碼:Overridepublic boolean onOptionsItemSelected(MenuItem item) Toast.makeText( MainActivit
26、y.this, 選中 + item.getTitle(), Toast.LENGTH_SHORT).show();switch ( item.getItemId() ) case R.id.menu_item1:setContentView(R.layout.activity_main);return true;case R.id.menu_item2:setContentView(R.layout.testlayout);return true;default:return false;菜單項選中項事件用Toast顯示信息根據(jù)菜單id做分支設置布局設置布局【返回】移動平臺及其應用4.5 狀態(tài)
27、欄消息通知 Notification移動平臺及其應用移動平臺及其應用移動平臺及其應用【返回】移動平臺及其應用4.6 文件存儲移動平臺及其應用移動平臺及其應用public class FileDemo extends Activity private EditText SaveText; private Button SaveButton,LoadButton; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.m
28、ain); SaveText=(EditText)findViewById(R.id.phone_text); SaveButton = (Button)findViewById(R.id.SaveButton); LoadButton = (Button)findViewById(R.id.LoadButton); SaveButton.setOnClickListener(new ButtonListener(); LoadButton.setOnClickListener(new ButtonListener(); 主要代碼移動平臺及其應用/內部類private class Button
29、Listener implements OnClickListener Override public void onClick(View v) switch (v.getId() case R.id.SaveButton: /保存數(shù)據(jù) String saveinfo = SaveText.getText().toString().trim(); FileOutputStream fos; try fos = openFileOutput(text, MODE_APPEND); / fos.write(saveinfo.getBytes(); / fos.close(); catch (Exc
30、eption e) e.printStackTrace(); Toast.makeText(FileDemo.this,數(shù)據(jù)保存成功,Toast.LENGTH_LONG).show(); break; 移動平臺及其應用case R.id.LoadButton: /讀取數(shù)據(jù) String get=; try /文件無擴展名且為應用程序私有 FileInputStream fis=openFileInput(text); byte buffer=new bytefis.available(); /available()返回一次可以讀取到的數(shù)據(jù)長度 fis.read(buffer); get = n
31、ew String(buffer); catch (Exception e) e.printStackTrace(); Toast.makeText(FileDemo.this,保存的數(shù)據(jù)是:+get, Toast.LENGTH_LONG).show(); break; default: break; 【返回】移動平臺及其應用【返回】移動平臺及其應用4.7 使用SharedPreferences保存用戶信息移動平臺及其應用移動平臺及其應用移動平臺及其應用n Activity之間的數(shù)據(jù)傳遞除了通過intent來傳遞外,還可以使用SharedPreferences來共享數(shù)據(jù)。n SharedPre
32、ferences是一種輕量級數(shù)據(jù)存儲方式,能夠實現(xiàn)不同應用程序間數(shù)據(jù)共享。 n SharedPreferences使用鍵值對(Key-Value)的方式把簡單數(shù)據(jù)類型(boolean、int、float、long和String)存儲在應用程序的私有目錄下自己定義的xml文件中。n 私有目錄是:/data/data/應用程序包名/shared_prefs/移動平臺及其應用SharedPreferences編程(1)寫入數(shù)據(jù): /獲得SharedPreferences對象(如果不存在則新建) SharedPreferences sp = getSharedPreferences(名稱, 訪問模式)
33、; /獲得可編輯對象 SharedPreferences.Editor editor = sp.edit(); editor.putString(Name, wustzz); /put方法寫數(shù)據(jù)(key-value) /一定要提交才能保存 mit(); SharedPreferences數(shù)據(jù)保存的XML文件名移動平臺及其應用SharedPreferences編程主要步驟(2)讀取數(shù)據(jù): /獲得SharedPreferences對象(如果不存在則新建) SharedPreferences sp = getSharedPreferences(名稱, 訪問模式); String name = sp.
34、getString(Name, DefaultVal); /get方法讀數(shù)據(jù)第2個參數(shù):在無法獲取值的時候使用的缺省值移動平臺及其應用SharedPreferences支持三種訪問模式n MODE_PRIVATE (=0,私有):僅創(chuàng)建SharedPreferences的程序有權限對其進行讀取或寫入。n MODE_WORLD_READABLE (=1,全局讀):創(chuàng)建程序可以對其進行讀取或寫入,其它應用程序只具有讀取操作的權限,但沒有寫入操作的權限。n MODE_WORLD_WRITEABLE (=2,全局寫):所有程序都可以對其進行寫入操作,但沒有讀取操作的權限。移動平臺及其應用SharedP
35、references示例當前Activity輸入3個值后保存,然后啟動另一個Activity,將保存的值讀取出來顯示。移動平臺及其應用保存SharedPreferences數(shù)據(jù)final EditText et1=(EditText)findViewById(R.id.editText1);final EditText et2=(EditText)findViewById(R.id.editText2);final EditText et3=(EditText)findViewById(R.id.editText3);Button bt1= (Button)findViewById(R.id.
36、button1);bt1.setOnClickListener(new View.OnClickListener() Override public void onClick(View arg0) SharedPreferences sp = getSharedPreferences(MyInfo, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE); SharedPreferences.Editor editor = sp.edit(); editor.putString(username, et1.getText().toString(); editor.pu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個人股份轉讓與清算服務協(xié)議范本4篇
- 2025年離婚手續(xù)辦理與婚姻解除后財產清算及分配合同3篇
- 2025年度個人與銀行消費貸款合同(二零二五版)4篇
- 建設工程勘察設計合同(2篇)
- 初三學習策略講解模板
- 二零二五年度智能設備模具定制加工合同范本4篇
- 音樂核心素養(yǎng)課程設計
- 二零二五年度門診藥品銷售權承包合作協(xié)議3篇
- 配電柜拆除施工方案
- 造價管理課程設計
- 2025-2030年中國糖醇市場運行狀況及投資前景趨勢分析報告
- 冬日暖陽健康守護
- 水處理藥劑采購項目技術方案(技術方案)
- 2024級高一上期期中測試數(shù)學試題含答案
- 山東省2024-2025學年高三上學期新高考聯(lián)合質量測評10月聯(lián)考英語試題
- 不間斷電源UPS知識培訓
- 茶室經營方案
- 消費醫(yī)療行業(yè)報告
- 品學課堂新范式
- GB/T 1196-2023重熔用鋁錠
- 幼兒園教師培訓:計數(shù)(數(shù)數(shù))的核心經驗
評論
0/150
提交評論