-基本控件與布局管理器_第1頁(yè)
-基本控件與布局管理器_第2頁(yè)
-基本控件與布局管理器_第3頁(yè)
-基本控件與布局管理器_第4頁(yè)
-基本控件與布局管理器_第5頁(yè)
已閱讀5頁(yè),還剩40頁(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)介

布局管理器與ActivityAndroid應(yīng)用的界面編程Android基礎(chǔ)回顧View類1常見布局2簡(jiǎn)單的UI設(shè)計(jì)案例3Activity簡(jiǎn)介4Android的UI界面都是由View和ViewGroup及其派生類組合而成的。其中,View是所有UI組件的基類,而ViewGroup是容納這些組件的容器,其本身也是從View派生出來(lái)的。包結(jié)構(gòu)Android應(yīng)用的絕大部分UI組件都放在android.widget包及其之包、android.view包及其之包中View和viewGroup派生子類一般來(lái)說(shuō),開發(fā)Android應(yīng)用程序的UI界面都不會(huì)直接實(shí)用View和ViewGroup,而是使用這兩大基類的派生類。View派生出的直接子類有:AnalogClock,ImageView,KeyboardView,

ProgressBar,SurfaceView,TextView,ViewGroup,ViewStubView派生出的間接子類有:AbsListView,AbsSeekBar,

AbsSpinner,

AbsoluteLayout,

AdapterView<T

extends

Adapter>,AdapterViewAnimator,

AdapterViewFlipper,

AppWidgetHostView,

AutoCompleteTextView,Button,CalendarView,

CheckBox,

CheckedTextView,

Chronometer,

CompoundButtonViewGroup派生出的直接子類有:AbsoluteLayout,AdapterView<T

extends

Adapter>,FragmentBreadCrumbs,FrameLayout,LinearLayout,RelativeLayout,SlidingDrawerViewGroup派生出的間接子類有:AbsListView,AbsSpinner,

AdapterViewAnimator,

AdapterViewFlipper,

AppWidgetHostView,

CalendarView,

DatePicker,

DialerFilter,

ExpandableListView,

Gallery,

GestureOverlayView,GridView,HorizontalScrollView,

ImageSwitcher,ListView,TableLayout控件是Android用戶界面中的組成元素??丶母割愂荲iew。View(視圖)每個(gè)View的子類對(duì)象都是android.view.View類的一個(gè)實(shí)例。

