第04章 Android應(yīng)用開發(fā)基礎(chǔ)(6學(xué)時)_第1頁
第04章 Android應(yīng)用開發(fā)基礎(chǔ)(6學(xué)時)_第2頁
第04章 Android應(yīng)用開發(fā)基礎(chǔ)(6學(xué)時)_第3頁
第04章 Android應(yīng)用開發(fā)基礎(chǔ)(6學(xué)時)_第4頁
第04章 Android應(yīng)用開發(fā)基礎(chǔ)(6學(xué)時)_第5頁
已閱讀5頁,還剩102頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、移動平臺及其應(yīng)用第4章 Android應(yīng)用開發(fā)基礎(chǔ)(6學(xué)時)4.1 視圖類View 用戶界面 用戶界面事件 UI設(shè)計4.2 窗口組件Activity4.3 常用Widget控件 TextView EditText Toast Button Dialog ListView4.4 其它Widget控件:日期/時間選擇器 自動完成文本 菜單設(shè)計4.5 狀態(tài)欄消息通知Notification4.6 文件存儲4.7 使用SharedPreferences保存用戶信息4.8 意圖類 Activity組件的顯式調(diào)用與隱式調(diào)用 延期意圖 4.9 注冊應(yīng)用程序需要的權(quán)限 移動平臺及其應(yīng)用4.1.1 Androi

2、d4.1.1 Android界面視圖類界面視圖類移動平臺及其應(yīng)用在Android MVC中,控制器是由Activity組件(詳見第4.2節(jié))完成的,它能夠接受并響應(yīng)程序的外部動作 。移動平臺及其應(yīng)用4.1.2 Android4.1.2 Android用戶界面事件用戶界面事件移動平臺及其應(yīng)用4.1.2 Android4.1.2 Android用戶界面事件用戶界面事件移動平臺及其應(yīng)用鍵盤事件移動平臺及其應(yīng)用按鍵禁用的一個例子【返回】移動平臺及其應(yīng)用移動平臺及其應(yīng)用注意:初學(xué)者應(yīng)先掌握垂直線性布局垂直線性布局、水平線性布局水平線性布局及其嵌套嵌套用法 Activity的UI設(shè)計與ASP.NET窗體設(shè)

3、計類似【返回】移動平臺及其應(yīng)用導(dǎo)入圖片資源方法n 先在res文件夾上右鍵 - 新建 Folder,命名為 drawable圖片資源固定存放位置名字不要更改移動平臺及其應(yīng)用n 接著在res/drawable文件夾上右鍵 - Import - 選擇General下的 File System移動平臺及其應(yīng)用n 下一步,點擊Browse,找到圖片位置,并選中所需圖片文件,F(xiàn)inish。選中圖片移動平臺及其應(yīng)用圖片資源導(dǎo)入完成后自動在R.java注冊(索引)文件夾變化R.Java自動生成自動生成圖片文件的索引移動平臺及其應(yīng)用最終生成的testlayout.xml代碼【返回】布局根元素+:表示要在R.ja

4、va中新建一個索引+id/imageView1:表示在R.id類中創(chuàng)建一個id值為imageView1的索引變量引用圖片資源移動平臺及其應(yīng)用4.2 窗口組件Activityn 每一個顯示屏幕就是一個Activity。n Activity能為用戶提供可視化界面。n 程序通常由多個Activity組成。n Activity有自己的生命周期,由Android系統(tǒng)控制。Activity1(界面1)Activity2(界面2)ActivityN(界面N)其他Java類Android類移動平臺及其應(yīng)用MainActivity.java代碼分析設(shè)置一個Activity的布局界面訪問在R.java中注冊的ac

5、tivity_main.xml布局資源文件Activity一般以 *Activity 命名且首字母大寫繼承Activity生命周期之一(可理解為程序入口)調(diào)用父類的onCreate方法當(dāng)一個Activity被創(chuàng)建時,就能從onCreate的參數(shù)saveInsanceState中獲得狀態(tài)數(shù)據(jù)菜單設(shè)計見第4.4.3小節(jié)子類覆蓋父類方法程序存放的包導(dǎo)入程序所需的包移動平臺及其應(yīng)用Activity及其生命周期n Activity生命周期指Activity從啟動到銷毀的過程。n Activity表現(xiàn)為四種狀態(tài):n 活動狀態(tài)Active:Activity在用戶界面中處于最上層,完全能被用戶看到,能夠與用戶

