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