久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

《Android Dev Guide》系列教程8:用戶界面

 lifei_szdz 2012-12-26

《Android Dev Guide》系列教程8:用戶界面

分類: Android Application 895人閱讀 評(píng)論(2) 收藏 舉報(bào)

《Android Dev Guide》系列教程8:用戶界面

懶骨頭(http://blog./iamlazybone

用戶界面

 

在一個(gè)Android應(yīng)用程序里,用戶接口是一系列的View和ViewGroup對(duì)象組合而成,。Android有很多種View和ViewGroup對(duì)象,,他們都繼承自View基類。

View對(duì)象是Android平臺(tái)用戶接口的基本對(duì)象,。這些view類作為與用戶交互的widgets小部件的父類,,像文本框和按鈕。ViewGroup作為提供各種布局結(jié)構(gòu)的layouts的父類,,例如linear線性布局,,表格布局和絕對(duì)布局。

一個(gè)view對(duì)象是一個(gè)數(shù)據(jù)結(jié)構(gòu),,他存儲(chǔ)布局參數(shù)和屏幕特定區(qū)矩形區(qū)域的內(nèi)容,。一個(gè)view會(huì)處理自己所在屏幕區(qū)域的測(cè)量,、布局,、繪制、焦點(diǎn)改變,、滾動(dòng),、和按鍵手勢(shì)交互。作為用戶交互對(duì)象,,一個(gè)view可以作為用戶與系統(tǒng)的交互工具,,接收事件。

 

View 結(jié)構(gòu)體系

 

在Android平臺(tái),,你要用到View或ViewGroup的層,、節(jié)點(diǎn)的方式來(lái)定義一個(gè)Android用戶界面,就像下面的圖表,,這個(gè)層次結(jié)構(gòu)樹可以按你的需求變得簡(jiǎn)單或者復(fù)雜,。你可以用Android系統(tǒng)已經(jīng)定義好的小控件或者布局,,或者自定義一些。

 

 

為了能讓你的view層次結(jié)構(gòu)在屏幕上渲染,,你的activity需要調(diào)用setContentView()方法并且傳遞一個(gè)根節(jié)點(diǎn)對(duì)象的引用,。Android系統(tǒng)接收這些配置,并使用他們來(lái)進(jìn)行測(cè)量繪制這個(gè)樹形的視圖結(jié)構(gòu),。這個(gè)視圖結(jié)構(gòu)的根節(jié)點(diǎn)要求他的孩子節(jié)點(diǎn)自我繪制,,反過(guò)來(lái)說(shuō),每個(gè)viewGroup節(jié)點(diǎn)負(fù)責(zé)讓他們的子節(jié)點(diǎn)自我繪制,。子節(jié)點(diǎn)會(huì)在父節(jié)點(diǎn)哪里請(qǐng)求到尺寸和位置,,但父對(duì)象會(huì)最終決定他們孩子有多大。Android按順序解析你的布局上的所有元素,,從頂端開始,,實(shí)例化view并且把他們添加到父對(duì)象。因?yàn)樗麄兌际前错樞虮焕L制的,,如果某些view超出的顯示范圍,,那么后來(lái)繪制的將會(huì)覆蓋原來(lái)的。

關(guān)于view結(jié)構(gòu)體系怎樣繪制,,在后面會(huì)有詳細(xì)的討論,。

 

布局

 

通常最多的布局是通過(guò)xml來(lái)定義。xml提供一個(gè)容易閱讀的結(jié)構(gòu),,很像html,。xml中每個(gè)元素都是一個(gè)view或者viewGroup對(duì)象(或他們的子類)。view在樹結(jié)構(gòu)中是葉子節(jié)點(diǎn),,ViewGroup對(duì)象在非葉子節(jié)點(diǎn)(樹枝節(jié)點(diǎn),,參考上圖)。

xml元素名代表著各個(gè)類,。比如<TextView>元素會(huì)創(chuàng)建一個(gè)TextView控件,,一個(gè)<LinearLayout>會(huì)創(chuàng)建一個(gè)LinearLayout的viewGroup,當(dāng)你加載一個(gè)布局資源,,Android系統(tǒng)會(huì)初始化運(yùn)行時(shí)對(duì)象,,即對(duì)應(yīng)的布局元素。

例如,,一個(gè)簡(jiǎn)單的垂直布局,,里面包含一個(gè)textView和一個(gè)Button。

 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas./apk/res/android"  
  3.               android:layout_width="fill_parent"   
  4.               android:layout_height="fill_parent"  
  5.               android:orientation="vertical" >  
  6.     <TextView android:id="@+id/text"  
  7.               android:layout_width="wrap_content"  
  8.               android:layout_height="wrap_content"  
  9.               android:text="Hello, I am a TextView" />  
  10.     <Button android:id="@+id/button"  
  11.             android:layout_width="wrap_content"  
  12.             android:layout_height="wrap_content"  
  13.             android:text="Hello, I am a Button" />  
  14. </LinearLayout>  
 

 

注意,,linearLayout元素包含著TextView和Button,。你可以嵌套另外的LinearLayout,來(lái)增加view的長(zhǎng)度,,或者增加一個(gè)更復(fù)雜的布局,。

 

更多關(guān)于UI布局的信息,,請(qǐng)參考 Declaring Layout章節(jié)。

 

你可以在你的布局里用很多種布局方式,,使用很多不同類型的viewGroup,,你可以定義無(wú)限多的子view或者子viewGroup。android提供一些預(yù)先定義好的布局,,包括:LinearLayout-線性布局, RelativeLayout-關(guān)系布局, TableLayout-表格布局, GridLayout 網(wǎng)格布局等,。他們提供一些獨(dú)特的參數(shù)用來(lái)定義view的位置和布局結(jié)構(gòu)。

 

