Android04-用戶界面上課用.ppt
《Android04-用戶界面上課用.ppt》由會員分享,可在線閱讀,更多相關(guān)《Android04-用戶界面上課用.ppt(42頁珍藏版)》請在裝配圖網(wǎng)上搜索。
Android課程講義,智能手機開發(fā),4、用戶界面,智能手機開發(fā),浙江大學(xué)計算機學(xué)院,3,UserInterface用戶界面,說明布局Layout創(chuàng)建菜單Menus創(chuàng)建對話Dialogs處理用戶UI事件用戶提示確定風(fēng)格定制組件數(shù)據(jù)與界面綁定,浙江大學(xué)計算機學(xué)院,4,模擬器屏幕,HVGA-L:480 x320橫屏HVGA-P:320 x480豎屏(默認)QVGA-L:320 x240橫屏QVGA-P:240 x320豎屏WVGA-L:800 x480橫屏,浙江大學(xué)計算機學(xué)院,5,UI用戶界面設(shè)計:Icon設(shè)計,應(yīng)用程序需要各種各樣的圖標尺寸和定位Launchericons要有多樣化的形狀和樣式,但又要形成統(tǒng)一的視覺風(fēng)格,其尺寸和定位也用統(tǒng)一:紅色邊框為圖標尺寸藍色邊框是圖形尺寸,比圖標尺寸稍小,圖形之外的空間用于顯示陰影和特殊效果。橙色邊框是另外一種圖形尺寸。兩種類型的圖形尺寸可以達到統(tǒng)一的視覺權(quán)重。,浙江大學(xué)計算機學(xué)院,6,Icon的風(fēng)格,符合當(dāng)下的流行趨勢,避免過度使用隱喻。高度簡化和夸張,小尺寸圖標也能易于識別,不宜太復(fù)雜。嘗試抓住程序的主要特征,比如音像作為音樂的icon。使用自然的輪廓和形狀,看起來幾何化和有機化,不失真實感。采用前視角,幾乎沒有透視,光源在頂部。不光滑但富有質(zhì)感。,浙江大學(xué)計算機學(xué)院,7,UI用戶界面設(shè)計:Widget設(shè)計,Widget是Android1.5的一個新特性,允許程序顯示一些常用而又重要的信息在用戶的桌面主屏上標準的Android系統(tǒng)映像包含了一些示例widgets包括指針時鐘、音樂播放器和其他工具如Google搜索欄。Widget即是可由用戶自己編寫的功能控件。典型的AndroidWidget有三個主要組件:邊框框架圖形控件以及其他元素注意widgets的開狀尺寸以便在主屏上顯示,浙江大學(xué)計算機學(xué)院,8,UserInterfaceGuidelines,ActivityandTaskDesignActivitiesarethebasic,independentbuildingblocksofapplications.AsyoudesignyourapplicationsUIandfeatureset,youarefreetore-useactivitiesfromotherapplicationsasiftheywereyours,toenrichandextendyourapplication.Theseguidelinesdescribehowactivitieswork,illustratesthemwithexamples,anddescribesimportantunderlyingprinciplesandmechanisms,suchasmultitasking,activityreuse,intents,theactivitystack,andtasks.Itcoversthisallfromahigh-leveldesignperspective.,浙江大學(xué)計算機學(xué)院,9,UI用戶界面設(shè)計:Menu設(shè)計,選項菜單OptionsMenu:活動的主菜單。通過按下設(shè)備菜單鍵來顯示它。選項菜單包含兩組菜單項:圖標菜單IconMenu這個是當(dāng)用戶按下菜單鍵時最初出現(xiàn)屏幕下方的item集合。它支持最多6個菜單項。只有這些菜單支持圖標而且這些菜單并不支持checkboxes或者radiobuttons。擴展菜單ExpandedMenu這是通過按“更多”菜單顯現(xiàn)出來的一個豎向的項目列表。它僅當(dāng)圖標菜單過多時存在而且是由6個以及其它選項菜單組成。上下文菜單ContextMenu:浮動菜單列表,通常在你長時間按在一個視圖上時出現(xiàn)(比如一個列表項)子菜單Submenu:浮動菜單列表,通過在選項菜單或上下文菜單選擇菜單項顯露出來。不支持嵌套子菜單。,浙江大學(xué)計算機學(xué)院,10,AndroidUI布局,ViewGroup通過各種Layout,控制所屬View的顯示位置。,浙江大學(xué)計算機學(xué)院,11,Layout,AbsoluteLayoutFrameLayoutGridViewLinearLayoutListLayoutRadioGroupTableLayout………,浙江大學(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)坐標(0,0)是左上角,下移或右移時,坐標值增加允許元素重疊(但是不推薦)注意:一般建議不使用AbsoluteLayout除非你有很好的理由來使用它因為它相當(dāng)嚴格并且在不同的設(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)的像素):邏輯長度單位,在160dpi屏幕上,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這個絕對坐標布局是個相反。在RelativeLayout布局里的控件包含豐富的排列屬性:Layoutabove:控件在指定控件的上方Layoutbelow:控件在指定控件的下方Layouttoleftof。。。。使用RelativeLayout布局的時候,盡少程序運行時做控件布局的更改,因為RelativeLayout布局里面的屬性之間,很容易沖突。,浙江大學(xué)計算機學(xué)院,19,Color顏色,android.graphics.Color包含顏色值Color.BLACKColor.BLUEColor.CYANColor.DKGRAYColor.GRAYColor.GREENColor.LTGRAYColor.MAGENTAColor.REDColor.TRANSPARENTColor.WHITEColor.YELLOW,浙江大學(xué)計算機學(xué)院,20,字體風(fēng)格Typeface,android.graphics.Typeface實踐Typeface.create(Typefacefamily,intstyle)創(chuàng)建一個混合型新的字體:有4*5中搭配Typeface.setTypeface(Typefacetf,intstyle)設(shè)置一個混合型字體:有4*5中搭配Typeface.setTypeface(Typefacetf)設(shè)置一個只有Typeface風(fēng)格的字體:有五種形式字體(4種)BOLD、BOLD_ITALIC、ITALIC、NORMAL粗體、粗斜體、斜體、普通字體風(fēng)格(5種)DEFAULT、DEFAULT_BOLD、MONOSPACE、SANS_SERIF、SERIF默認字體、默認粗體、單間隔字體、無襯線字體、襯線字體,浙江大學(xué)計算機學(xué)院,21,使用Button,在Main.xml定義一個Button在Java代碼中1.導(dǎo)入Button包importandroid.widget.Button2.聲明一個ButtonprivateButtonpress3.利用findViewById()方法獲取main.xml中的Buttonpress=(Button)findViewById(R.id.Button01);,,浙江大學(xué)計算機學(xué)院,22,使用Button,4.設(shè)置Button的屬性(可以不作)5.給Button添加事件監(jiān)聽器Button.setOnClickListener6.定義處理事件處理程序,press.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){show.setText("Hi,GoogleAndroid!");show=(TextView)findViewById(R.id.TextView01);}});,浙江大學(xué)計算機學(xué)院,23,處理用戶輸入:為View設(shè)監(jiān)聽器,View.OnClickListenerOnClick()View.OnLongClickListenerOnLongClick()View.OnFocusChangeListenerOnFocusChange()View.OnKeyListenerOnKey()View.OnTouchListenerOnTouch()View.OnCreateMenuListenerOnCreateContextMenu()為View設(shè)監(jiān)聽器以處理某一類型事件,浙江大學(xué)計算機學(xué)院,24,進程優(yōu)先級順序,①前臺進程(ActiveProcess):前臺Activity、包含正在運行的廣播接收器、正在運行的服務(wù)②可視進程(VisibleProcess):包含一個可視化的Activity③服務(wù)進程(StartedServiceProcess):包含一個被開啟的服務(wù)(處理服務(wù),不是直接可視,例如媒體播放器,網(wǎng)絡(luò)上傳、下載)④后臺進程(BackgroundProcess):包含一個不可視的Activity(可以在任意時刻殺死該進程來回收內(nèi)存)⑤空進程(EmptyProcess):沒有持有任何應(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ù)都還是存在的,也跟窗口管理程序windowmanager保持聯(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:WhenanActivityisatthetopofthestack,itisthevisible,focused,foregroundactivitythatisreceivinguserinput.Androidwillattempttokeepitaliveatallcosts,killingActivitiesfurtherdownthestackasneeded,toensurethatithastheresourcesitneeds.WhenanotherActivitybecomesactive,thisonewillbepaused.Paused:Insomecases,yourActivitywillbevisiblebutwillnothavefocus;atthispoint,it’spaused.Thisstateisreachedifatransparentornon-full-screenActivityisactiveinfrontofit.Whenpaused,anActivityistreatedasifitwereactive;however,itdoesn’treceiveuserinputevents.Inextremecases,AndroidwillkillapausedActivitytorecoverresourcesfortheactiveActivity.WhenanActivitybecomestotallyobscured,itbecomesstopped.,浙江大學(xué)計算機學(xué)院,30,Stopped、Inactive,Stopped:WhenanActivityisn’tvisible,it“stops.”TheActivitywillremaininmemoryretainingallstateandmemberinformation;however,itisnowaprimecandidateforexecutionwhenthesystemrequiresmemoryelsewhere.WhenanActivityisstopped,it’simportanttosavedataandthecurrentUIstate.OnceanActivityhasexitedorclosed,itbecomesinactive.Inactive:AfteranActivityhasbeenkilled,andbeforeit’sbeenlaunched,it’sinactive.InactiveActivitieshavebeenremovedfromtheActivitystackandneedtoberestartedbeforetheycanbedisplayedandused.,浙江大學(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:AndroidInterfaceDefinitionLanguage,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ù),尤其要注意的是,標簽的android:name屬性值就是客戶端要引用該服務(wù)的ID,也就是Intent類構(gòu)造方法的參數(shù)值。,浙江大學(xué)計算機學(xué)院,34,使用服務(wù)進行音樂播放1,Manifest.xml中的Service定義,,浙江大學(xué)計算機學(xué)院,35,使用服務(wù)進行音樂播放2,Service子類中的Player,publicvoidonStart(Intentintent,intstartId){super.onStart(intent,startId);player=MediaPlayer.create(this,R.raw.seven_days);player.start();}publicvoidonDestroy(){super.onDestroy();player.stop();},浙江大學(xué)計算機學(xué)院,36,使用服務(wù)進行音樂播放3,Activity中定義的Intent開啟相應(yīng)的Service,startService(newIntent("@+id/START_AUDIO_SERVICE"));stopService(newIntent("@+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)startActivity方法被調(diào)用將觸發(fā)解析Intent的動作。這個機制提供了兩個關(guān)鍵好處:Activities能夠重復(fù)利用從其它組件中以Intent的形式產(chǎn)生的一個請求;Activities可以在任何時候被一個具有相同IntentFilter的新的Activity取代。,浙江大學(xué)計算機學(xué)院,40,IntentReceiver,IntentReceiver在AndroidManifest.xml中注冊,也可在代碼中使用Context.registerReceiver()進行注冊。當(dāng)一個intentreceiver被觸發(fā)時,應(yīng)用不必對請求調(diào)用intentreceiver,系統(tǒng)會在需要的時候啟動你的應(yīng)用。各種應(yīng)用還可以通過使用Context.broadcastIntent()將自己的intentreceiver廣播給其它應(yīng)用程序。當(dāng)希望應(yīng)用能夠?qū)σ粋€外部的事件(如電話呼入,數(shù)據(jù)網(wǎng)絡(luò)可用,或者某個定時)做出響應(yīng),可以使用一個IntentReceiver。雖然IntentReceiver在感興趣的事件發(fā)生時,會使用NotificationManager通知用戶,但它并不能生成一個UI。,浙江大學(xué)計算機學(xué)院,41,ContentProvider,Android應(yīng)用程序能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件、SQLite數(shù)據(jù)庫中,或是其它有效的設(shè)備中。內(nèi)容提供器類實現(xiàn)了一組標準的方法,從而能夠讓其它的應(yīng)用保存或讀取此內(nèi)容提供器處理的各種數(shù)據(jù)類型。數(shù)據(jù)是應(yīng)用的核心。Android默認使用SQLite作為系統(tǒng)DB。在Android中每一個應(yīng)用都運行在各自的進程中,當(dāng)你的應(yīng)用需要訪問其他應(yīng)用的數(shù)據(jù)時,也就需要數(shù)據(jù)在不同的虛擬機之間傳遞,ContentProvider正是用來解決在不同的應(yīng)用包之間共享數(shù)據(jù)的工具。所有被Android應(yīng)用程序創(chuàng)建的偏好設(shè)置,文件和數(shù)據(jù)庫都是私有的。應(yīng)用程序可以創(chuàng)建一個ContentProvider共享其他應(yīng)用程序的數(shù)據(jù)。Android本地ContentProvider包括:CallLog:地址和接收到的電話信息Contact.People.Phones:存儲電話號碼Setting.System:系統(tǒng)設(shè)置和偏好設(shè)置等等,浙江大學(xué)計算機學(xué)院,42,,,Thankyou!,- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- Android04 用戶界面 上課
鏈接地址:http://m.appdesigncorp.com/p-11548113.html