View對(duì)象是一個(gè)數(shù)據(jù)體,它的屬性存儲(chǔ)了用于屏幕上一塊矩形區(qū)域的布局參數(shù)及內(nèi)容。View是所有可視化窗體控件的基類。widget包與控件關(guān)于View類的屬性View類常用的屬性所有可視控件都繼承View類屬性。屬性含義android:background設(shè)置背景android:clickable設(shè)置View是否響應(yīng)單擊事件android:visible控制View的可見性android:focusable控件View是否可以獲取焦點(diǎn)android:id為View設(shè)置標(biāo)識(shí)符,可通過(guò)findViewById方法獲取widget包與控件widget包與控件WidgetWidget是為構(gòu)建用戶交互界面提供服務(wù)的視圖對(duì)象。Widget類是View類的子類。Android的可視控件都在android.widget包內(nèi)。Widget常用的控件包括:文本控件如:TextView、EditText按鈕控件如:Button、ImageButton選擇控件如:Checkbox、RadioButton圖片顯示控件如:ImageView時(shí)鐘控件:AnalogClock、DigitalClock日期與時(shí)間選擇控件:DatePicker、TimePicker……widget包與控件控件的分類widget包與控件控件的屬性屬性名簡(jiǎn)介取值信息android:id控件的ID,具有唯一性自定義android:layout_width控件寬度系統(tǒng)值:fill_parent填充(充滿)父容器,match_parent匹配父容器wrap_content包圍內(nèi)容自定義值:直接指定控件尺寸android:layout_height控件高度android:text顯示的文本信息引用value中字符串,或直接指定字符串值android:background設(shè)定背景圖片或顏色引用drawable中的圖片,或直接給出RGB顏色android:textColor文字顏色android:textSize文字大小android:textStyle文字風(fēng)格normal、bold、italicandroid:maxLines最大行數(shù)android:gravity文字的對(duì)齊方式top、bottom、left、right等android:password文本輸入框是否是密碼true、falseandroid:selectAllOnFocus文本輸入框在獲得焦點(diǎn)時(shí)全選文字true、falseandroid:inputType文本輸入框的輸入內(nèi)容number、date、time等android:textAppearance文字的顯示大小?android:attr/textAppearanceLarge等系統(tǒng)值android:padding內(nèi)容距控件邊緣的填充間距android:onClick控件單擊是執(zhí)行的方法方法名android:layout_gravity控件在父容器中的對(duì)齊方式top、bottom、left、right等android:layout_margin距離其他控件的邊緣布局管理器Android布局管理器都繼承自ViewGroup類,用于存放其他控件或嵌套其他布局。常用的布局管理器有5個(gè),分別是FrameLayout(幀布局)LinearLayout(線性布局)RelativeLayout(相對(duì)布局)TableLayout(表格布局)AbsoluteLayout(絕對(duì)布局)。新增GridLayoutFrameLayout(幀布局)是最簡(jiǎn)單的布局方式。從屏幕的左上角開始顯示子對(duì)象。后添加的對(duì)象覆蓋前一個(gè)對(duì)象。思考這種效果如何實(shí)現(xiàn)?思考這種效果如何實(shí)現(xiàn)?是最常用的布局方式。以水平或垂直的方式排列子對(duì)象。一個(gè)方向只能有一個(gè)對(duì)象??梢郧短祝阂粋€(gè)線性布局內(nèi)還可以定義線性布局。LinearLayout常用屬性(布局參數(shù)):andriod:orientation:設(shè)置排列方向android:layout_width:設(shè)置寬android:layout_height:設(shè)置高android:layout_weight:設(shè)置控件的重要程度。所有控件都有一個(gè)weight值,默認(rèn)為零,意思是需要顯示多大的控件視圖就占據(jù)多大的屏幕空間。andriod:gravity:設(shè)置內(nèi)部元素的對(duì)齊方式等。LinearLayout(線性布局)

垂直排列填充整個(gè)屏幕寬度按控件大小填充使用注意事項(xiàng):線性布局不會(huì)換行,當(dāng)組件一個(gè)挨一個(gè)排列到頭后,剩下的組件將不會(huì)顯示Android:gravity組件的對(duì)齊方式Android:orientation組件的排列方式horizontalvertical實(shí)例

:實(shí)現(xiàn)如圖所示的布局文件設(shè)計(jì)TableLayout(表格布局)以多行多列的方式顯示子對(duì)象。繼承LinearLayout每一行為一個(gè)TableRow。每一行可以擁有0個(gè)或多個(gè)的單元格(cell)。每個(gè)單元格內(nèi)是一個(gè)View對(duì)象。TableLayout容器不會(huì)顯示行、列或單元格的邊框線。列的屬性Shrinkable:設(shè)置列的寬度是否可收縮,收縮指表格能夠適應(yīng)其父容器的大小。Stretchable:設(shè)置列的寬度是否可拉伸,拉伸指可填滿表格中空余的空間。Collapsed:設(shè)置列是否被隱藏。RelativeLayout(相對(duì)布局)是設(shè)計(jì)UI的有力工具,通常用于比較復(fù)雜的布局。相對(duì)于其他對(duì)象的位置顯示子對(duì)象,常用于表單中。如果需要使用多個(gè)嵌套的LinearLayout布局時(shí),可以考慮使用RelativeLayout布局。實(shí)例:實(shí)現(xiàn)如圖所示的布局文件設(shè)計(jì)

項(xiàng)目名:Activity_RelativeLayout控件:1個(gè)TextView,1個(gè)EditText,2個(gè)按鈕。布局文件main.xml如下:<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"><TextViewandroid:id="@+id/label"android:layout_width="fill_parent"

android:layout_height="wrap_content"android:text="Typehere:"

/>

實(shí)例:實(shí)現(xiàn)如圖所示的布局文件設(shè)計(jì)//續(xù)前

<EditTextandroid:id="@+id/entry"android:layout_width="fill_parent"

android:layout_height="wrap_content"android:background="@android:drawable/editbox_background"android:layout_below="@id/label"/><Buttonandroid:id="@+id/ok"android:layout_width="wrap_content“

android:layout_height="wrap_content"android:layout_below="@id/entry"