6、進行交互。n 暫停狀態(tài)Pause:Activity在界面上被部分遮擋,不再處于用戶界面的最上層,且不能夠與用戶進行交互。(如彈出選擇框時)n 停止?fàn)顟B(tài)Stop:Activity被其他Activity全部遮擋,界面完全不能被用戶看到。(如玩游戲時來電了)n 非活動狀態(tài)Dead:Activity沒有啟動或者被finish()。移動平臺及其應(yīng)用Hello工程 回顧系統(tǒng)自動生成的java文件R.java是項目中所有資源的索引文件,資源以(資源id,值)形式存放在對應(yīng)的內(nèi)部類中R.java文件在程序中引用資源時用:R.內(nèi)部類.資源id例如:setContentView(R.layout.activity

7、_main);getResources().getString(R.string.hello_world)在xml布局中則引用:內(nèi)部類/資源idandroid:text=string/hello_world 資源目錄圖片資源布局資源菜單資源值資源值資源是單個映射過去res文件夾下的文件會被映射到R.java中布局資源、菜單資源文件是整體映射過去內(nèi)部類例如例如移動平臺及其應(yīng)用n 比方:墻上鑲嵌了壁櫥,壁櫥放置了各種各樣的物件。Activity和界面布局layout簡潔實用夸張移動平臺及其應(yīng)用Activity和界面布局layoutn 墻就類似Activity,壁櫥就類似layout布局管理器,壁櫥

8、上的物件就類似那些UI元素。n 墻的背后或許還有我們看不見的東西,這些東西可能是Java的實體類、邏輯控制類、網(wǎng)絡(luò)連接類等。移動平臺及其應(yīng)用activity_main.xml布局代碼分析可視化設(shè)計界面自動生成的布局文件TextView組件各種UI組件布局文件通常命名為: activity_*, 其中*對應(yīng)某個Activity移動平臺及其應(yīng)用布局根元素TextView組件嵌在RelativeLayout組件中TextView屬性布局屬性:表示要引用一個資源string/hello_world:表示引用 R.string.hello_world 這個值資源,R.string 類中的值資源來源于 r

9、es/values/strings.xml 文件strings.xml文件這個就是:string/hello_world移動平臺及其應(yīng)用界面布局文件中描述組件的xml語法格式2:組件中嵌入組件 嵌入的其他組件格式1:單個組件簡寫不要掉了結(jié)束符結(jié)束符移動平臺及其應(yīng)用Activity的四種狀態(tài)的變換關(guān)系圖移動平臺及其應(yīng)用Activity棧:后進先出新的按了返回鍵或Activity被finish被系統(tǒng)強制終止移動平臺及其應(yīng)用Activity生命周期的事件回調(diào)函數(shù)n 隨著Activity自身狀態(tài)的變化,Android系統(tǒng)會調(diào)用不同的事件回調(diào)函數(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(); 移動平臺及其應(yīng)用回調(diào)函數(shù)說明函數(shù)函數(shù)說明說明onCreate()Activity啟動后第一個被調(diào)用的函數(shù),常用來進行Activity的初始化,

11、例如創(chuàng)建View、綁定數(shù)據(jù)或恢復(fù)信息等。onStart()當(dāng)Activity顯示在屏幕上時(此刻用戶尚不能交互),該函數(shù)被調(diào)用。onResume()當(dāng)用戶可以與Activity交互時(此時Activity成為前臺程序),被調(diào)用。onPause()當(dāng)Activity進入暫停狀態(tài)時(部分遮擋),該函數(shù)被調(diào)用。主要用來釋放CPU資源、保存持久數(shù)據(jù)、關(guān)閉動畫等。onStop()當(dāng)Activity對用戶不可見后,該函數(shù)被調(diào)用,Activity進入停止?fàn)顟B(tài)。onRestart()當(dāng)Activity從停止stop狀態(tài)進入start狀態(tài)前,調(diào)用該函數(shù)。onDestroy()在Activity被終止前,即進入非

