




已閱讀5頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Android 課程講義,智能手機(jī)開(kāi)發(fā),4、用戶界面,智能手機(jī)開(kāi)發(fā),浙江大學(xué)計(jì)算機(jī)學(xué)院,3,User Interface用戶界面,說(shuō)明布局Layout 創(chuàng)建菜單Menus 創(chuàng)建對(duì)話Dialogs 處理用戶UI事件 用戶提示 確定風(fēng)格 定制組件 數(shù)據(jù)與界面綁定,浙江大學(xué)計(jì)算機(jī)學(xué)院,4,模擬器屏幕,HVGA-L:480x320橫屏 HVGA-P:320x480豎屏(默認(rèn)) QVGA-L:320x240橫屏 QVGA-P:240x320豎屏 WVGA-L:800x480橫屏,浙江大學(xué)計(jì)算機(jī)學(xué)院,5,UI用戶界面設(shè)計(jì):Icon設(shè)計(jì),應(yīng)用程序需要各種各樣的圖標(biāo)尺寸和定位 Launcher icons要有多樣化的形狀和樣式,但又要形成統(tǒng)一的視覺(jué)風(fēng)格,其尺寸和定位也用統(tǒng)一: 紅色邊框?yàn)閳D標(biāo)尺寸 藍(lán)色邊框是圖形尺寸,比圖標(biāo)尺寸稍小,圖形之外的空間用于顯示陰影和特殊效果。 橙色邊框是另外一種圖形尺寸。兩種類型的圖形尺寸可以達(dá)到統(tǒng)一的視覺(jué)權(quán)重。,浙江大學(xué)計(jì)算機(jī)學(xué)院,6,Icon的風(fēng)格,符合當(dāng)下的流行趨勢(shì),避免過(guò)度使用隱喻。 高度簡(jiǎn)化和夸張,小尺寸圖標(biāo)也能易于識(shí)別,不宜太復(fù)雜。 嘗試抓住程序的主要特征,比如音像作為音樂(lè)的icon。 使用自然的輪廓和形狀,看起來(lái)幾何化和有機(jī)化,不失真實(shí)感。 采用前視角,幾乎沒(méi)有透視,光源在頂部。 不光滑但富有質(zhì)感。,浙江大學(xué)計(jì)算機(jī)學(xué)院,7,UI用戶界面設(shè)計(jì):Widget設(shè)計(jì),Widget是Android 1.5的一個(gè)新特性,允許程序顯示一些常用而又重要的信息在用戶的桌面主屏上 標(biāo)準(zhǔn)的Android系統(tǒng)映像包含了一些示例widgets包括指針時(shí)鐘、音樂(lè)播放器和其他工具如Google搜索欄。 Widget即是可由用戶自己編寫(xiě)的功能控件。 典型的Android Widget有三個(gè)主要組件: 邊框 框架 圖形控件以及其他元素 注意widgets的開(kāi)狀尺寸以便在主屏上顯示,浙江大學(xué)計(jì)算機(jī)學(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é)計(jì)算機(jī)學(xué)院,9,UI用戶界面設(shè)計(jì):Menu設(shè)計(jì),選項(xiàng)菜單Options Menu:活動(dòng)的主菜單。通過(guò)按下設(shè)備菜單鍵來(lái)顯示它。選項(xiàng)菜單包含兩組菜單項(xiàng): 圖標(biāo)菜單Icon Menu 這個(gè)是當(dāng)用戶按下菜單鍵時(shí)最初出現(xiàn)屏幕下方的item集合。它支持最多6個(gè)菜單項(xiàng)。只有這些菜單支持圖標(biāo)而且這些菜單并不支持checkboxes或者radio buttons。 擴(kuò)展菜單Expanded Menu 這是通過(guò)按“更多”菜單顯現(xiàn)出來(lái)的一個(gè)豎向的項(xiàng)目列表。它僅當(dāng)圖標(biāo)菜單過(guò)多時(shí)存在而且是由6個(gè)以及其它選項(xiàng)菜單組成。 上下文菜單Context Menu:浮動(dòng)菜單列表,通常在你長(zhǎng)時(shí)間按在一個(gè)視圖上時(shí)出現(xiàn)(比如一個(gè)列表項(xiàng)) 子菜單Submenu:浮動(dòng)菜單列表,通過(guò)在選項(xiàng)菜單或上下文菜單選擇菜單項(xiàng)顯露出來(lái)。不支持嵌套子菜單。,浙江大學(xué)計(jì)算機(jī)學(xué)院,10,Android UI布局,ViewGroup通過(guò)各種Layout,控制所屬View的顯示位置。,浙江大學(xué)計(jì)算機(jī)學(xué)院,11,Layout,AbsoluteLayout FrameLayout GridView LinearLayout ListLayout RadioGroup TableLayout ,浙江大學(xué)計(jì)算機(jī)學(xué)院,12,顯示圖像,增加ImageView 與原先的TextView,按垂直線性布局。,線性布局 LinearLayout,浙江大學(xué)計(jì)算機(jī)學(xué)院,13,布局,線性布局LinearLayout 垂直:android:orientation=“vertical“ 水平:android:orientation=“horizontal“,浙江大學(xué)計(jì)算機(jī)學(xué)院,14,FrameLayout,在屏幕上故意保留的空白空間,可以填充一個(gè)單獨(dú)的對(duì)象。 所有子元素都釘?shù)狡聊坏淖笊辖?不能為子元素指定位置,浙江大學(xué)計(jì)算機(jī)學(xué)院,15,TableLayout,子元素放入到行與列中 不顯示行、列或是單元格邊界線 單元格不能橫跨行,如HTML 中一樣,浙江大學(xué)計(jì)算機(jī)學(xué)院,16,AbsoluteLayout,指明子元素確切的屏幕(X,Y)坐標(biāo) (0,0)是左上角,下移或右移時(shí),坐標(biāo)值增加 允許元素重疊(但是不推薦) 注意: 一般建議不使用AbsoluteLayout 除非你有很好的理由來(lái)使用它 因?yàn)樗喈?dāng)嚴(yán)格并且在不同的設(shè)備顯示中不能很好地工作,浙江大學(xué)計(jì)算機(jī)學(xué)院,17,Android長(zhǎng)度單位詳解(dp、sp、px、in、pt、mm、dip),android中定義的dimension單位有以下這些: px(Pixels ,像素):對(duì)應(yīng)屏幕上的實(shí)際像素點(diǎn)。 in(Inches ,英寸):屏幕物理長(zhǎng)度單位。 mm(Millimeters ,毫米):屏幕物理長(zhǎng)度單位。 pt(Points ,磅):屏幕物理長(zhǎng)度單位,1/72英寸。 dp(與密度無(wú)關(guān)的像素):邏輯長(zhǎng)度單位,在 160 dpi 屏幕上,1dp=1px=1/160英寸。隨著密度變化,對(duì)應(yīng)的像素?cái)?shù)量也變化,但并沒(méi)有直接的變化比例。 dip:與dp相同,多用于Google示例中。 sp(與密度和字體縮放度無(wú)關(guān)的像素):與dp類似,但是可以根據(jù)用戶的字體大小首選項(xiàng)進(jìn)行縮放。 盡量使用dp作為空間大小單位,sp作為和文字相關(guān)大小單位,浙江大學(xué)計(jì)算機(jī)學(xué)院,18,RelativeLayout,讓子元素指定它們相對(duì)于其他元素的位置(通過(guò)ID 來(lái)指定)或相對(duì)于父布局對(duì)象,跟AbsoluteLayout這個(gè)絕對(duì)坐標(biāo)布局是個(gè)相反。 在RelativeLayout布局里的控件包含豐富的排列屬性: Layout above:控件在指定控件的上方 Layout below:控件在指定控件的下方 Layout to left of。 使用 RelativeLayout布局的時(shí)候,盡少程序運(yùn)行時(shí)做控件布局的更改,因?yàn)?RelativeLayout布局里面的屬性之間,很容易沖突。,浙江大學(xué)計(jì)算機(jī)學(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é)計(jì)算機(jī)學(xué)院,20,字體風(fēng)格Typeface,android.graphics.Typeface實(shí)踐 Typeface.create(Typeface family, int style) 創(chuàng)建一個(gè)混合型新的字體:有4*5 中搭配 Typeface.setTypeface (Typeface tf, int style) 設(shè)置一個(gè)混合型字體:有4*5 中搭配 Typeface.setTypeface(Typeface tf) 設(shè)置一個(gè)只有Typeface 風(fēng)格的字體:有五種形式 字體(4種) BOLD、BOLD_ITALIC、ITALIC、NORMAL 粗體、粗斜體、斜體、普通字體 風(fēng)格(5種) DEFAULT、DEFAULT_BOLD、MONOSPACE、SANS_SERIF、SERIF 默認(rèn)字體、默認(rèn)粗體、單間隔字體、無(wú)襯線字體、襯線字體,浙江大學(xué)計(jì)算機(jī)學(xué)院,21,使用Button,在Main.xml定義一個(gè)Button 在Java代碼中 1.導(dǎo)入Button包 import android.widget.Button 2.聲明一個(gè)Button private Button press 3.利用findViewById()方法獲取main.xml中的Button press=(Button)findViewById(R.id.Button01);,浙江大學(xué)計(jì)算機(jī)學(xué)院,22,使用Button,4.設(shè)置Button的屬性(可以不作) 5.給Button添加事件監(jiān)聽(tīng)器Button.setOnClickListener 6.定義處理事件處理程序,press.setOnClickListener(new OnClickListener() public void onClick(View v) show.setText(“Hi , Google Android!“); show= (TextView)findViewById(R.id.TextView01); );,浙江大學(xué)計(jì)算機(jī)學(xué)院,23,處理用戶輸入:為View設(shè)監(jiān)聽(tīng)器,View.OnClickListener OnClick() View.OnLongClickListener OnLongClick() View.OnFocusChangeListener OnFocusChange() View.OnKeyListener OnKey() View.OnTouchListener OnTouch() View.OnCreateMenuListener OnCreateContextMenu() 為View設(shè)監(jiān)聽(tīng)器以處理某一類型事件,浙江大學(xué)計(jì)算機(jī)學(xué)院,24,進(jìn)程優(yōu)先級(jí)順序, 前臺(tái)進(jìn)程(Active Process): 前臺(tái)Activity、包含正在運(yùn)行的廣播接收器、正在運(yùn)行的服務(wù) 可視進(jìn)程(Visible Process): 包含一個(gè)可視化的Activity 服務(wù)進(jìn)程(Started Service Process): 包含一個(gè)被開(kāi)啟的服務(wù)(處理服務(wù),不是直接可視,例如媒體播放器,網(wǎng)絡(luò)上傳、下載) 后臺(tái)進(jìn)程(Background Process): 包含一個(gè)不可視的Activity(可以在任意時(shí)刻殺死該進(jìn)程來(lái)回收內(nèi)存) 空進(jìn)程(Empty Process): 沒(méi)有持有任何應(yīng)用程序組件,浙江大學(xué)計(jì)算機(jī)學(xué)院,25,Activity狀態(tài)1,active: 當(dāng)一個(gè)Activity 在屏幕的最上層時(shí)(對(duì)堆棧的最頂端),它就是屬于active 或者running 的狀態(tài) paused: 如果一個(gè)Activity 失去焦點(diǎn)(focus)但還看得到它的畫(huà)面(比如:一個(gè)新的Activity 畫(huà)面并不是全屏幕或者它是一個(gè)半透明的情況),那失去焦點(diǎn)的Activity 則處在paused 的狀態(tài)。像這個(gè)失去焦點(diǎn)的Activity它還是完全活著的,并沒(méi)有消失。(活著的意思是指,Activity 自己本身所有的狀態(tài)及數(shù)據(jù)都還是存在的,也跟窗口管理程序window manager 保持聯(lián)系著),像這種paused 的Activity,會(huì)在一種情況下消失,那就是當(dāng)系統(tǒng)的內(nèi)存不夠用之時(shí),系統(tǒng)會(huì)自動(dòng)判斷,將不重要的Activity 移除。,浙江大學(xué)計(jì)算機(jī)學(xué)院,26,Activity狀態(tài)2,stop: 如果一個(gè)Activity 被其它的Activity 完全的遮蓋住時(shí),它仍然保有全部的狀態(tài)及數(shù)據(jù),但因?yàn)樗巡辉俦皇褂谜呖匆?jiàn),所以它的畫(huà)面是被隱藏起來(lái)的(畫(huà)面不需要更新),當(dāng)系統(tǒng)內(nèi)存不足時(shí),這種stop 狀態(tài)的Activity 時(shí)最先被系統(tǒng)考慮拿下來(lái)釋放內(nèi)存的。 finish: 當(dāng)一個(gè)Activity 處于pause 或stop 的狀態(tài)時(shí),系統(tǒng)可以要求Activity 結(jié)束(finish)或直接移除(kill)它。當(dāng)它需要再度呈現(xiàn)在使用者面前時(shí),它必須要能完整的重新啟動(dòng)及回復(fù)先前的狀態(tài)。,浙江大學(xué)計(jì)算機(jī)學(xué)院,27,Activity狀態(tài)轉(zhuǎn)換,Activity狀態(tài)轉(zhuǎn)換,浙江大學(xué)計(jì)算機(jī)學(xué)院,28,Activity狀態(tài)管理,浙江大學(xué)計(jì)算機(jī)學(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é)計(jì)算機(jī)學(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é)計(jì)算機(jī)學(xué)院,31,服務(wù)(Service),特點(diǎn): Service是一段沒(méi)有用戶界面,在后臺(tái)運(yùn)行的程序。 Service可以運(yùn)行在它自己的進(jìn)程,也可以運(yùn)行在其他應(yīng)用程序的上下文context里面,這取決于自身的需要。 其他的組件可以綁定到一個(gè)服務(wù)Service上面,通過(guò)遠(yuǎn)程過(guò)程調(diào)用(RPC)來(lái)調(diào)用這個(gè)方法 例:從播放列表中播放歌曲的媒體播放器。,浙江大學(xué)計(jì)算機(jī)學(xué)院,32,服務(wù)(Service),服務(wù)應(yīng)用: 可使用Context.startService()來(lái)啟動(dòng)一個(gè)service,從而在后臺(tái)運(yùn)行程序。系統(tǒng)將保持這個(gè)service,直到運(yùn)行結(jié)束。 調(diào)用Context.stoptService()結(jié)束,或者Service調(diào)用stopSelf()停止。 startService()可以傳遞參數(shù)給Service。 通過(guò)使用Context.bindService()方法,連接到一個(gè)service 上(如果這個(gè)service 還沒(méi)有運(yùn)行將啟動(dòng)它)。 調(diào)用Context.unbindService()結(jié)束。 當(dāng)連接到一個(gè)service 之后,我們還可以service 提供的接口與它進(jìn)行通訊。 通過(guò)ServiceConnection 訪問(wèn)Service。二者可以混合使用,比如先startServece()再unbindService()。,浙江大學(xué)計(jì)算機(jī)學(xué)院,33,AIDL:Android Interface Definition Language,AIDL是一種接口定義語(yǔ)言。通過(guò)這種語(yǔ)言定義接口后,Eclipse插件(ODT)會(huì)自動(dòng)生成相應(yīng)的Java代碼接口代碼。 編寫(xiě)一個(gè)AIDL服務(wù)的基本步驟: 1. 在Eclipse工程的package目錄中建立一個(gè)擴(kuò)展名為aidl的文件。package目錄就是Java類所在的目錄。該文件的語(yǔ)法類似于Java代碼。aidl文件中定義的是AIDL服務(wù)的接口。這個(gè)接口需要在調(diào)用AIDL服務(wù)的程序中訪問(wèn)。 2. 如果aidl文件的內(nèi)容是正確的,Eclipse插件會(huì)自動(dòng)生成一個(gè)Java接口文件(*.java)。 3. 建立一個(gè)服務(wù)類(Service的子類)。 4. 實(shí)現(xiàn)由aidl文件生成的Java接口。 5. 在AndroidManifest.xml文件中配置AIDL服務(wù),尤其要注意的是,標(biāo)簽的android:name屬性值就是客戶端要引用該服務(wù)的ID,也就是Intent類構(gòu)造方法的參數(shù)值。,浙江大學(xué)計(jì)算機(jī)學(xué)院,34,使用服務(wù)進(jìn)行音樂(lè)播放1,Manifest.xml中的Service定義,浙江大學(xué)計(jì)算機(jī)學(xué)院,35,使用服務(wù)進(jìn)行音樂(lè)播放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é)計(jì)算機(jī)學(xué)院,36,使用服務(wù)進(jìn)行音樂(lè)播放3,Activity 中定義的Intent開(kāi)啟相應(yīng)的Service,startService(new Intent(“+id/START_AUDIO_SERVICE“); stopService(new Intent(“+id/START_AUDIO_SERVICE“);,浙江大學(xué)計(jì)算機(jī)學(xué)院,37,Intent,Intent 是描述應(yīng)用想要做什么,Intent 數(shù)據(jù)結(jié)構(gòu)兩個(gè)最重要的部分是: 動(dòng)作:典型的動(dòng)作類型有:MAIN(活動(dòng)的門戶)、VIEW、PICK、EDIT等。 動(dòng)作對(duì)應(yīng)的數(shù)據(jù):以URI 的形式進(jìn)行表示 例如:要查看某個(gè)人的聯(lián)系方式,你需要?jiǎng)?chuàng)建一個(gè)動(dòng)作類型為VIEW 的Intent,以及一個(gè)表示這個(gè)人的URI。 Android 使用了Intent 這個(gè)特殊類,實(shí)現(xiàn)在屏幕與屏幕之間移動(dòng)。Intent 類用于描述一個(gè)應(yīng)用將會(huì)做什么事。,浙江大學(xué)計(jì)算機(jī)學(xué)院,38,IntentFilter,intentfilter 則用于描述一個(gè)activity(或者IntentReceiver)能夠操作哪些intent。 一個(gè)activity 如果要顯示一個(gè)人的聯(lián)系方式時(shí),需要聲明一個(gè)IntentFilter,這個(gè)IntentFilter 要知道怎么去處理VIEW 動(dòng)作和表示一個(gè)人的URI。 IntentFilter 需要在AndroidManifest.xml 中定義。,浙江大學(xué)計(jì)算機(jī)學(xué)院,39,IntentFilter,通過(guò)解析各種intent,從一個(gè)屏幕導(dǎo)航到另一個(gè)屏幕。 當(dāng)向前導(dǎo)航時(shí),activity 將會(huì)調(diào)用startActivity(IntentmyIntent)方法。 然后,系統(tǒng)會(huì)在所有安裝的應(yīng)用程序中定義的IntentFilter 中查找,找到最匹配Intent 對(duì)應(yīng)的activity。 新的activity 接收到通知后,開(kāi)始運(yùn)行。 當(dāng)s
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 灌云教育城域網(wǎng)培訓(xùn)教材
- 女性健康懷孕醫(yī)學(xué)科普
- 急診科護(hù)士工作總結(jié)模版
- 小兒斜視全麻術(shù)后護(hù)理
- 2024二年級(jí)上黃山奇石教學(xué)設(shè)計(jì)
- 4曹沖稱象 課件
- 醫(yī)學(xué)研究生文獻(xiàn)閱讀匯報(bào)
- 三年級(jí)下冊(cè)《體驗(yàn)下排鍵》教學(xué)設(shè)計(jì)
- 面試技巧培訓(xùn)課件
- 大學(xué)生職業(yè)規(guī)劃大賽《電氣工程及其自動(dòng)化專業(yè)》生涯發(fā)展展示
- 福州市歷史建筑保護(hù)管理辦法(試行)
- JHA及SCL風(fēng)險(xiǎn)評(píng)價(jià)方法講解(參考)
- DB11T 1933-2021 人乳庫(kù)建立與運(yùn)行規(guī)范
- 1.3.1動(dòng)量守恒定律課件(共13張PPT)
- 國(guó)網(wǎng)北京市電力公司授權(quán)委托書(shū)(用電)
- 白黑白裝飾畫(huà)欣賞黑白裝飾畫(huà)的特點(diǎn)黑白裝飾畫(huà)的表現(xiàn)形式黑白裝飾 bb
- 中小學(xué)教育懲戒規(guī)則(試行)全文解讀ppt課件
- 調(diào)度指揮與統(tǒng)計(jì)分析課程教學(xué)設(shè)計(jì)
- 常暗之廂(7規(guī)則-簡(jiǎn)體修正)
- 終端塔基礎(chǔ)預(yù)偏值(抬高值)計(jì)算表格
- 海外醫(yī)療服務(wù)委托合同協(xié)議書(shū)范本模板
評(píng)論
0/150
提交評(píng)論