第2章Android界面編程基礎_第1頁
第2章Android界面編程基礎_第2頁
第2章Android界面編程基礎_第3頁
第2章Android界面編程基礎_第4頁
第2章Android界面編程基礎_第5頁
已閱讀5頁,還剩37頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、倚 動 實 驗 室 : http:/ Android界面編程基礎 本章知識結構圖本章案例效果 View和ViewGroup介紹View類介紹 View類是所有界面控件類的超類; 代表屏幕上一塊空白的矩形區域,用于繪畫和事件處理; 在View類中定義了控件的一些共同屬性(例如透明度、邊距、旋轉、縮放等)。ViewGroup類介紹 ViewGroup類是View類的一個抽象子類,是一種特殊的View; 是所有布局類和容器組件的超類,ViewGroup中可以包含View和ViewGroup對象; ViewGroup并沒有定義其包含的View如何擺放,提供了onLayout()抽象方法,由其子類定義各

2、自所包含的View的排列方式。 View和ViewGroup介紹View和ViewGroup關系 View與ViewGroup的關系類似于文件與文件夾的關系; View與ViewGroup組合使用,形成一種界面布局的層次結構。某界面的View控件結構圖控制界面顯示的兩種方法 通過XML布局文件設置控件屬性進行控制。 通過Java代碼調用控件類相應的方法進行控制。兩種方式都可以使界面達到預期的效果,實際上,XML文件的屬性與代碼中類的方法之間存在著一一對應的關系,可查看View類API介紹。控制界面顯示的兩種方法XML屬性屬性對應方法對應方法說明說明android:alphasetAlpha(f

3、loat)設置控件的透明度android:backgroundsetBackgroundResource(int)設置組件的背景android:clickablesetClickable(boolean)設置控件是否可以觸發點擊事件android:focusablesetFocusable(boolean)設置控件是否可以得到焦點android:idsetId(int)設置控件的唯一IDandroid:minHeightsetMinimumHeight(int)設置控件的最低高度android:minWidthsetMinimumWidth(int)設置控件的最低寬度android:paddi

4、ngsetPadding(int,int,int,int)在控件四邊設置邊距android:scaleXsetScaleX(float)設置控件在X軸方向的縮放android:visibilitysetVisibility(int)設置控件的可見性View類的常見類的常見XML屬性、對應方法及說明屬性、對應方法及說明控制界面顯示的兩種方法 完全使用Java代碼來控制用戶界面不僅繁瑣而且界面和邏輯代碼相混合,不利于解耦、分工。 完全使用XML布局文件雖然方便、便捷,但靈活性不好,不能動態改變屬性值。混合使用這兩種方式來控制界面,一般來說,習慣將一些變化少的、比較固定的、初始化的屬性放在XML文件

5、中管理,而對于那些需要動態變化的屬性則交給Java代碼控制。兩種方式的優缺點解決方案文本顯示框(TextView) TextView類直接繼承于View類,用于在界面上顯示文本信息,與Word中“字體”的功能類似,可以設置顯示文本的內容、顏色、大小、字體、風格等信息。XML屬性對應方法說明android:textsetText(String)設置文本的內容android:textColorsetTextColor(int)設置文本的顏色android:textSizesetTextSize(int,float)設置文本的大小android:textStylesetTypeface(Typefa

6、ce,int)設置文本的風格android:typefacesetTypeface(Typeface)設置文本的字體 TextView類的常見XML屬性、對應方法及說明文本顯示框(TextView) 在Android中經常需要設置尺寸,包括控件的寬度和高度、邊距、文本大小等,這些尺寸的單位各不相同,在Android提供了多種尺寸單位,常見有:為了適應不同分辨率、不同的屏幕密度的設備,推薦尺寸大小使用dp,文字大小使用sp。 px (像素pixels) :屏幕上真實像素表示,不同設備顯示效果相同,用于表示清晰度,像素越高越清晰。 dip或dp (device independent pixels

7、) :設備獨立像素,是一個抽象單位,基于屏幕的物理密度,1dp在不同密度的屏幕上對應的px不同,從而整體效果不變,dp可消除不同類型屏幕對布局的影響。 sp (Scale-independent Pixelsbest for text size) :比例獨立像素,主要處理字體的大小,可以根據屏幕自適應。文本顯示框(TextView) 除了上述幾乎所有文本處理軟件都擁有的屬性外,Android中的TextView還提供一些特殊功能,例如:自動識別文本中的各種鏈接、識別部分HTML標簽定義的格式、滾動顯示文字等。識別自動鏈接的屬性為:android:autoLink,該屬性的值有:unone:不匹

