免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

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

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

分類: Android Application 895人閱讀 評論(2) 收藏 舉報

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

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

用戶界面

 

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

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

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

 

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

 

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

 

 

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

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

 

布局

 

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

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

例如,一個簡單的垂直布局,里面包含一個textView和一個Button。

 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/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,來增加view的長度,或者增加一個更復(fù)雜的布局。

 

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

 

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

 

Widgets小部件

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

 

UI事件

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

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

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

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

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

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

 

菜單Menu

 

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

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

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

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

 

高級特征

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

 

適配器Adapters

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

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

 

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

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

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

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

 

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

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java-陣列適配器從Res文件夾加載圖像(Android App)
android.view.ViewGroup.LayoutParams介紹
Android LayoutInflater原理分析,帶你一步步深入了解View(一)
Android中動態(tài)添加View的兩種方法
Android中滑屏初探
2.1 View與ViewGroup的概念
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服