《Android程序設(shè)計及實踐》課件第3章 用戶界面_第1頁
《Android程序設(shè)計及實踐》課件第3章 用戶界面_第2頁
《Android程序設(shè)計及實踐》課件第3章 用戶界面_第3頁
《Android程序設(shè)計及實踐》課件第3章 用戶界面_第4頁
《Android程序設(shè)計及實踐》課件第3章 用戶界面_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

-1-熟悉基本的Android界面組件掌握UI的事件驅(qū)動機制掌握常用的Layout掌握對話框以及Toast組件的使用掌握常用的Widget組件掌握菜單組件的使用掌握ActionBar的使用本章目標-2-用戶界面元素分類Android中的界面元素主要由以下幾個部分構(gòu)成:視圖組件(View)視圖容器(ViewGroup)布局管理(Layout)視圖組件(View)View視圖組件是用戶界面的基礎(chǔ)元素View對象存儲了Andiord屏幕上一個特定的矩形區(qū)域的布局和內(nèi)容屬性的數(shù)據(jù)體通過View對象,可實現(xiàn)對布局、繪圖、焦點變換、滾動條、屏幕區(qū)域的按鍵、用戶交互等功能Android的窗體功能是通過Widget(窗體部件)類實現(xiàn)的,而View類是Widget的基類-3-View的主要子類-4-類名功能描述事件監(jiān)聽器TextView文本視圖OnKeyListenerEditText編輯文本框OnEditorActionListenerButton按鈕OnClickListenerCheckbox復(fù)選框OnCheckedChangeListenerRadioGroup單選按鈕組OnCheckedChangeListenerSpinner下拉列表OnItemSelectedListenerAutoCompleteTextView自動完成文本框OnKeyListenerDataPicker日期選擇器OnDateChangedListenerTimePicker時間選擇器OnTimeChangedListenerDigitalClock數(shù)字時鐘OnKeyListenerAnalogClock模擬時鐘OnKeyListenerProgessBar進度條OnProgressBarChangeListenerRatingBar評分條OnRatingBarChangeListenerSeekBar搜索條OnSeekBarChangeListenerGridView網(wǎng)格視圖OnKeyDown,OnKeyUpLsitView列表視圖OnKeyDown,OnKeyUpScrollView滾動視圖OnKeyDown,OnKeyUp視圖容器組件(ViewGroup)ViewGroup是View的容器,可將View添加到ViewGroup中,一個ViewGroup也可以加入到另外一個ViewGroup里。-5-方法功能描述ViewGroup()構(gòu)造方法voidaddView(Viewchild)用于添加子視圖voidbringChildToFront(Viewchild)將參數(shù)指定的視圖移動到所有視圖的前面顯示booleanclearChildFocus(Viewchild)清除參數(shù)指定的視圖的焦點booleandispatchKeyEvent(KeyEventevent)將參數(shù)指定的鍵盤事件分發(fā)給當前焦點路徑的視圖。分發(fā)判斷事件時,按照焦點路徑查找合適的視圖。若本視圖為焦點,則將鍵盤事件發(fā)送給自己;否則發(fā)送給焦點視圖booleandispatchPopulateAccessibilityEvent(AccessibilityEventevent)將參數(shù)指定的事件分發(fā)給當前焦點路徑的視圖booleandispatchSetSelected(booleanselected)為所有的子視圖調(diào)用setSelected()方法布局管理Layout布局管理Layout用來管理組件的布局格式,組織界面中組件的呈現(xiàn)方式。Android提供了多種布局:LinearLayout:線性布局,該布局中子元素之間成線性排列,即在某一方向上的順序排列,常見的有水平順序排列、垂直順序排列。RelativeLayout:相對布局,該布局是一種根據(jù)相對位置排列元素的布局方式,這種方式允許子元素指定他們相對于其它元素或父元素的位置(通過ID指定)。相對于線性布局,使用RelativeLayout布局可任意放置控件,沒有規(guī)律性。需要注意線性布局不需要特殊指定其父元素,而相對布局使用之前必須指定其參照物,只有指定參照物之后,才能定義其相對位置。TableLayout:表格布局,該布局將子元素的位置分配到表格的行或列中,即按照表格的順序排列。一個表格布局有多個“表格行”,而每個表格行又包含表格單元。需要注意,表格布局并不是真正意義上的表格,只是按照表格的方式組織元素的布局,元素之間并沒有實際表格中的分界線。AbsoluteLayout:絕對布局,按照絕對坐標對元素進行布局。與相對布局相反,絕對布局不需要指定其參照物,而是使用整個手機界面作為坐標系,通過坐標系的兩個偏移量(水平偏移量和垂直偏移量)來唯一指定其位置。FrameLayout:框架布局,將所有子元素以層疊的方式顯示,后加的元素會被放在最頂層,覆蓋之前的元素,實際中很少用到。GridLayout:網(wǎng)格布局,Android4.0新增的布局方式,能夠同時對x、y軸的控件進行對齊,大大的簡化了對復(fù)雜布局的處理,并且在性能上也有大幅提升。注意Android的表格布局跟HTML中的表格布局非常類似,TableRow相當于HTML表格的<tr>標記。-6-事件處理機制Android系統(tǒng)中引用Java的事件處理機制,包括事件、事件源和事件監(jiān)聽器三個事件模型:事件(Event):是一個描述事件源狀態(tài)改變的對象,事件不是通過new運算符創(chuàng)建的,而是由用戶操作觸發(fā)的。事件可以是鍵盤事件、觸摸事件等。事件一般作為事件處理方法的參數(shù),以便從中獲取事件的相關(guān)信息。事件源(EventSource):產(chǎn)生事件的對象,事件源通常是UI組件,例如點擊按鈕,則按鈕就是事件源。事件監(jiān)聽器(EventListenrer):當事件產(chǎn)生時,事件監(jiān)聽器用于對該事件進行響應(yīng)和處理。監(jiān)聽器需要實現(xiàn)監(jiān)聽接口中定義的事件處理方法。-7-事件監(jiān)聽器-8-事件監(jiān)聽器接口事件說明OnClickListener單擊事件當用戶點擊某個組件時OnFocusChangeListener焦點事件組件獲得或者失去焦點時OnKeyListener按鍵事件用戶按下或者釋放設(shè)備上的某個按鍵OnTouchListener觸碰事件設(shè)備具有觸摸屏功能時,觸碰屏幕時產(chǎn)生OnCreateContextMenuListener創(chuàng)建上下文菜單事件創(chuàng)建上下文菜單時產(chǎn)生該事件OnCheckedChangeListener選項事件選擇改變時觸發(fā)該事件實現(xiàn)事件處理步驟如下:創(chuàng)建事件監(jiān)聽器;在事件處理方法中編寫事件處理代碼;在相應(yīng)的組件上注冊監(jiān)聽器。布局管理(Layout)Android中提供了兩種創(chuàng)建布局的方式:在XML布局文件中聲明:這種方式是將需要顯示的組件先在布局文件中進行聲明,然后在程序中通過setContentView(R.layout.XXX)方法將布局呈現(xiàn)在Activity中。這種方式是推薦使用的方式,前面的程序也一直使用這種方式。在程序中通過代碼直接實例化布局及其組件:這種方式并不提倡使用,除非界面中的組件及布局需要動態(tài)改變才使用。-9-線性布局-1LinearLayout是一種線性排列的布局,該布局中的子組件按照垂直或者水平方向排列,方向由“android:orientation”屬性控制,屬性值有垂直(vertical)和水平(horizontal)兩種。-10-<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android" android:orientation="vertical"android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayoutandroid:orientation="horizontal" android:layout_width="fill_parent"android:layout_height="fill_parent" android:layout_weight="1"> …… </LinearLayout> <LinearLayoutandroid:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent" android:layout_weight="1"> ……