android:layout_alignParentRight="true“

android:layout_marginLeft="10dip"android:text="OK"/><Buttonandroid:layout_width="wrap_content“

android:layout_height="wrap_content"android:layout_toLeftOf="@id/ok"android:layout_alignTop="@id/ok"android:text="Cancel"/></RelativeLayout>RelativeLayout常用屬性值為Ture或false的屬性layout_centerHorizontal:位于父對(duì)象的橫向中央。layout_centerInParent:位于父對(duì)象的中央。layout_alignParentLeft:與父對(duì)象的左側(cè)對(duì)齊。取其他對(duì)象id的屬性layout_toRightOf:位于給出id對(duì)象的右側(cè)。layout_alignTop:與給出id對(duì)象的上邊界對(duì)齊。取值為像素的屬性layout_marginBottom:當(dāng)前對(duì)象的下方的留出的空白。注意:要避免循環(huán)依賴。例如已設(shè)置父對(duì)象的排列為wrap_content,子對(duì)象就不能設(shè)置為layout_alignParentBottom.widget包與控件XML文件設(shè)計(jì)

在XML文件中聲明Android應(yīng)用程序界面布局和組件。優(yōu)點(diǎn):短小易維護(hù)。符合MVC原則:UI與程序邏輯相分離。代碼設(shè)計(jì)

Android應(yīng)用程序的界面全部由java代碼定義。優(yōu)點(diǎn):方便快捷。缺點(diǎn):不便維護(hù)。Android應(yīng)用

界面設(shè)計(jì)√UI的編輯方式實(shí)例:完全用編程方式開發(fā)UI界面試圖開發(fā)一個(gè)完全用代碼控制UI界面的Adroid應(yīng)用,由于該應(yīng)用完全采用代碼來(lái)控制UI界面,因此可以完全拋棄XML布局文件。Android組件組件是可以調(diào)用的基本功能模塊,Android應(yīng)用程序就是由組件組成的Android系統(tǒng)有四個(gè)重要的組件,分別是Activity、Service、BroadcaseReceiver和ContentProviderActivity的作用與功能ActivityActivity是Android程序的呈現(xiàn)層,顯示可視化的用戶界面,并接收與用戶交互所產(chǎn)生的界面事件Android應(yīng)用程序可以包含一個(gè)或多個(gè)Activity,一般在程序啟動(dòng)后會(huì)呈現(xiàn)一個(gè)Activity,用于提示用戶程序已經(jīng)正常啟動(dòng)在界面上的表現(xiàn)形式:全屏窗體,非全屏懸浮窗體,對(duì)話框舉例來(lái)說(shuō):一個(gè)email程序,就可能包含三個(gè)activity郵件列表的activity顯示郵件內(nèi)容的activity寫新郵件或回復(fù)郵件的activityActivity生命周期組件生命周期所有Android組件都具有自己的生命周期,是從組件建立到組件銷毀的整個(gè)過(guò)程在生命周期中,組件會(huì)在可見、不可見、活動(dòng)、非活動(dòng)等狀態(tài)中不斷變化Activity生命周期事件函數(shù)Activity生命周期的事件回調(diào)函數(shù)函數(shù)是否

可終止說(shuō)明onCreate()否Activity啟動(dòng)后第一個(gè)被調(diào)用的函數(shù),常用來(lái)進(jìn)行Activity的初始化,例如創(chuàng)建View、綁定數(shù)據(jù)或恢復(fù)信息等。onStart()否當(dāng)Activity顯示在屏幕上時(shí),該函數(shù)被調(diào)用。onRestart()否當(dāng)Activity從停止?fàn)顟B(tài)進(jìn)入活動(dòng)狀態(tài)前,調(diào)用該函數(shù)。onResume()否當(dāng)Activity能夠與用戶交互,接受用戶輸入時(shí),該函數(shù)被調(diào)用。此時(shí)的Activity位于Activity棧的棧頂。onPause()是當(dāng)Activity進(jìn)入暫停狀態(tài)時(shí),該函數(shù)被調(diào)用。一般用來(lái)保存持久的數(shù)據(jù)或釋放占用的資源。onStop()是當(dāng)Activity進(jìn)入停止?fàn)顟B(tài)時(shí),該函數(shù)被調(diào)用。onDestroy()是在Activity被終止前,即進(jìn)入非活動(dòng)狀態(tài)前,該函數(shù)被調(diào)用。Activity生命周期事件函數(shù)Activity狀態(tài)保存/恢復(fù)的事件回調(diào)函數(shù)函數(shù)是否