Widgets小部件

widget是一個(gè)服務(wù)于用戶與界面交互的view對(duì)象,。Android提供很多視圖小部件,,如按鈕、尋則狂,、文本輸入框,、到呢個(gè),你可以很快的構(gòu)建自己的布局,。一些小部件很復(fù)雜,,像日期選擇器,一個(gè)時(shí)鐘,,縮放控制,。但你不會(huì)被Android平臺(tái)所提供的UI部件所限制,你可以自定義UI部件,,可以繼承或者結(jié)合已經(jīng)存在的UI部件,。

 

UI事件

一旦你向界面添加了view或者widget,你可能會(huì)想他們?cè)鯓优c用戶進(jìn)行交互的,,這樣你就可以執(zhí)行一些操作,。添加UI事件,你需要做兩件事情:

@ 定義事件監(jiān)聽器并注冊(cè)給view,。

多半情況下,,這就是你怎樣監(jiān)聽事件:view 類包含了一些名如OnXXXListener的監(jiān)聽器,他們都有名為OnXXX()的回調(diào)方法,。例如:View.onClickListener(這是處理點(diǎn)擊事件的),,View.onTouchListener(處理觸摸事件),,View

.onKeyListener(處理按鍵事件),,所以如果你想讓view響應(yīng)點(diǎn)擊事件,比如按鈕被選中,,你需要實(shí)現(xiàn)OnClickListener接口并且定義回調(diào)方法,,并且用setOnClickListener()方法來(lái)注冊(cè)View。

@ 覆蓋一個(gè)已經(jīng)存在的回調(diào)方法:

如果你失信了自己的View類并且想要監(jiān)聽一些特殊的事件,,那你應(yīng)該用這種方法,。例如,,你可以處理屏幕觸摸事件,處理滾動(dòng)球事件,,按鍵等事件,。它允許你定義默認(rèn)的事件,即自定義的view的每個(gè)事件,,確定這個(gè)時(shí)間是否會(huì)傳遞到一些字view,。然后,他們調(diào)用view類的回調(diào)函數(shù),,所以當(dāng)你自定義一個(gè)組件時(shí)才有機(jī)會(huì)用到這種方法,。

 

菜單Menu

 

應(yīng)用程序菜單是UI的另一個(gè)很重要的部分。Menu提供一些可靠的借口來(lái)展示程序的功能和一些設(shè)置,。通常menu是通過(guò)按menu鍵才顯示的,。然而,你可以讓用戶按下或者按住某一項(xiàng)時(shí)顯示menu菜單,。

menu菜單也遵循view的層次結(jié)構(gòu),,但不要自己定義。取而代之的是,,你只需為你的activity定義onCreateOptionsMenu()和onCreateContextMenu()兩個(gè)回調(diào)方法即可,,在適當(dāng)?shù)臅r(shí)間,Android會(huì)自動(dòng)的繪制必要的視圖結(jié)構(gòu)并且menu的所包含的子項(xiàng)的,。

Menu會(huì)處理他自己的時(shí)間,。所以不需要注冊(cè)事件監(jiān)聽器,當(dāng)menu中的某一項(xiàng)被選中,,系統(tǒng)會(huì)調(diào)用onOptionsItemSelected()方法或者onContextItemSelected()方法,。

和應(yīng)用程序的布局很像,你可以用xml來(lái)配置你的menu項(xiàng),。

 

高級(jí)特征

一旦你了解了創(chuàng)建用戶界面的基本原則,。你可以瀏覽一些高級(jí)特征來(lái)創(chuàng)建更復(fù)雜的應(yīng)用程序接口。

 

適配器Adapters

一些時(shí)候,,你不想用“硬代碼”來(lái)填充一些view的數(shù)據(jù),,相反,你想讓view綁定額外的數(shù)據(jù)集,。要這樣的話,,你要定義一個(gè)AdapterView,每個(gè)子View里的數(shù)據(jù)都會(huì)被適配器填充,。

適配器視圖對(duì)象 AdapterView是實(shí)現(xiàn)的ViewGroup接口,,子類是由被給出的適配器對(duì)象決定的。適配器就像你的adapter視圖和數(shù)據(jù)源之間的適配器,。這里有幾種適配器類的實(shí)現(xiàn)方式,,對(duì)于特殊的任務(wù),,例如自定義的適配器從一個(gè)Cursor來(lái)讀取數(shù)據(jù)庫(kù)的數(shù)據(jù),或者一耳光數(shù)組適配器從任意一個(gè)數(shù)組讀取數(shù)據(jù),。

 

風(fēng)格和主題 Styles,、Themes

你或許不滿意標(biāo)準(zhǔn)控件的外觀,你可以定制他們的風(fēng)格和主題來(lái)改變他們,。

@ 一個(gè)style是一個(gè)格式化的屬性集,,你作為布局的其中一個(gè)單元來(lái)使用他們。例如,,你可以定義某些文本的文字大小和顏色作為特殊的view元素,。

@ 一個(gè)theme主題是應(yīng)用程序中整個(gè)activity的個(gè)格式化的屬性集。例如,,你可以定義窗體的邊框和面板的背景,,并且設(shè)置menu的字體大小和顏色。它可以應(yīng)用在整個(gè)程序里,。

 

風(fēng)格和主題屬于資源,。Android提供一些默認(rèn)的風(fēng)格和主題資源來(lái)讓你使用?;蛘吣阋部梢宰约憾ㄖ扑麄?。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多