Android04-用戶界面上課用.ppt_第1頁
Android04-用戶界面上課用.ppt_第2頁
Android04-用戶界面上課用.ppt_第3頁
Android04-用戶界面上課用.ppt_第4頁
Android04-用戶界面上課用.ppt_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Android 課程講義,智能手機開發(fā),4、用戶界面,智能手機開發(fā),浙江大學(xué)計算機學(xué)院,3,User Interface用戶界面,說明布局Layout 創(chuàng)建菜單Menus 創(chuàng)建對話Dialogs 處理用戶UI事件 用戶提示 確定風(fēng)格 定制組件 數(shù)據(jù)與界面綁定,浙江大學(xué)計算機學(xué)院,4,模擬器屏幕,HVGA-L:480x320橫屏 HVGA-P:320x480豎屏(默認(rèn)) QVGA-L:320x240橫屏 QVGA-P:240x320豎屏 WVGA-L:800x480橫屏,浙江大學(xué)計算機學(xué)院,5,UI用戶界面設(shè)計:Icon設(shè)計,應(yīng)用程序需要各種各樣的圖標(biāo)尺寸和定位 Launcher icons要有多樣化的形狀和樣式,但又要形成統(tǒng)一的視覺風(fēng)格,其尺寸和定位也用統(tǒng)一: 紅色邊框為圖標(biāo)尺寸 藍色邊框是圖形尺寸,比圖標(biāo)尺寸稍小,圖形之外的空間用于顯示陰影和特殊效果。 橙色邊框是另外一種圖形尺寸。兩種類型的圖形尺寸可以達到統(tǒng)一的視覺權(quán)重。,浙江大學(xué)計算機學(xué)院,6,Icon的風(fēng)格,符合當(dāng)下的流行趨勢,避免過度使用隱喻。 高度簡化和夸張,小尺寸圖標(biāo)也能易于識別,不宜太復(fù)雜。 嘗試抓住程序的主要特征,比如音像作為音樂的icon。 使用自然的輪廓和形狀,看起來幾何化和有機化,不失真實感。 采用前視角,幾乎沒有透視,光源在頂部。 不光滑但富有質(zhì)感。,浙江大學(xué)計算機學(xué)院,7,UI用戶界面設(shè)計:Widget設(shè)計,Widget是Android 1.5的一個新特性,允許程序顯示一些常用而又重要的信息在用戶的桌面主屏上 標(biāo)準(zhǔn)的Android系統(tǒng)映像包含了一些示例widgets包括指針時鐘、音樂播放器和其他工具如Google搜索欄。 Widget即是可由用戶自己編寫的功能控件。 典型的Android Widget有三個主要組件: 邊框 框架 圖形控件以及其他元素 注意widgets的開狀尺寸以便在主屏上顯示,浙江大學(xué)計算機學(xué)院,8,User Interface Guidelines,Activity and Task Design Activities are the basic, independent building blocks of applications. As you design your applications UI and feature set, you are free to re-use activities from other applications as if they were yours, to enrich and extend your application. These guidelines describe how activities work, illustrates them with examples, and describes important underlying principles and mechanisms, such as multitasking, activity reuse, intents, the activity stack, and tasks. It covers this all from a high-level design perspective.,浙江大學(xué)計算機學(xué)院,9,UI用戶界面設(shè)計:Menu設(shè)計,選項菜單Options Menu:活動的主菜單。通過按下設(shè)備菜單鍵來顯示它。選項菜單包含兩組菜單項: 圖標(biāo)菜單Icon Menu 這個是當(dāng)用戶按下菜單鍵時最初出現(xiàn)屏幕下方的item集合。它支持最多6個菜單項。只有這些菜單支持圖標(biāo)而且這些菜單并不支持checkboxes或者radio buttons。 擴展菜單Expanded Menu 這是通過按“更多”菜單顯現(xiàn)出來的一個豎向的項目列表。它僅當(dāng)圖標(biāo)菜單過多時存在而且是由6個以及其它選項菜單組成。 上下文菜單Context Menu:浮動菜單列表,通常在你長時間按在一個視圖上時出現(xiàn)(比如一個列表項) 子菜單Submenu:浮動菜單列表,通過在選項菜單或上下文菜單選擇菜單項顯露出來。不支持嵌套子菜單。,浙江大學(xué)計算機學(xué)院,10,Android UI布局,ViewGroup通過各種Layout,控制所屬View的顯示位置。,浙江大學(xué)計算機學(xué)院,11,Layout,AbsoluteLayout FrameLayout GridView LinearLayout ListLayout RadioGroup TableLayout ,浙江大學(xué)計算機學(xué)院,12,顯示圖像,增加ImageView 與原先的TextView,按垂直線性布局。,線性布局 LinearLayout,浙江大學(xué)計算機學(xué)院,13,布局,線性布局LinearLayout 垂直:android:orientation=“vertical“ 水平:android:orientation=“horizontal“,浙江大學(xué)計算機學(xué)院,14,FrameLayout,在屏幕上故意保留的空白空間,可以填充一個單獨的對象。 所有子元素都釘?shù)狡聊坏淖笊辖?不能為子元素指定位置,浙江大學(xué)計算機學(xué)院,15,TableLayout,子元素放入到行與列中 不顯示行、列或是單元格邊界線 單元格不能橫跨行,如HTML 中一樣,浙江大學(xué)計算機學(xué)院,16,AbsoluteLayout,指明子元素確切的屏幕(X,Y)坐標(biāo) (0,0)是左上角,下移或右移時,坐標(biāo)值增加 允許元素重疊(但是不推薦) 注意: 一般建議不使用AbsoluteLayout 除非你有很好的理由來使用它 因為它相當(dāng)嚴(yán)格并且在不同的設(shè)備顯示中不能很好地工作,浙江大學(xué)計算機學(xué)院,17,Android長度單位詳解(dp、sp、px、in、pt、mm、dip),android中定義的dimension單位有以下這些: px(Pixels ,像素):對應(yīng)屏幕上的實際像素點。 in(Inches ,英寸):屏幕物理長度單位。 mm(Millimeters ,毫米):屏幕物理長度單位。 pt(Points ,磅):屏幕物理長度單位,1/72英寸。 dp(與密度無關(guān)的像素):邏輯長度單位,在 160 dpi 屏幕上,1dp=1px=1/160英寸。隨著密度變化,對應(yīng)的像素數(shù)量也變化,但并沒有直接的變化比例。 dip:與dp相同,多用于Google示例中。 sp(與密度和字體縮放度無關(guān)的像素):與dp類似,但是可以根據(jù)用戶的字體大小首選項進行縮放。 盡量使用dp作為空間大小單位,sp作為和文字相關(guān)大小單位,浙江大學(xué)計算機學(xué)院,18,RelativeLayout,讓子元素指定它們相對于其他元素的位置(通過ID 來指定)或相對于父布局對象,跟AbsoluteLayout這個絕對坐標(biāo)布局是個相反。 在RelativeLayout布局里的控件包含豐富的排列屬性: Layout above:控件在指定控件的上方 Layout below:控件在指定控件的下方 Layout to left of。 使用 RelativeLayout布局的時候,盡少程序運行時做控件布局的更改,因為 RelativeLayout布局里面的屬性之間,很容易沖突。,浙江大學(xué)計算機學(xué)院,19,Color顏色,android.graphics.Color 包含顏色值 Color.BLACK Color.BLUE Color.CYAN Color.DKGRAY Color.GRAY Color.GREEN Color.LTGRAY Color.MAGENTA Color.RED Color.TRANSPARENT Color.WHITE Color.YELLOW,浙江大學(xué)計算機學(xué)院,20,字體風(fēng)格Typeface,android.graphics.Typeface實踐 Typeface.create(Typeface family, int style) 創(chuàng)建一個混合型新的字體:有4*5 中搭配 Typeface.setTypeface (Typeface tf, int style) 設(shè)置一個混合型字體:有4*5 中搭配 Typeface.setTypeface(Typeface tf) 設(shè)置一個只有Typeface 風(fēng)格的字體:有五種形式 字體(4種) BOLD、BOLD_ITALIC、ITALIC、NORMAL 粗體、粗斜體、斜體、普通字體 風(fēng)格(5種) DEFAULT、DEFAULT_BOLD、MONOSPACE、SANS_SERIF、SERIF 默認(rèn)字體、默認(rèn)粗體、單間隔字體、無襯線字體、襯線字體,浙江大學(xué)計算機學(xué)院,21,使用Button,在Main.xml定義一個Button 在Java代碼中 1.導(dǎo)入Button包 import android.widget.Button 2.聲明一個Button private Button press 3.利用findViewById()方法獲取main.xml中的Button press=(Button)findViewById(R.id.Button01);,浙江大學(xué)計算機學(xué)院,22,使用Button,4.設(shè)置Button的屬性(可以不作) 5.給Button添加事件監(jiān)聽器Button.setOnClickListener 6.定義處理事件處理程序,press.setOnClickListener(new OnClickListener() public void onClick(View v) show.setText(“Hi , Google Android!“); show= (TextView)findViewById(R.id.TextView01); );,浙江大學(xué)計算機學(xué)院,23,處理用戶輸入:為View設(shè)監(jiān)聽器,View.OnClickListener OnClick() View.OnLongClickListener OnLongClick() View.OnFocusChangeListener OnFocusChange() View.OnKeyListener OnKey() View.OnTouchListener OnTouch() View.OnCreateMenuListener OnCreateContextMenu() 為View設(shè)監(jiān)聽器以處理某一類型事件,浙江大學(xué)計算機學(xué)院,24,進程優(yōu)先級順序, 前臺進程(Active Process): 前臺Activity、包含正在運行的廣播接收器、正在運行的服務(wù) 可視進程(Visible Process): 包含一個可視化的Activity 服務(wù)進程(Started Service Process): 包含一個被開啟的服務(wù)(處理服務(wù),不是直接可視,例如媒體播放器,網(wǎng)絡(luò)上傳、下載) 后臺進程(Background Process): 包含一個不可視的Activity(可以在任意時刻殺死該進程來回收內(nèi)存) 空進程(Empty Process): 沒有持有任何應(yīng)用程序組件,浙江大學(xué)計算機學(xué)院,25,Activity狀態(tài)1,active: 當(dāng)一個Activity 在屏幕的最上層時(對堆棧的最頂端),它就是屬于active 或者running 的狀態(tài) paused: 如果一個Activity 失去焦點(focus)但還看得到它的畫面(比如:一個新的Activity 畫面并不是全屏幕或者它是一個半透明的情況),那失去焦點的Activity 則處在paused 的狀態(tài)。像這個失去焦點的Activity它還是完全活著的,并沒有消失。(活著的意思是指,Activity 自己本身所有的狀態(tài)及數(shù)據(jù)都還是存在的,也跟窗口管理程序window manager 保持聯(lián)系著),像這種paused 的Activity,會在一種情況下消失,那就是當(dāng)系統(tǒng)的內(nèi)存不夠用之時,系統(tǒng)會自動判斷,將不重要的Activity 移除。,浙江大學(xué)計算機學(xué)院,26,Activity狀態(tài)2,stop: 如果一個Activity 被其它的Activity 完全的遮蓋住時,它仍然保有全部的狀態(tài)及數(shù)據(jù),但因為它已不再被使用者看見,所以它的畫面是被隱藏起來的(畫面不需要更新),當(dāng)系統(tǒng)內(nèi)存不足時,這種stop 狀態(tài)的Activity 時最先被系統(tǒng)考慮拿下來釋放內(nèi)存的。 finish: 當(dāng)一個Activity 處于pause 或stop 的狀態(tài)時,系統(tǒng)可以要求Activity 結(jié)束(finish)或直接移除(kill)它。當(dāng)它需要再度呈現(xiàn)在使用者面前時,它必須要能完整的重新啟動及回復(fù)先前的狀態(tài)。,浙江大學(xué)計算機學(xué)院,27,Activity狀態(tài)轉(zhuǎn)換,Activity狀態(tài)轉(zhuǎn)換,浙江大學(xué)計算機學(xué)院,28,Activity狀態(tài)管理,浙江大學(xué)計算機學(xué)院,29,Active、Paused,Active: When an Activity is at the top of the stack, it is the visible, focused, foreground activity that is receiving user input. Android will attempt to keep it alive at all costs, killing Activities further down the stack as needed, to ensure that it has the resources it needs. When another Activity becomes active, this one will be paused. Paused: In some cases, your Activity will be visible but will not have focus; at this point, its paused. This state is reached if a transparent or non-full-screen Activity is active in front of it. When paused, an Activity is treated as if it were active; however, it doesnt receive user input events. In extreme cases, Android will kill a paused Activity to recover resources for the active Activity. When an Activity becomes totally obscured, it becomes stopped.,浙江大學(xué)計算機學(xué)院,30,Stopped、Inactive,Stopped: When an Activity isnt visible, it “stops.” The Activity will remain in memory retaining all state and member information; however, it is now a prime candidate for execution when the system requires memory elsewhere. When an Activity is stopped, its important to save data and the current UI state. Once an Activity has exited or closed, it becomes inactive. Inactive: After an Activity has been killed, and before its been launched, its inactive. Inactive Activities have been removed from the Activity stack and need to be restarted before they can be displayed and used.,浙江大學(xué)計算機學(xué)院,31,服務(wù)(Service),特點: Service是一段沒有用戶界面,在后臺運行的程序。 Service可以運行在它自己的進程,也可以運行在其他應(yīng)用程序的上下文context里面,這取決于自身的需要。 其他的組件可以綁定到一個服務(wù)Service上面,通過遠程過程調(diào)用(RPC)來調(diào)用這個方法 例:從播放列表中播放歌曲的媒體播放器。,浙江大學(xué)計算機學(xué)院,32,服務(wù)(Service),服務(wù)應(yīng)用: 可使用Context.startService()來啟動一個service,從而在后臺運行程序。系統(tǒng)將保持這個service,直到運行結(jié)束。 調(diào)用Context.stoptService()結(jié)束,或者Service調(diào)用stopSelf()停止。 startService()可以傳遞參數(shù)給Service。 通過使用Context.bindService()方法,連接到一個service 上(如果這個service 還沒有運行將啟動它)。 調(diào)用Context.unbindService()結(jié)束。 當(dāng)連接到一個service 之后,我們還可以service 提供的接口與它進行通訊。 通過ServiceConnection 訪問Service。二者可以混合使用,比如先startServece()再unbindService()。,浙江大學(xué)計算機學(xué)院,33,AIDL:Android Interface Definition Language,AIDL是一種接口定義語言。通過這種語言定義接口后,Eclipse插件(ODT)會自動生成相應(yīng)的Java代碼接口代碼。 編寫一個AIDL服務(wù)的基本步驟: 1. 在Eclipse工程的package目錄中建立一個擴展名為aidl的文件。package目錄就是Java類所在的目錄。該文件的語法類似于Java代碼。aidl文件中定義的是AIDL服務(wù)的接口。這個接口需要在調(diào)用AIDL服務(wù)的程序中訪問。 2. 如果aidl文件的內(nèi)容是正確的,Eclipse插件會自動生成一個Java接口文件(*.java)。 3. 建立一個服務(wù)類(Service的子類)。 4. 實現(xiàn)由aidl文件生成的Java接口。 5. 在AndroidManifest.xml文件中配置AIDL服務(wù),尤其要注意的是,標(biāo)簽的android:name屬性值就是客戶端要引用該服務(wù)的ID,也就是Intent類構(gòu)造方法的參數(shù)值。,浙江大學(xué)計算機學(xué)院,34,使用服務(wù)進行音樂播放1,Manifest.xml中的Service定義,浙江大學(xué)計算機學(xué)院,35,使用服務(wù)進行音樂播放2,Service子類中的Player,public void onStart(Intent intent, int startId) super.onStart(intent, startId); player = MediaPlayer.create(this, R.raw.seven_days); player.start(); public void onDestroy() super.onDestroy(); player.stop(); ,浙江大學(xué)計算機學(xué)院,36,使用服務(wù)進行音樂播放3,Activity 中定義的Intent開啟相應(yīng)的Service,startService(new Intent(“+id/START_AUDIO_SERVICE“); stopService(new Intent(“+id/START_AUDIO_SERVICE“);,浙江大學(xué)計算機學(xué)院,37,Intent,Intent 是描述應(yīng)用想要做什么,Intent 數(shù)據(jù)結(jié)構(gòu)兩個最重要的部分是: 動作:典型的動作類型有:MAIN(活動的門戶)、VIEW、PICK、EDIT等。 動作對應(yīng)的數(shù)據(jù):以URI 的形式進行表示 例如:要查看某個人的聯(lián)系方式,你需要創(chuàng)建一個動作類型為VIEW 的Intent,以及一個表示這個人的URI。 Android 使用了Intent 這個特殊類,實現(xiàn)在屏幕與屏幕之間移動。Intent 類用于描述一個應(yīng)用將會做什么事。,浙江大學(xué)計算機學(xué)院,38,IntentFilter,intentfilter 則用于描述一個activity(或者IntentReceiver)能夠操作哪些intent。 一個activity 如果要顯示一個人的聯(lián)系方式時,需要聲明一個IntentFilter,這個IntentFilter 要知道怎么去處理VIEW 動作和表示一個人的URI。 IntentFilter 需要在AndroidManifest.xml 中定義。,浙江大學(xué)計算機學(xué)院,39,IntentFilter,通過解析各種intent,從一個屏幕導(dǎo)航到另一個屏幕。 當(dāng)向前導(dǎo)航時,activity 將會調(diào)用startActivity(IntentmyIntent)方法。 然后,系統(tǒng)會在所有安裝的應(yīng)用程序中定義的IntentFilter 中查找,找到最匹配Intent 對應(yīng)的activity。 新的activity 接收到通知后,開始運行。 當(dāng)s

溫馨提示

  • 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

提交評論