</LinearLayout></LinearLayout>第一個LinearLayout按照垂直方向來布局,并將其他兩個LinearLayout包含進來,是整個布局的主布局第二個LinearLayout按照水平方向來布局,包含4個TextView第三個LinearLayout按照垂直方向來布局,也包含4個TextView線性布局-2在LayoutActivity中設(shè)置使用linearlayout.xml布局,代碼如下所示:-11-publicclassLayoutActivityextendsActivity{ /**Calledwhentheactivityisfirstcreated.*/ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.linearlayout); }}表格布局TableLayout以行、列表格的方式布局子組件。TableLayout中使用TableRow對象來定義行。<TableLayout>元素定義了表格布局,該元素的“android:collapseColumns”屬性用于指明表格的列數(shù),此處設(shè)置表格的列數(shù)為3;“android:stretchColumns”屬性用于指明表格的伸展列,指定的伸展列將進行拉伸以填滿剩余的空間。注意列號從0開始,此處值為“1”,代表第二列是伸展列。<TableRow>元素定義了表格中的行,所有的其他組件都放在該元素內(nèi)。-12-相對布局RelativeLayout是按照組件之間的相對位置來布局,如在某個組件的左邊、右邊、上面和下面等。-13-<Buttonandroid:text="B"android:id="@+id/b" android:layout_toRightOf="@+id/a"/><Buttonandroid:text="B"android:id="@+id/b" android:layout_toLeftOf="@+id/a"/><Buttonandroid:text="B"android:id="@+id/b" android:layout_below="@+id/a"/><Buttonandroid:text="B"android:id="@+id/b" android:layout_above="@+id/a"/>按鈕B在按鈕A的右邊:按鈕B在按鈕A的左邊則:按鈕B在按鈕A的下面則:按鈕B在按鈕A的上面則:絕對布局AbsoluteLayout通過指定組件的確切X、Y坐標來確定組件的位置。例如:-14-<Buttonandroid:text="A"android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="20px" android:layout_y="20px"/>網(wǎng)格布局GridLayout以網(wǎng)格方式布局子組件,使子組件x、y軸自動對齊。例如:-15-<GridLayoutxmlns:android="/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:columnCount="4"android:orientation="horizontal"android:rowCount="3">