12、活動狀態(tài)前,該函數(shù)被調(diào)用。有兩種情況該函數(shù)會被調(diào)用:(1)當(dāng)程序主動調(diào)用finish()函數(shù);(2)程序被Android系統(tǒng)終結(jié)。移動平臺及其應(yīng)用Activity生命周期圖移動平臺及其應(yīng)用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+/ 組合鍵移動平臺及其應(yīng)用 Override protected void onResume() super.onResume(); Toast.makeText(getApp

14、licationContext(), 恢復(fù), 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、其應(yīng)用 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移動平臺及其應(yīng)用設(shè)置Activity背景 (布局背景)1.

16、 設(shè)置背景色n在string.xml中配置:#000 n在layout文件中設(shè)置屬性:android:background=drawable/bgkcolor或者:直接賦值 android:background=#000移動平臺及其應(yīng)用2. 設(shè)置背景圖片移動平臺及其應(yīng)用主要步驟n 將適當(dāng)大小(如320*480)的圖片導(dǎo)入res/drawable文件夾 此時自動生成資源idn 在Activity的onCreate()方法中添加代碼:R.javathis.getWindow().setBackgroundDrawableResource(R.drawable.bg320_480);設(shè)置背景圖片的方

17、法移動平臺及其應(yīng)用測試1:正常啟動程序onCreateonStartonResume移動平臺及其應(yīng)用測試2:正常啟動程序后點擊 退出程序onPauseonStoponDestroy移動平臺及其應(yīng)用測試3:新啟動一個AVD窗口(5556),給5554撥打電話,之后結(jié)束通話5554:是虛擬電話號碼新AVD窗口:5556【返回】來電時通話結(jié)束onPauseonStoponRestartonStartonResume移動平臺及其應(yīng)用補充幾個:1. 正常啟動后按Home鍵:n onPause onStop2. 按Home鍵后再單擊應(yīng)用進入:n onRestart onStart onResume3. 正

18、常啟動后切換為橫屏(Ctrl+F11):n onPause onStop onDestroy onCreate onStart onResume【返回】移動平臺及其應(yīng)用【返回】移動平臺及其應(yīng)用4.3 Widget常用控件的使用移動平臺及其應(yīng)用移動平臺及其應(yīng)用【返回】移動平臺及其應(yīng)用移動平臺及其應(yīng)用移動平臺及其應(yīng)用移動平臺及其應(yīng)用課堂問題1. 示例中創(chuàng)建的程序放在哪兒?是什么類型的?在哪兒可以體現(xiàn)這個程序是主程序?2. Activity程序的入口在哪兒?3. Activity就是界面嗎?界面文件什么類型,存放在哪兒?4. Activity如何調(diào)用一個界面?實現(xiàn)的語句是什么?5. 一個Activi

19、ty只能使用一個界面嗎?【返回】移動平臺及其應(yīng)用Activity切換不同的界面步驟1:新建布局文件步驟2:修改菜單文件步驟3:為菜單項添加代碼【返回】移動平臺及其應(yīng)用步驟1:新建布局文件n 在layout文件夾上,右鍵 - new - other - 選擇Android XML Layout File 移動平臺及其應(yīng)用n 下一步,輸入布局文件名:testlayout,布局的根元素選擇:RelativeLayout移動平臺及其應(yīng)用n 下一步,配置xml文檔屬性,可以不選擇,直接Finish。自動生成的testlayout.xml文件移動平臺及其應(yīng)用n 將一個ImageView組件拖放到界面上,并

20、設(shè)置屬性。設(shè)置要用的圖片問題:圖片資源如何導(dǎo)入項目?移動平臺及其應(yīng)用4.3.3 Toastn Toast 在應(yīng)用程序上浮動顯示少量信息給用戶,它永遠(yuǎn)不會獲得焦點,不影響用戶的輸入等操作。n 基本用法:n Toast toast=Toast.makeText( 參數(shù)1, 參數(shù)2, 參數(shù)3 ); toast.show(); 當(dāng)前的上下文環(huán)境要顯示的字符串顯示的時間長短getApplicationContext()或用:某個Activity.thisToast.LENGTH_SHORT或 Toast.LENGTH_LONG顯示toast【返回】移動平臺及其應(yīng)用【返回】移動平臺及其應(yīng)用【返回】移動平臺

21、及其應(yīng)用移動平臺及其應(yīng)用移動平臺及其應(yīng)用【返回】移動平臺及其應(yīng)用移動平臺及其應(yīng)用移動平臺及其應(yīng)用移動平臺及其應(yīng)用移動平臺及其應(yīng)用移動平臺及其應(yīng)用【返回】移動平臺及其應(yīng)用移動平臺及其應(yīng)用【返回】移動平臺及其應(yīng)用移動平臺及其應(yīng)用移動平臺及其應(yīng)用【返回】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);移動平臺及其應(yīng)用4.4.3 菜單設(shè)計新菜單默認(rèn)的老菜單移動平臺及其應(yīng)用MainActivity.java菜單代碼分析Activity創(chuàng)建Option類型菜單事件R.javagetMenuInflater(

24、)得到當(dāng)前Activity的MenuInflater對象,該對象提供inflate()方法用于設(shè)置菜單資源。參數(shù)menu可獲得當(dāng)前Activity的菜單對象R.menu.main是res/menu/main.xml文件在R.java中的映射移動平臺及其應(yīng)用菜單資源main.xml代碼分析菜單項R.java兩個主要屬性菜單id、菜單titlemain.xml字符串資源文件res/values/string.xml菜單標(biāo)題是引用string/action_settings這個字符串資源,該資源在res/values/string.xml中定義,這里其實也可以直接賦值(見后)。+:表示要在R.jav