8、配任何格式,這是默認值。uweb:只匹配網址,網址會以超鏈接的形式顯示。uemail:只匹配電子郵箱,電子郵箱會以超鏈接的形式顯示。uphone:只匹配電話號碼,電話號碼會以超鏈接的形式顯示。umap:只匹配地圖地址,地理位置會以超鏈接的形式顯示。uall:匹配以上所有。 當匹配時,相應部分會以超鏈接形式顯示,單擊超鏈接,會自動調用相關程序。文本顯示框(TextView) 顯示部分HTML標簽定義的格式,需要Android中Html類的輔助,該類提供了一個fromHtml()方法,該方法可以識別字符串中的HTML標簽,返回值為Spanned類型,該類實現了CharSequence接口,可以作為

9、參數傳入setText()方法。TextView tv=(TextView)findViewById(R.id.myText); tv.setText(Html.fromHtml (“歡迎參加”+”手機軟件設計賽”); 首先為該文本框添加一個id屬性,然后在onCreate()方法中,通過findViewById(R.id.*),獲取該文本框,最后設置通過setText()方法來設置顯示的內容。 當文本框的內容過多,一行無法完全顯示時,TextView會如何處理呢?該屬性的值有:unone:默認,只顯示前半部分,自動截斷ustart:省略開始部分,用表示umiddle:省略中間部分,用表示ue

10、nd:省略結尾部分,用表示umarquee:滾動顯示文本內容 TextView默認會自動換行,同時也提供了一個android:ellipsize屬性,該屬性可以指定省略文本中的某部分內容,用省略號代替。文本顯示框(TextView) android:ellipsize屬性起作用的前提是文本框的內容超過文本框的寬度,并且設置文本框單行顯示。 android:ellipsize=marquee android:marqueeRepeatLimit=marquee_forever android:focusableInTouchMode=true android:singleLine=true an

11、droid:focusable=true當需要循環滾動顯示文本框的內容時,需要設置如下屬性:文本顯示框(TextView)滾動顯示無限循環單行顯示獲取焦點 android中的文本編輯框還可以在文本周圍顯示圖片,提供了如下幾個屬性: android:drawableBottom:在文字下方顯示圖片 android:drawableEnd:在文字結尾處顯示圖片 android:drawableLeft:在文字的左邊顯示圖片 android:drawablePadding:文字與圖片間的間距 android:drawableRight:在文字右邊顯示圖片 android:drawableStart:

12、在文字開始處顯示圖片 android:drawableTop:在文字上方顯示圖片文本顯示框(TextView) 文本編輯框(EditText)可以把TextView看成是一個文本編輯器的基類,但其本身不提供編輯功能,TextView有一個子類EditText,該控件允許用戶輸入,并且可設置輸入的類型。uandroid:hint:設置文本框內容為空時,文本框內顯示的提示信息(灰色),一旦輸入內容,該提示立即消失,當刪除文本框內容時,提示信息又會自動出現。uandroid:inputType:設置文本框的輸入類型,例如數字、電話號碼、密碼等。uandroid:selectAllOnFocus:設置

13、獲取焦點時,選中已有內容uandroid:minLines:設置文本編輯框的最少行數。EditText常用屬性 按鈕(Button)注意:Button是TextView的子類,是一個特殊的文本。按鈕是人機交互中一個關鍵的控件,主要用于發送請求、提交數據等,例如登錄、注冊等。Android中Button是TextView的子類,也可以顯示文本信息,相對于普通的TextView而言,Button的特殊之處在于可以接收事件,并對相應事件進行處理。例如單擊事件、雙擊事件、觸摸事件等。具體的事件處理將在后面進行講解。基礎界面控件使用示例 設計右圖所示效果。綜合運用TextView、EditText、Bu

14、tton控件。控件自上至下依次擺放。1. 熟悉View和ViewGroup類,理解它們之間的關系2. 嘗試使用兩種方式進行界面布局3. 嘗試使用TextView、EditText、Button控件的常用屬性,觀察效果4. 完成競賽歡迎界面設計休息與練習練習線性布局線性布局由LinearLayout類來表示,將容器里的控件一個挨一個地排列起來。排列方向只有兩種:水平排列和垂直排列。通過其android:orientation屬性來設置。當容器中控件的寬度總和或高度總和超過父容器的寬度或高度時,超過的部分如何顯示呢?當添加某一控件后,寬度超過父容器時,即該控件能顯示部分,但無法完整顯示時,該控件會

15、被壓縮,從而完全顯示,而再添加其他控件時,將不會顯示該控件。高度亦如此。如果需要完全顯示,怎么做?如果需要完全顯示,怎么做?( (添加滾動條添加滾動條) )android:layout_weight屬性android:layout_weight屬性表示控件所占剩余空間的權重,如果只有一個控件設置了該屬性,則該控件會占滿所有的空余空間,當有多個控件設置了該屬性,則多個控件按照比例大小分配多余空間。例如有三個控件水平排列,它們的layout_weight屬性值分別為:1、2、3,則表示第一個控件除了自己的寬度外還額外占剩余空間的1/6。(6=1+2+3)以此類推,第二個控件還額外占剩余空間的1/3

16、,第三個控件還額外占剩余空間的1/2。 剩余空間剩余空間=屏幕的寬度屏幕的寬度-第一個控件的寬度第一個控件的寬度-第二個控第二個控件的寬度件的寬度-第三個控件的寬度第三個控件的寬度。android:layout_weight屬性 注意:注意:如果此時有控件的寬度為填充整個屏幕,那么這時剩余空間會為一個負數,但仍然遵循上面的原理。 例如假設屏幕寬度為X,現在讓這三個控件的寬度都為填充父容器,即三個控件的寬度都為X,那么此時,剩余空間為X-X-X-X=-2X。那么此時各個控件的實際寬度為:那么此時各個控件的實際寬度為:第一個控件的寬度為第一個控件的寬度為X+(-2X)X+(-2X)* *1/6=2

17、/3X;1/6=2/3X;第二個控件的寬度為第二個控件的寬度為X+(-2X)X+(-2X)* *1/3=1/3X;1/3=1/3X;第三個控件的寬度為第三個控件的寬度為X+(-2X)X+(-2X)* *1/2=0X;1/2=0X;(即不顯示)(即不顯示)線性布局利用線性布局設計如下界面效果 將屏幕垂直分割成上中下三部分,它們的高度比例為1:4:1,然后將中間部分又分割為左中右三部分,它們的寬度比例為1:4:1 。表格布局 表格布局(TableLayout)指以行和列的形式對控件的排列方式進行管理。不需明確指定包含的行數和列數。 在表格布局中,通過添加TableRow來添加表格行,TableRo

18、w本身也是容器,可以添加其他控件,每添加一個控件,相當于該行添加了一列。 如果沒有添加TableRow而是直接在表格中添加控件,則該控件獨自占一行。 表格布局中所有列的寬度都一致,列的寬度由該列中最寬的那個單元決定,整個表格布局的寬度則取決于父容器的寬度。表格布局表格布局中的常見屬性: android:collapseColumns:隱藏指定的列,其值為列所在的序號,從0開始,如果需要隱藏多列,可用逗號隔開這些序號。 android:shrinkColumns:收縮指定的列以適合屏幕,使整行能夠完全顯示不會超出屏幕。 android:stretchColumns:擴展指定的列以填充空白部分。該

19、屬性用于某一行的內容不足以填充整個屏幕。 android:layout_column:指定控件在TableRow中列的序號。 android:layout_span:指定控件所跨越的列數,即將多列合并為一列。表格布局利用表格布局設計如下界面效果 界面中包含7個按鈕,它們以三行三列的表格形式排列,其中第一行第二列為空白,第三列的寬度充滿剩余部分,按鈕八占兩列。相對布局相對布局,顧名思義就是相對于某個控件的位置,由RelativeLayout類表示,這種布局的關鍵是找到一個合適的參照物,參照物有兩種:父容器和兄弟控件。參照物確定后,要想確定控件的位置,還需要指定它相對參照物的方位和對齊方式關系。由

20、于直接父容器有且只有一個,當參照物為父容器時,相關的屬性值只能為true或false;由于兄弟控件有很多,需通過控件id唯一確定。相對布局屬性屬性說明說明android:layout_centerInParent設置該控件是否位于父容器的正中央位置父容器的正中央位置android:layout_alignParentTop設置該控件是否與父容器頂端對齊父容器頂端對齊android:layout_alignParentBottom設置該控件是否與父容器底端對齊父容器底端對齊android:layout_ alignParentLeft設置該控件是否與父容器左邊對齊父容器左邊對齊android:l

21、ayout_ alignParentRight設置該控件是否與父容器右邊對齊父容器右邊對齊android:layout_toRightOf指定該控件位于給定的給定的ID控件控件的的右側右側android:layout_toLeftOf指定該控件位于給定的給定的ID控件控件的的左側左側android:layout_above指定該控件位于給定的給定的ID控件控件的的上方上方android:layout_below指定該控件位于給定的給定的ID控件控件的的下方下方android:layout_alignTop指定該控件與給定的ID控件的上邊界對齊android:layout_ alignBotto

22、m指定該控件與給定的ID控件的下邊界對齊android:layout_ alignLeft指定該控件與給定的ID控件的左邊界對齊android:layout_ alignRight指定該控件與給定的ID控件的右邊界對齊相對布局利用相對布局設計如下界面效果。 提示:以父容器為參照物存放中間的按鈕,然后以中間按鈕為參照物分別擺放上下左右四方的按鈕。 層布局(幀布局)層布局(FrameLayout)為每個加入其中的控件創建一個空白的區域,稱為一幀,每個子控件占據一幀,這些幀會根據layout_gravity屬性執行自動對齊。后添加的控件會覆蓋已有的控件,如同圖層一樣,未覆蓋的部分仍然可見。使用Fra

23、meLayout可以制作一些漸變效果。右圖所示:兩種設置對齊方式的比較 android:gravity表示的是控件里面內容的對齊方式,而android:layout_gravity表示的是整個控件在它的父容器中的對齊方式。 網格布局(GridLayout) 在Android4.0中,新增了一種網格布局(GridLayout),該布局吸納了線性布局、表格布局、相對布局的一些優點。它把整個容器劃分成rows行columns列個網格,每個網格可以放置一個控件,除此之外可以設置一個控件橫跨多少列、縱跨多少行,以及控件的擺放方向,是一行行排列,還是一列列擺放。 注意:由于網格布局是Android4.0中

24、新增的布局,因此需要在AndroidManifest.xml文件中將最低版本設置為14,android:minSdkVersion=14。網格布局(GridLayout)n android:rowCount:設置網格布局一共有多少行;n android:columnCount:設置網格布局一共有多少列;n android:orientation:設置網格布局中控件的排列方向,水平還是垂直,默認是水平的即按行排列,如果不指定包含多少列,則網格布局只包含一行,類似于水平的線性布局,如果指定包含多少列,則會根據列來自動換行;如果是按列排列,則需要指定網格布局中包含多少行,否則只有一列,類似于垂直的線

25、性布局,如果指定包含多少行,則會根據行來自動換列;n android:layout_row:設置該控件所在網格行的序號;n android:layout_rowSpan:設置該控件縱跨多少行;n android:layout_column:設置該控件所在網格列的序號;n android:layout_columnSpan:設置該控件橫跨多少列;網格布局(GridLayout) 該界面中包含一個文本編輯框(EditTextEditText)、28個按鈕(ButtonButton),文本編輯框的寬度為填充父填充父容器容器、行數最少為2 2行行。“0”按鈕寬度寬度是其他按鈕的兩倍兩倍,“=”按鈕的高

26、度高度是其他按鈕的兩倍兩倍。1.1.熟悉線性布局、表格布局、相對布局特點熟悉線性布局、表格布局、相對布局特點2.2.掌握掌握layout_weightlayout_weight屬性的含義及用法,能自主屬性的含義及用法,能自主實現按比例分割效果實現按比例分割效果3.3.布局的綜合使用,獨立完成計算器界面的設計布局的綜合使用,獨立完成計算器界面的設計休息與練習練習練習測試題1以下不屬于Android中的布局管理器的是( )。 A)FrameLayout B)GridLayout C)BorderLayout D)TableLayout2在水平線性布局中,設置以下哪個可以使得控件的寬度按一定的比例顯

27、示。( ) A)android:layout_width B)android:layout_weight C)android: layout_margin D)android:layout_gravity3在相對布局中,如果想讓控件居中顯示,則可設置該控件的( )。 A)android:gravity=“center” B)android:layout_gravity=“center” C)android:layout_centerInParent=“true” D)android :scaleType=“center”做一做 請分別使用線性布局線性布局、相對布局相對布局、表格布局表格布局實現

28、如圖所示界面效果。界面中包含一個文本編輯框(EditTextEditText)和一個按鈕(ButtonButton),要求按鈕位于右邊按鈕位于右邊,除了按鈕的除了按鈕的寬度,其它空間全都給文本編輯框寬度,其它空間全都給文本編輯框,文本編輯框內有提示信息。做一做 綜合運用所學知識,設計出如圖所示界面效果。將界面分為上下上下兩部分兩部分,中間有中間有10dp10dp的間距的間距。上半部分中包含兩個TextView控件,分別用于顯示標題和下方的聯系信息。下半部分有若干個顏色塊疊加效若干個顏色塊疊加效果果。(提示提示:多種布局嵌套使用多種布局嵌套使用)開發自定義View 創建一個用于表示自定義控件的類

溫馨提示

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

評論

0/150

提交評論