android 界面组件,安卓开发学习周第三篇——Android中的UI组件
原標題:安卓開發學習周第三篇——Android中的UI組件
在Android APP中,所有的用戶界面元素都是由View和ViewGroup的對象構成的。View是繪制在屏幕上的用戶能與之交互的一個對象。而ViewGroup則是一個用于存放其他View(和ViewGroup)對象的布局容器!Android為我們提供了一個View和ViewGroup子類的集合,集合中提供了一些常用的輸入控件(比如按鈕和文本域)和各種各樣的布局模式(比如線性或相對布局)。下面介紹一些相關知識。
1、User Interface Layout
你的APP的用戶界面上的每一個組件都是使用View和ViewGroup對象的層次結構來構成的,每個ViewGroup都是要給看不見的用于組織子View的容器,而它的子View可能是輸入控件或者在UI上繪制了某塊區域的小部件。有了層次樹,你就可以根據自己的需要,設計簡單或者復雜的布局了(布局越簡單性能越好),下圖就是一個UI布局的層次結構的插圖。
定義你的布局,你可以在代碼中實例化View對象并且開始構建你的樹,但最容易和最高效的方式來定義你的布局則是使用一個XML文件,用XML來構成布局更加符合人的閱讀習慣,而XML類似與HTML 使用XML元素的名稱代表一個View。所以< TextView >元素會在你的界面中創建一個TextView控件,而一個< LinearLayout >則會創建一個LinearLayout的容器!
2、Android中的六大布局
分別是:LinearLayout(線性布局),RelativeLayout(相對布局),TableLayout(表格布局) FrameLayout(幀布局),AbsoluteLayout(絕對布局),GridLayout(網格布局)。而對于LinearLayout(線性布局),我們屏幕適配的使用用的比較多的就是LinearLayout的weight(權重屬性)。
但是使用LinearLayout的時候也有一個問題,就是當界面比較復雜的時候,需要嵌套多層的 LinearLayout,這樣就會降低UI Render的效率(渲染速度),而且如果是listview或者GridView上的 item,效率會更低。但是如果我們使用RelativeLayout的話,可能僅僅需要一層就可以完成了,以父容器或者兄弟組件參考+margin +padding就可以設置組件的顯示位置,是比較方便的!當然,也不是絕對的,具體問題具體分析吧!總結就是:盡量使用RelativeLayout + LinearLayout的weight屬性搭配使用吧!
對于布局我們就暫時先介紹這兩種,同學們感興趣的可以自學一下其他布局。
3、TextView(文本框),用于顯示文本的一個控件。
在開始前,先要介紹下幾個單位:
dp(dip): device independent pixels(設備獨立像素). 不同設備有不同的顯示效果,這個和設備硬件有關,一般我們為了支持WVGA、HVGA和QVGA 推薦使用這個,不依賴像素。
px: pixels(像素). 不同設備顯示效果相同,一般我們HVGA代表320x480像素,這個用的比較多。
pt: point,是一個標準的長度單位,1pt=1/72英寸,用于印刷業,非常簡單易用。
sp: scaled pixels(放大像素). 主要用于字體顯示best for textsize。
TextView中有下述幾個屬性:
id:為TextView設置一個組件id,根據id,我們可以在Java代碼中通過findViewById()的方法獲取到該對象,然后進行相關屬性的設置,又或者使用RelativeLayout時,參考組件用的也是id!
layout_width:組件的寬度,一般寫:**wrap_content**或者**match_parent(fill_parent)**,前者是控件顯示的內容多大,控件就多大,而后者會填滿該控件所在的父容器;當然也可以設置成特定的大小,比如我這里為了顯示效果,設置成了200dp。
layout_height:組件的寬度,內容同上。
gravity:設置控件中內容的對齊方向,TextView中是文字,ImageView中是圖片等等。
text:設置顯示的文本內容,一般我們是把字符串寫到string.xml文件中,然后通過@String/xxx取得對應的字符串內容的,這里為了方便我直接就寫到""里,不建議這樣寫!!!
textColor:設置字體顏色,同上,通過colors.xml資源來引用,別直接這樣寫!
textStyle:設置字體風格,三個可選值:**normal**(無效果),**bold**(加粗),**italic**(斜體)
textSize:字體大小,單位一般是用sp!
background:控件的背景顏色,可以理解為填充整個控件的顏色,可以是圖片哦!
4、ImageView(圖像視圖)
(1)src屬性和background屬性的區別:
在API文檔中我們發現ImageView有兩個可以設置圖片的屬性,分別是:src和background,以下是他們之間的區別。
①background通常指的都是背景,而src指的是內容!!
②當使用src填入圖片時,是按照圖片大小直接填充,并不會進行拉伸,而使用background填入圖片,則是會根據ImageView給定的寬度來進行拉伸。
(2)解決blackground拉伸導致圖片變形的方法。
這個適用于動態加載ImageView的,代碼也簡單,只要在添加View的時候,把大小寫死就可以了。
除了動態加載view,更多的時候,我們還是會通過xml布局的方式引入ImageView的 解決方法也不難,就是通過drawable的Bitmap資源文件來完成,然后blackground屬性設置為該文件即可!這個xml文件在drawable文件夾下創建,這個文件夾是要自己創建的哦!!
adjustViewBounds設置縮放是否保存原圖長寬比
ImageView為我們提供了adjustViewBounds屬性,用于設置縮放時是否保持原圖長寬比! 單獨設置不起作用,需要配合maxWidth和maxHeight屬性一起使用!而后面這兩個屬性 也是需要adjustViewBounds為true才會生效的。
android:maxHeight:設置ImageView的最大高度。
android:maxWidth:設置ImageView的最大寬度。
scaleType設置縮放類型
android:scaleType用于設置顯示的圖片如何縮放或者移動以適應ImageView的大小 Java代碼中可以通過imageView.setScaleType(ImageView.ScaleType.CENTER)來設置。可選值如下:
fitXY:對圖像的橫向與縱向進行獨立縮放,使得該圖片完全適應ImageView,但是圖片的橫縱比可能會發生改變。
fitStart:保持縱橫比縮放圖片,知道較長的邊與Image的編程相等,縮放完成后將圖片放在ImageView的左上角。
fitCenter:同上,縮放后放于中間;
fitEnd:同上,縮放后放于右下角;
center:保持原圖的大小,顯示在ImageView的中心。當原圖的size大于ImageView的size,超過部分裁剪處理。
centerCrop:保持橫縱比縮放圖片,知道完全覆蓋ImageView,可能會出現圖片的顯示不完全
centerInside:保持橫縱比縮放圖片,直到ImageView能夠完全地顯示圖片。
matrix:默認值,不改變原圖的大小,從ImageView的左上角開始繪制原圖, 原圖超過ImageView的部分作裁剪處理。
第四部分講解了ImageView(圖像視圖),內容看上很多,不過都是一些詳述性的東西,知道即可。
以上內容就是安卓開發頁面設置的一些內容。返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的android 界面组件,安卓开发学习周第三篇——Android中的UI组件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英语语法---介词详解
- 下一篇: android sina oauth2.