25、a中新建一個索引+id/action_settings:表示在R.id類中創(chuàng)建一個id值為action_settings的索引值移動平臺及其應(yīng)用創(chuàng)建新菜單n 將原來的菜單項注釋掉 :n XML注釋: n 新建2個菜單項:n n n 運行結(jié)果:菜單id引用菜單title(直接賦值也可以)結(jié)束符不要掉MainActivity的新菜單【返回】移動平臺及其應(yīng)用為菜單項添加功能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做分支設(shè)置布局設(shè)置布局【返回】移動平臺及其應(yīng)用4.5 狀態(tài)

27、欄消息通知 Notification移動平臺及其應(yīng)用移動平臺及其應(yīng)用移動平臺及其應(yīng)用【返回】移動平臺及其應(yīng)用4.6 文件存儲移動平臺及其應(yīng)用移動平臺及其應(yīng)用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(); 主要代碼移動平臺及其應(yīng)用/內(nèi)部類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; 移動平臺及其應(yīng)用case R.id.LoadButton: /讀取數(shù)據(jù) String get=; try /文件無擴展名且為應(yīng)用程序私有 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; 【返回】移動平臺及其應(yīng)用【返回】移動平臺及其應(yīng)用4.7 使用SharedPreferences保存用戶信息移動平臺及其應(yīng)用移動平臺及其應(yīng)用移動平臺及其應(yīng)用n Activity之間的數(shù)據(jù)傳遞除了通過intent來傳遞外,還可以使用SharedPreferences來共享數(shù)據(jù)。n SharedPre

32、ferences是一種輕量級數(shù)據(jù)存儲方式,能夠?qū)崿F(xiàn)不同應(yīng)用程序間數(shù)據(jù)共享。 n SharedPreferences使用鍵值對(Key-Value)的方式把簡單數(shù)據(jù)類型(boolean、int、float、long和String)存儲在應(yīng)用程序的私有目錄下自己定義的xml文件中。n 私有目錄是:/data/data/應(yīng)用程序包名/shared_prefs/移動平臺及其應(yīng)用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文件名移動平臺及其應(yīng)用SharedPreferences編程主要步驟(2)讀取數(shù)據(jù): /獲得SharedPreferences對象(如果不存在則新建) SharedPreferences sp = getSharedPreferences(名稱, 訪問模式); String name = sp.

34、getString(Name, DefaultVal); /get方法讀數(shù)據(jù)第2個參數(shù):在無法獲取值的時候使用的缺省值移動平臺及其應(yīng)用SharedPreferences支持三種訪問模式n MODE_PRIVATE (=0,私有):僅創(chuàng)建SharedPreferences的程序有權(quán)限對其進行讀取或?qū)懭?。n MODE_WORLD_READABLE (=1,全局讀):創(chuàng)建程序可以對其進行讀取或?qū)懭?,其它?yīng)用程序只具有讀取操作的權(quán)限,但沒有寫入操作的權(quán)限。n MODE_WORLD_WRITEABLE (=2,全局寫):所有程序都可以對其進行寫入操作,但沒有讀取操作的權(quán)限。移動平臺及其應(yīng)用SharedP

35、references示例當(dāng)前Activity輸入3個值后保存,然后啟動另一個Activity,將保存的值讀取出來顯示。移動平臺及其應(yīng)用保存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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論