<Buttonandroid:layout_columnSpan="2“android:layout_gravity="fill"android:text="1.1"/>

<Buttonandroid:text="1.2"/>

<Buttonandroid:layout_gravity="fill"android:layout_rowSpan="2"android:text="1.3"/><Buttonandroid:layout_columnSpan="3"android:layout_gravity="fill"android:text="2.1"/>

<Buttonandroid:text="3.1"/><Buttonandroid:text="3.2"/><Buttonandroid:text="3.3"/><Buttonandroid:text="3.4"/></GridLayout>框架布局FrameLayout以層疊的方式顯示子組件。后者會覆蓋前者。例如:-16-<FrameLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/flower"/><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:background="@drawable/ic_launcher"/></FrameLayout>提示信息(Toast)提示信息(Toast)是Android中用來顯示提示信息的一種機制,與對話框不同,Toast是沒有焦點的,而且Toast顯示時間有限,過一定的時間會自動消失。Toast類定義在android.widget包中,其常用的方法-17-方法功能說明Toast(Contextcontext)構(gòu)造函數(shù)setDuration(intduration)設(shè)置提示信息顯示的時長,可以設(shè)置兩種值:Toast.LENGTH_LONG和Toast.LENGTH_SHORTsetText(CharSequences)設(shè)置顯示的文本cancel()關(guān)閉提示信息,即不顯示makeText(Contextcontext,CharSequencetext,intduration)該方法是靜態(tài)方法,用于直接創(chuàng)建一個帶文本的提示信息,并指明時長show()顯示提示信息調(diào)用Toast的靜態(tài)方法makeText()創(chuàng)建一個指定文本和時長的提示信息。調(diào)用Toast的show()方法顯示提示信息。創(chuàng)建Toast的步驟可以如下:對話框Android系統(tǒng)中提供了四種對話框:注意:除了上面的四種系統(tǒng)定義的對話框,用戶還可以繼承android.app.Dialog實現(xiàn)自己的對話框。-18-對話框說明AlertDialog提示對話框ProgressDialog進度對話框DatePickerDialog日期選擇對話框TimePickerDialog時間選擇對話框提示對話框AlertDialogAlertDialog是一個提示窗口,要求用戶做出選擇。創(chuàng)建提示對話框的步驟如下:獲得AlertDialog的靜態(tài)內(nèi)部類Builder對象,由該類來創(chuàng)建對話框。通過Builder對象設(shè)置對話框的標題、按鈕以及按鈕將要相應(yīng)的事件。調(diào)用Builder的Create()方法創(chuàng)建對話框。調(diào)用AlertDialog的show()方法顯示對話框。-19-常用Widget組件Widget組件是窗體中使用的部件,都定義在android.widget包中常用的Widget組件有:ButtonTextViewEditTextCheckBoxRadioGroupSpinner-20-Widget組件通用屬性對Widget組件進行UI設(shè)計時可以采用XML布局文件和Java代碼兩種方式Widget所有的組件幾乎都屬于View類,其通用屬性如下:-21-屬性名稱描述android:id設(shè)置控件的索引,Java程序可通過R.id.<索引>引用該控件android:layout_height設(shè)置布局高度,可以通過三種方式來指定高度:fill_parent(和父元素相同)、wrap_content(隨組件本身的內(nèi)容調(diào)整)、通過指定px值來設(shè)置高度android:layout_width設(shè)置布局寬度,也可以采用三種方式:fill_parent、wrap_content、指定px值android:autoLink設(shè)置是否當文本為URL鏈接,文本顯示為可點擊的鏈接??蛇x值為(none/web/email/phone/map/all)android:autoText如果設(shè)置,將自動執(zhí)行輸入值的拼寫糾正android:bufferType指定getText()方式取得的文本類別android:capitalize設(shè)置英文字母大寫類型。需要彈出輸入法才能看得到android:cursorVisible設(shè)定光標為顯示/隱藏,默認顯示android:digits設(shè)置允許輸入哪些字符,如“1234567890.+-*/%\n()”android:drawableBottom在text的下方輸出一個drawableandroid:drawableLeft在text的左邊輸出一個drawableandroid:drawablePadding設(shè)置text與drawable(圖片)的間隔,與drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可設(shè)置為負數(shù),單獨使用沒有效果。android:drawableRight在text的右邊輸出一個drawable對象android:inputType設(shè)置文本的類型,用于幫助輸入法顯示合適的鍵盤類型android:cropToPadding是否截取指定區(qū)域用空白代替;單獨設(shè)置無效果,需要與scrollY一起使用android:maxHeight設(shè)置View的最大高度文本框(TextView)TextView類代表文本框,是屏幕中一塊用于顯示文本的區(qū)域TextView屬于android.widget包并且繼承android.view.View類的方法和屬性,同時又是Button、CheckedTextView、Chronometer、DigitaClock以及EditText的父類。-22-方法功能描述TextView()TextView的構(gòu)造方法getDefaultMovementMethod()獲取默認的箭頭按鍵移動方式getText()取得文本內(nèi)容length()獲取TextView中文本長度getEditableText()取得文本的可編輯對象,通過該對象可對TextView的文本進行操作,如在光標之后插入字符getLayout()獲取TextView的布局getKeyListener()獲取鍵盤監(jiān)聽對象setKeyListener()設(shè)置鍵盤事件監(jiān)聽setTransformationMethod()設(shè)置文本是否顯示成特殊字符getCompoundPaddingBottom()該方法返回TextView的底部填充物setCompoundDrawables()設(shè)置Drawable圖像顯示的位置,在設(shè)置該Drawable資源之前需要調(diào)用setBounds(Rect)TextView的主要方法:方法功能描述setCompoundDrawablesWithIntrinsicBounds()設(shè)置Drawable圖像顯示的位置,但其邊界不變setPadding()根據(jù)位置設(shè)置填充物getAutoLinkMask()返回自動鏈接的掩碼setTextColor()設(shè)置文本顯示的顏色setHighlightColor()設(shè)置選中時文本顯示的顏色setShadowLayer()設(shè)置文本顯示的陰影顏色setHintTextColor()設(shè)置提示文字的顏色setLinkTextColor()設(shè)置鏈接文本的顏色setGravity()設(shè)置當TextView超出了文本本身時橫向以及垂直對齊編輯框EditText類是TextView的子類,其功能與TextView基本類似,主要區(qū)別是EditText可以編輯。EditText提供了許多用于設(shè)置和控制文本框功能的方法:-23-方法功能描述getText()獲取文本內(nèi)容selectAll()獲取輸入的所有文本setText(CharSequencetext,TextView.BufferTypetype)設(shè)置編輯框中的文本內(nèi)容復(fù)選框-1CheckBox是復(fù)選框組件,用于多選的情況下,該控件在應(yīng)用程序中為用戶提供“真/假”選擇。CheckBox類提供了用于設(shè)置和控制復(fù)選框的方法:-24-方法功能描述dispatchPopulateAccessibilityEvent()在子視圖創(chuàng)建時,分派一個輔助事件isChecked()判斷組件狀態(tài)是否勾選onRestoreInstanceState()設(shè)置視圖恢復(fù)以前的狀態(tài),該狀態(tài)由onSaveInstanceState()方法生成performClick()執(zhí)行Click動作,該動作會觸發(fā)事件監(jiān)聽器setButtonDrawable()根據(jù)Drawable對象設(shè)置組件的背景setChecked()設(shè)置組件的狀態(tài)。若參數(shù)為真,則置組件為選中狀態(tài);否則置組件為未選中狀態(tài)setOnCheckedChangeListener()CheckBox常用的設(shè)置事件監(jiān)聽器的方法,狀態(tài)改變時調(diào)用該監(jiān)聽器toggle()改變按鈕的當前狀態(tài)drawableStateChanged()視圖狀態(tài)的變化影響到所顯示可繪制的狀態(tài)時調(diào)用該方法onCreateDrawableState()獲取文本框為空時,文本框默認顯示的字符串onCreateDrawableState()為當前視圖生成新的Drawable狀態(tài)復(fù)選框-2復(fù)選框是一種雙狀態(tài)按鈕的特殊類型,復(fù)選框的狀態(tài)只有兩種:選中或者未選中狀態(tài),因此復(fù)選框狀態(tài)變化包含兩種情況:選中狀態(tài)→未選中狀態(tài)未選中狀態(tài)→選中狀態(tài)通過鼠標單擊復(fù)選框,可觸發(fā)復(fù)選框狀態(tài)的改變。通過setOnCheckedChangeListener()方法注冊監(jiān)聽復(fù)選框狀態(tài)改變監(jiān)聽器OnCheckedChangeListener。-25-單選按鈕組RadioGroup是單選按鈕組,用于實現(xiàn)一組按鈕之間相互排斥,即有且僅有一個按鈕被選中,在同一個單選按鈕組中勾選一個按鈕則會取消該組中其它已經(jīng)勾選的按鈕的選中狀態(tài)。RadioGroup類是LinearLayout的子類,其常用的設(shè)置和控制單選按鈕組的方法-26-方法功能描述addView()根據(jù)布局指定的屬性添加一個子視圖check()當傳遞-1作為指定的選擇標識符,此方法同clearCheck()方法作用等效generateLayoutParams()返回一個新的布局實例,這個實例是根據(jù)指定的屬性集合生成的setOnCheckedChangeListener()注冊單選按鈕狀態(tài)改變監(jiān)聽器getCheckedRadioButtonId()返回該單選按鈕組中所選擇的單選按鈕的標識ID下拉列表-27-方法功能描述getBaseline()獲取組件文本基線的偏移getPrompt()獲取被聚焦時的提示消息performClick()效果同鼠標單擊一樣,該方法執(zhí)行會觸發(fā)OnClickListenersetAdapter(SpinnerAdapteradapter)設(shè)置選項,適配器adapter用于給下拉列表提供選項數(shù)據(jù)setPromptId()設(shè)置對話框彈出的時候顯示的文本setOnItemSelectedListener()設(shè)置下拉列表子項被選中監(jiān)聽器Spinner提供了下拉列表功能,其功能類似于RadioGroup,多個item子元素組合成一個Spinner,這些子元素之間相互影響,同時最多有一個子元素被選中。Spinner類是LinearLayout的子類數(shù)組適配器Spinner可以通過數(shù)組適配器讀取XML中定義的子元素。Android系統(tǒng)提供了多種適配器,其中ArrayAdapter是比較簡單且經(jīng)常使用的一種數(shù)組適配器,它將數(shù)據(jù)放入一個數(shù)組以便顯示。-28-ArrayAdapter(Contextcontext,intresource,inttextViewResId)ArrayAdapter(Contextcontext,inttextViewResId,T[]objects)ArrayAdapter(Contextcontext,inttextViewResId,List<T>objects)上下文環(huán)境,在Activity中一般使用this資源id文本視圖資源id泛型數(shù)組