可終止說(shuō)明onSaveInstanceState()否Android系統(tǒng)因資源不足終止Activity前調(diào)用該函數(shù),用以保存Activity的狀態(tài)信息,供onRestoreInstanceState()或onCreate()恢復(fù)之用。onRestoreInstanceState()否恢復(fù)onSaveInstanceState()保存的Activity狀態(tài)信息,在onStart()和onResume()之間被調(diào)用。Activity生命周期分類全生命周期全生命周期是從Activity建立到銷毀的全部過(guò)程,始于onCreate(),結(jié)束于onDestroy()使用者通常在onCreate()中初始化Activity所能使用的全局資源和狀態(tài),并在onDestroy()中釋放這些資源在一些極端的情況下,Android系統(tǒng)會(huì)不調(diào)用onDestroy()函數(shù),而直接終止進(jìn)程Activity生命周期實(shí)例全生命周期啟動(dòng)和關(guān)閉ActivityLifeCycle的LogCat輸出啟動(dòng)ActivityLifeCycle按下模擬器的“返回鍵”關(guān)閉ActivityLifeCycleLogCat輸出結(jié)果Activity生命周期分類可視生命周期可視生命周期是Activity在界面上從可見到不可見的過(guò)程,開始于onStart(),結(jié)束于onStop()Activity生命周期分類可視生命周期onStart()一般用來(lái)初始化或啟動(dòng)與更新界面相關(guān)的資源onStop()一般用來(lái)暫?;蛲V挂磺信c更新用戶界面相關(guān)的線程、計(jì)時(shí)器和服務(wù)onRestart()函數(shù)在onSart()前被調(diào)用,用來(lái)在Activity從不可見變?yōu)榭梢姷倪^(guò)程中,進(jìn)行一些特定的處理過(guò)程onStart()和onStop()會(huì)被多次調(diào)用onStart()和onStop()也經(jīng)常被用來(lái)注冊(cè)和注銷BroadcastReceiverActivity生命周期實(shí)例可視生命周期狀態(tài)轉(zhuǎn)換啟動(dòng)ActivityLifeCycle按“呼出/接聽鍵”啟動(dòng)內(nèi)置的撥號(hào)程序再通過(guò)“返回鍵”退出撥號(hào)程序ActivityLifeCycle重新顯示在屏幕中可視生命周期的LogCat輸出結(jié)果Activity生命周期分類活動(dòng)生命周期活動(dòng)生命周期是Activity在屏幕的最上層,并能夠與用戶交互的階段,開始于onResume(),結(jié)束于onPause()在Activity的狀態(tài)變換過(guò)程中onResume()和onPause()經(jīng)常被調(diào)用,因此這兩個(gè)函數(shù)中應(yīng)使用更為簡(jiǎn)單、高效的代碼Activity生命周期分類活動(dòng)生命周期onPause()是第一個(gè)被標(biāo)識(shí)為“可終止”的函數(shù)在onPause()返回后,onStop()和onDestroy()隨時(shí)能被Android系統(tǒng)終止onPause()常用來(lái)保存持久數(shù)據(jù),如界面上的用戶的輸入信息等Activity生命周期分類onPause()和onSaveInstanceState()的區(qū)別這兩個(gè)函數(shù)都可以用來(lái)保存界面的用戶輸入數(shù)據(jù),他們的區(qū)別在于onPause()一般用于保存持久性數(shù)據(jù),并將數(shù)據(jù)保存在存儲(chǔ)設(shè)備上的文件系統(tǒng)或數(shù)據(jù)庫(kù)系統(tǒng)中的onSaveInstanceState()主要用來(lái)保存動(dòng)態(tài)的狀態(tài)信息,信息一般保存在Bundle中Bundle是能夠保存多種格式數(shù)據(jù)的對(duì)象在onSaveInstanceState()保存在Bundle中的數(shù)據(jù),系統(tǒng)在調(diào)用onRestoreInstanceState()和onCreate()時(shí),會(huì)同樣利用Bundle將數(shù)據(jù)傳遞給函數(shù)A

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論