泛型集合

//獲取下拉列表組件Spinnerposition=(Spinner)findViewById(R.id.position);//創(chuàng)建一個下拉列表選項數(shù)組String[]strs={"總裁","經(jīng)理","秘書"};//創(chuàng)建一個數(shù)組適配器ArrayAdapteraa=newArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item,strs);//設(shè)置下拉列表的適配器position.setAdapter(aa);圖片視圖-1ImageView可顯示圖像資源ImageView類常用方法-29-方法功能描述ImageView()ImageView構(gòu)造函數(shù)setAdjustViewBounds(booleanab)設(shè)置是否保持高寬比。需要結(jié)合maxWidth和maxHeight一起使用getDrawable()獲取Drawable對象;若獲取成功則返回Drawable對象,否則返回nullgetScaleType()獲取視圖的填充方式setImageBitmap(Bitmapbm)設(shè)置位圖setAlpha(intalpha)設(shè)置透明度,值范圍為0~255,其中0為完全透明,255為完全不透明setMaxHeight(inth)設(shè)置控件的最大高度setMaxWidth(intw)設(shè)置控件的最大寬度setImageURI(Uriuri)設(shè)置圖片地址,圖片地址使用URI指定setImageResource(intrid)設(shè)置圖片資源庫setColorFilter(intcolor)設(shè)置顏色過濾,需要制定顏色過濾矩陣圖片視圖-2ImageView可通過兩種方式設(shè)置資源:通過setImageBitmap()方法設(shè)置圖片資源;通過<ImageView>XML元素的android:src屬性,或setImageResource(int)方法指定ImageView的圖片。使用ImageView的代碼如下:-30-imageview=(ImageView)findViewById(R.id.imageview);bitmap=BitmapFactory.decodeResource(this.getResources(),R.drawable.motor);imageview.setImageBitmap(bitmap);滾動視圖ScrollView提供了滾動功能,可在界面上顯示比實際多的內(nèi)容時提供滾動效果ScrollView的子元素可以包含復(fù)雜的布局,通常用的子元素是垂直方向的LinearLayout。注意ScrollView只支持垂直方向的滾動,不支持水平方向的移動。-31-滾動視圖-ScrollView常用方法-32-方法功能描述ScrollView()ScrollView構(gòu)造函數(shù)dispatchKeyEvent(KeyEventevent)將參數(shù)指定的鍵盤事件分發(fā)給當前焦點路徑的視圖arrowScroll(intdirection)該方法響應(yīng)點擊上下箭頭時對滾動條滾動的處理,參數(shù)direction指定了滾動的方向addView(Viewchild)添加子視圖computeScroll()更新子視圖的值(mScrollX和mScrollY)onTouchEvent(MotionEventev)該方法用于運動事件,該運動事件是在處理觸摸屏幕產(chǎn)生的setOnTouchListener()設(shè)置ImageButton單擊事件監(jiān)聽setColorFilter()設(shè)置顏色過濾,需要制定顏色過濾矩陣executeKeyEvent(KeyEventevent)當接收到鍵盤事件時,此函數(shù)執(zhí)行滾動操作fullScroll(intdirection)將視圖滾動到direction指定的方向onInterceptTouchEvent(MotionEventme)此方法用于攔截用戶的觸屏事件網(wǎng)格視圖GridView網(wǎng)格視圖將其子元素組織成類似于網(wǎng)格狀的視圖。一個網(wǎng)格視圖通常需要一個列表適配器ListAdapter,該適配器包含網(wǎng)格視圖的子元素組件。GridView的視圖排列方式與矩陣類似網(wǎng)格視圖能夠以數(shù)據(jù)網(wǎng)格形式顯示子元素,并能夠?qū)@些子元素進行分頁、自定義樣式等操作-33-網(wǎng)格視圖-GridView常用方法-34-方法功能描述GridView()GridView構(gòu)造函數(shù)setGravity(intgravity)設(shè)置此組件中的內(nèi)容在組件中的位置setColumnWidth(int)該方法設(shè)置網(wǎng)格視圖的寬度getAdapter()獲取該視圖的適配器AdaptersetAdapter(ListAdapteradapter)設(shè)置網(wǎng)格視圖對應(yīng)的適配器setStretchMode(int)該方法用于設(shè)置縮放模式,也可通過android:stretchMode設(shè)置,有多個縮放模式NO_STRETCH,STRETCH_SPACING,STRETCH_SPACING_UNIFOR或STRETCH_COLUMN_WIDTHonKeyMultiple(intkeyCode,intrepeatCount,KeyEventevent)多次按鍵時的處理方法。當連續(xù)發(fā)生多次按鍵時,該方法被調(diào)用。其中keyCode為按鍵對應(yīng)的整型值,repeatCount是按鍵的次數(shù),event是按鍵事件setSelection(intp)設(shè)置當前被選中選中的網(wǎng)格視圖的子元素onKeyUp(intkeyCode,KeyEventevent)釋放按鍵時的處理方法。釋放按鍵時,該方法被調(diào)用。其中keyCode為按鍵對應(yīng)的整型值,event是按鍵事件onKeyDown(intkeyCode,KeyEventevent)按鍵時的處理方法。按鍵時,該方法被調(diào)用。其中keyCode為按鍵對應(yīng)的整型值,event是按鍵事件。注意用戶按鍵的過程中,onKeyDown先被調(diào)用,然后用戶釋放按鍵后調(diào)用onKeyUpsetHorizontalSpacing(intc)設(shè)置網(wǎng)格視圖同一行子元素之間的水平間距setNumColumns(int)設(shè)置網(wǎng)格視圖包含的子元素的列數(shù)getHorizontalSpacing()獲取網(wǎng)格視圖同一行子元素之間的水平間距getNumColumns(int)獲取網(wǎng)格視圖包含的子元素的列數(shù)getSelection()獲取當前被選中選中的網(wǎng)格視圖的子元素列表視圖ListView是列表視圖,將元素按照條目的方式自上而下列出來。通常每一列只有一個元素實現(xiàn)一個列表視圖必須具備ListView、適配器以及子元素3個條件,其中適配器用于存儲列表視圖的子元素。列表視圖將子元素以列表的方式組織,用戶可通過滑動滾動條來顯示界面之外的元素。-35-列表視圖-ListView常用的方法-36-方法功能描述ListView()ListView構(gòu)造函數(shù)getCheckedItemPosition()返回當前被選中的子元素的位置addFooterView(Viewview)給視圖添加腳注,通常腳注位于列表視圖的底部,其中參數(shù)View為要添加腳注的視圖getMaxScrollAmount()返回列表視圖的最大滾動數(shù)量getDividerHeight()獲取子元素之間分隔符的寬度(元素與元素之間的那條線)setStretchMode(int)設(shè)置縮放模式,也可通過android:stretchMode設(shè)置,有多個縮放模式NO_STRETCH,STRETCH_SPACING,STRETCH_SPACING_UNIFOR或STRETCH_COLUMN_WIDTHonKeyMultiple(intkeyCode,intrepeatCount,KeyEventevent)多次按鍵時的處理方法。當連續(xù)發(fā)生多次按鍵時,該方法被調(diào)用。其中keyCode為按鍵對應(yīng)的整型值,repeatCount是按鍵的次數(shù),event是按鍵事件setSelection(intp)設(shè)置當前被選中選中的列表視圖的子元素onKeyUp(intkeyCode,KeyEventevent)釋放按鍵時的處理方法。釋放按鍵時,該方法被調(diào)用。其中keyCode為按鍵對應(yīng)的整型值,event是按鍵事件onKeyDown(intkeyCode,KeyEventevent)按鍵時的處理方法。按鍵時,該方法被調(diào)用。其中keyCode為按鍵對應(yīng)的整型值,event是按鍵事件。注意用戶按鍵的過程中,onKeyDown先被調(diào)用,然后用戶釋放按鍵后調(diào)用onKeyUpisItemChecked(intposition)判斷指定位置position元素是否被選中addHeaderView(Viewview)給視圖添加頭注,通常頭注位于列表視圖的頂部。其中參數(shù)View為要添加頭注的視圖dispatchPopulateAccessibilityEvent(AccessibilityEventevent)獲取分派一個被構(gòu)建時輔助視圖的子項目事件getChoiceMode()返回當前的選擇模式菜單菜單是UI設(shè)計中經(jīng)常使用的組件,提供了不同功能分組展示的能力,在人機交互中提供了人性化的操作。Android中菜單分為兩種類型:選項菜單(OptionMenu)上下文菜單(ContextMenu)-37-選項菜單項菜單是按下“Menu”按鍵彈出的創(chuàng)建選項菜單的3個步驟:覆蓋Activity的onCreateOptionsMenu()方法,當?shù)谝淮未蜷_菜單時該方法被自動調(diào)用。調(diào)用Menu的add()方法添加菜單項(MenuItem),可以調(diào)用MenuItem的setIcon()方法為菜單設(shè)置圖標。當菜單項被選擇時,覆蓋Activity的onOptionsItemSelected()方法來響應(yīng)事件。-38-上下文菜單上下文菜單只有在組件上長時間按住鼠標右鍵才會顯示ContextMenu上下文菜單提供了用于創(chuàng)建和添加菜單的接口:上下文菜單的創(chuàng)建步驟:覆蓋Activity的onCreateContextMenu()方法,調(diào)用Menu的add()方法添加菜單項(MenuItem)。覆蓋onContextItemSelected()方法,響應(yīng)菜單單擊事件。在Activity的onCreate()方法中,調(diào)用registerForContextMenu()方法,為視圖注冊上下文菜單。-39-方法功能描述setHeaderIcon(inticonRes)設(shè)置上下文菜單的圖標setHeaderIcon(Drawableicon)設(shè)置上下文菜單的圖標setHeaderTitle(CharSequencetitle)設(shè)置上下文菜單的標題setHeaderTitle(inttitleRes)設(shè)置上下文菜單的標題add(intgroupId,intitemId,intorder,CharSequencetitle)添加子菜單ActionBarActionBar是Android3.0中新増的一個導(dǎo)航欄功能的控件,它的主要功能是,標識用戶當前操作頁面的位置,并且提供了額外的操作按鈕方便用戶操作和界面導(dǎo)航-40-標簽1:ActionBar的圖標和標識當前頁面位置標簽2:ActionButton,一般將常用的功能放到這里標簽3:OverFlowButton,應(yīng)用的選項菜單,如果ActionBar沒有足夠的空間,ActionButton也將自動添加到這里標簽4:TabsActionBar為我們提供了統(tǒng)一的Tabs,類似于選項卡樣式,便于頁面切換ActionBarActionBar是Android3.0中新増的一個導(dǎo)航欄功能的控件,它的主要功能是,標識用戶當前操作頁面的位置,并且提供了額外的操作按鈕方便用戶操作和界面導(dǎo)航-41-ActionBar的顯示與隱藏修改圖標和標題添加ActionButton添加導(dǎo)航按鈕添加ActionView(活動視圖)ActionBarActionBar的顯示與隱藏-42-修改圖標和標題ActionBaractionBar=getActionBar();actionBar.hide();//隱藏actionBar.show();//顯示<activityandroid:name=".MyActionBarActivity"android:label="示例"android:logo="@android:drawable/ic_dialog_info">...</activity>ActionBar的圖標和標題默認會顯示應(yīng)用的圖標和名稱,可以修改AndroidManifest.xml中每個Activity的屬性,來達到自定義每個Activity的圖標和標題的目的ActionBar添加ActionButton-1-43-<menuxmlns:android="/apk/res/android"xmlns:tools="/tools"tools:context="com.dh.ch03_actionbar.MainActivity"><itemandroid:id="@+id/action_search"android:icon="@android:drawable/ic_menu_search"android:showAsAction="ifRoom|withText"android:title="查詢"/><itemandroid:id="@+id/action_add“android:icon="@android:drawable/ic_menu_add"android:showAsAction="ifRoom|withText"android:title="添加"/></menu>

添加ActionButton的方式可以通過配置文件添加,也可以通過代碼動態(tài)添加,通過配置文件添加方式,新建menu/main.xml文件:Activity中,重寫onCreateOptionsMenu(Menumenu)方法:@OverridepublicBooleanonCreateOptionsMenu(Menumenu){ getMenuInflater().inflate(R.menu.main,menu); returntrue;}ActionBar添加ActionButton-2-44-@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){ intid=item.getItemId(); switch(id){ caseR.id.action_add: Toast.makeText(this,"add",Toast.LENGTH_SHORT).show(); break; caseR.id.action_search:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論