在寫前一篇文章 淺述Android Apk打包流程 的時候發(fā)現(xiàn)解壓后的apk里res的資源文件,有多于我本地項目中的res資源文件夾。
成都創(chuàng)新互聯(lián)公司服務項目包括海林網站建設、海林網站制作、海林網頁制作以及海林網絡營銷策劃等。多年來,我們專注于互聯(lián)網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網行業(yè)的解決方案,海林網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到海林省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
如果我的項目中依賴了Android的一些庫,比如design庫,design里面有自己的res,那么在打包我的項目的時候,這些res會合并一起打包。
我查看了下,我確實依賴了design等庫。
對比一下前三張圖,我本地項目沒有建anim、anim-v21、animator-v21(不再截圖了)等資源文件夾,但是design庫有,最終一并打包到我的項目中。
res目錄下的文件夾是有命名規(guī)則的,不能隨便起,為的是要適配不同的設備,而且是要做到最佳的資源匹配。
2.1、資源標簽屬性及優(yōu)先級
除了分辨率外,同種資源之間可以有下面許多資源屬性標簽,它們在匹配過程中是有優(yōu)先級順序的。大家可以快速瀏覽一下即可。以下資源標簽修飾語按照優(yōu)先級從高到低的順序排列。
3、Locale(語言和區(qū)域)
例如en表示英語,fr表示法語,en-rUS表示英語和美國地區(qū)。不區(qū)分大小寫,r用于區(qū)分區(qū)域碼。
4、Layout Direction(布局方向)
ldrtl,布局方向從右到左(阿拉伯語等會這樣布局);ldltr,布局方向從左到右,是默認的隱式值。(這就解答了我前面第二個提的問題了)
5、Smallest Screen Width(最小寬度)
swNdp,屏幕的基本尺寸。
sw320dp:適用于320 320 ldpi、320 480 mdpi、480 480 hdpi
sw600dp:適用于600 1024mdpi (7英寸的平板電腦)
sw720dp:適用于720*1280 mdpi (10英寸平板電腦)
當你的屏幕的絕對寬度大于600dp時,屏幕就會自動調用layout-sw600dp文件夾里面的布局。這里的絕對寬度是指手機的實際寬度,即與手機是否橫屏沒關系,也就是手機較小的邊的長度。
6、Screen Width(屏幕寬度)
wNdp ,設備的可用寬度值隨著當前是橫屏還是豎屏會產生變化,即它表示的是當前真實的寬度值。即當手機豎屏時,為較小邊的長度;當手機橫屏時,為較長邊的長度。
7、Screen Height(屏幕高度)
hNdp,與lScreen Width的使用一樣,只是這里指的是相對的高度。指手機相對放置的高度;即當手機豎屏時,為較長邊的長度;當手機橫屏時,為較小邊的長度。
8、Size(屏幕大?。?/p>
samll:低密度,最小布局尺寸為320 426dp
normal:中等密度,標準屏幕最小布局尺寸約為320 470dp
large:中等密度,大屏幕最小布局尺寸為480 640dp
xlarge:大于中等密度,最小布局尺寸為720 960dp?;居糜谄桨咫娔X。
該配置并不僅適用于指定設備,如果沒有匹配的資源,會選擇與之最近的。 如果所有資源均大于當前屏幕的尺寸限定符,則系統(tǒng)不會使用這些資源,且應用運行時會崩潰。
9、Ratio(屏幕縱橫比)
long:寬屏
notlong:非寬屏
10、Orientation(屏幕方向)
port:豎向的
land:橫向的
square:正方形的(我也不知道這個是什么樣子的)
11、UI Mode(UI模式)
無、car、desk、 television、appliance、 watch6種模式。(其實我沒看明白是干嘛的,哈哈)
12、Night Mode(夜間模式)
night:夜間模式
notnight:非夜間模式
可以通過UiModeManager來開啟和關閉這一功能。
13、Density(屏幕像素密度)
ldpi:低密度,約120dpi;mdpi:中等密度,160dpi;hdpi:高密度,240dpi;xhdpi:超高密度,320dpi;xxhdpi:超超高密度,480dpi;xxxhdpi:超超超高密度,640dpi;nodpi:不希望以匹配設備密度的位圖資源;tvdpi:主要用于電視,約213dpi。anydpi:適用于所有密度,優(yōu)先級高于其他限定符。
14、Touch Screen(觸摸屏)
notouch:設備不帶觸摸屏
stylus:觸摸屏通過手寫筆操作
finger:觸摸屏通過手指操作
15、Keyboard(鍵盤可用性)
keysexposed:設備有可用鍵盤。如果當前的軟鍵盤被啟用,那么即便設備沒有鍵盤或者鍵盤不可用,這個狀態(tài)仍可能有效。
keyshidden:設備有鍵盤,但當前被隱藏,而且沒有軟鍵盤啟用。
keyssoft:設備當前軟鍵盤啟動,即便它處于可見或不可見狀態(tài)。
16、Text Input(文本輸入法)
nokeys:設備不帶用用于文本輸入的按鍵
qwerty:設備具有標準硬鍵盤(無論是否對用戶可見)
12key:設備具有 12 鍵硬鍵盤(無論是否對用戶可見)
17、Navigation State(定位鍵可用性)
描述定位鍵是否可用,指的是光標定位,非GPS導航的定位。
navexposed:定位鍵對用戶可用
navhidden:定位鍵對用戶不可用
18、Navigation Method(主要的非觸摸屏定位方式)
nonav:設備除了觸摸屏外沒有其他定位方式
dpad:設備具有用于導航的方向鍵
trackball:設備具有用于導航的軌跡球
wheel:設備有方向滾輪用于定位,不常用
19、Dimension(尺寸)
20、Version(平臺版本)
設備支持的 API 級別。例如v4 對應于 API 級別 4,帶有 Android 1.6 或更高版本系統(tǒng)的設備。
2.2、怎么在AS中創(chuàng)建這些文件夾呢?
beforeDescendants:viewgroup會優(yōu)先其子類控件而獲取到焦點
afterDescendants:viewgroup只有當其子類控件不需要獲取焦點時才獲取焦點
blocksDescendants:viewgroup會覆蓋子類控件而直接獲得焦點
android:drawSelectorOnTop="true" 點擊某一條記錄,顏色會顯示在最上面,記錄上的文字被遮住,所以點擊文字不放,文字就看不到
android:drawSelectorOnTop="false" 點擊某條記錄不放,顏色會在記錄的后面,成為背景色,但是記錄內容的文字是可見的
fadingEdgeLength表示陰影部分的高度,requiresFadingEdge表示陰影的方向
android:fastScrollEnabled="true"
是讓ListView出現(xiàn)快速滾動的按鈕,比較少的item時候不會出現(xiàn),多了就會出現(xiàn)。不出現(xiàn)原因是數(shù)據(jù)不多的原因,只要數(shù)據(jù)足夠多,才會自動出現(xiàn)的。
android:footerDividersEnabled="true" 和android:headerDividersEnabled="true”對應。
api說明是:設成flase時,此ListView將不會在頁腳或者頭部視圖 前畫分隔符。此屬性缺省值為true。
這說明這個屬性只對頁腳或者頭部起作用,如果listview中沒有添加頁腳這個屬性就不起作用。
指示該列表總是在固定的單色、不透明的背景下繪制。這允許列表優(yōu)化其繪制過程
為真時,列表會使用更精確的基于條目在屏幕上的可見像素高度的計算方法。 默認該屬性為真,如果你的適配器需要繪制可變高的條目,他應該設為假。 當該屬性為真時,你在適配器在顯示變高條目時,滾動條的把手會在滾動的 過程中改變大小。當設為假時,列表只使用適配器中的條目數(shù)和屏幕上的 可見條目來決定滾動條的屬性
在 Android 動畫中,總共有兩種類型的動畫View Animation(視圖動畫)和Property Animator(屬性動畫);其中
View Animation包括Tween Animation(補間動畫)和Frame Animation(逐幀動畫);
Property Animator包括ValueAnimator和ObjectAnimation;
首先,直觀上,他們有如下三點不同:
1、引入時間不同: View Animation是API Level 1就引入的。Property Animation是API Level 11引入的,即Android 3.0才開始有Property Animation相關的API。
2、所在包名不同: View Animation在包android.view.animation中。而Property Animation API在包 android.animation中。
3、動畫類的命名不同: View Animation中動畫類取名都叫XXXXAnimation,而在Property Animator中動畫類的取名則叫XXXXAnimator大家都知道逐幀動畫主要是用來實現(xiàn)動畫的,而補間動畫才能實現(xiàn)控件的漸入漸出、移動、旋轉和縮放的;而Property Animator是在Android 3.0版本才引入的,之前是沒有的。
為什么還要引入Property Animator呢?
1、為什么引入Property Animator(屬性動畫)
我提出一個假設:請問大家,如何利用補間動畫來將一個控件的背景色在一分鐘內從綠色變?yōu)榧t色?這個效果想必沒辦法僅僅通過改變控件的漸入漸出、移動、旋轉和縮放來實現(xiàn)吧,而這個效果是可以通過Property Animator完美實現(xiàn)的
**這就是第一個原因:Property Animator能實現(xiàn)補間動畫無法實現(xiàn)的功能 **大家都知道,補間動畫和逐幀動畫統(tǒng)稱為View Animation,也就是說這兩個動畫只能對派生自View的控件實例起作用;而Property Animator則不同,從名字中可以看出屬性動畫,應該是作用于控件屬性的!正因為屬性動畫能夠只針對控件的某一個屬性來做動畫,所以也就造就了他能單獨改變控件的某一個屬性的值!比如顏色!這就是Property Animator能實現(xiàn)補間動畫無法實現(xiàn)的功能的最重要原因。
**我們得到了第二點不同:View Animation僅能對指定的控件做動畫,而Property Animator是通過改變控件某一屬性值來做動畫的。
**假設我們將一個按鈕從左上角利用補間動畫將其移動到右下角,在移動過程中和移動后,這個按鈕都是不會響應點擊事件的。這是為什么呢?因為補間動畫僅僅轉變的是控件的顯示位置而已,并沒有改變控件本身的值。View Animation的動畫實現(xiàn)是通過其Parent View實現(xiàn)的,在View被drawn時Parents View改變它的繪制參數(shù),這樣雖然View的大小或旋轉角度等改變了,但View的實際屬性沒變,所以有效區(qū)域還是應用動畫之前的區(qū)域;我們看到的效果僅僅是系統(tǒng)作用在按鈕上的顯示效果,利用動畫把按鈕從原來的位置移到了右下角,但按鈕內部的任何值是沒有變化的,所以按鈕所捕捉的點擊區(qū)域仍是原來的點擊區(qū)域。(下面會舉例來說明這個問題)
這就得到了第三點不同:補間動畫雖能對控件做動畫,但并沒有改變控件內部的屬性值。而Property Animator則是恰恰相反,Property Animator是通過改變控件內部的屬性值來達到動畫效果的
我們前面講了Property Animator包括ValueAnimator和ObjectAnimator;這篇文章就主要來看看ValueAnimator的使用方法吧。
我覺得谷歌那幫老頭是最會起名字的人,單從命名上,就能看出來這個東東的含義。ValueAnimator從名字可以看出,這個Animation是針對值的! ValueAnimator不會對控件做任何操作,我們可以給它設定從哪個值運動到哪個值,通過監(jiān)聽這些值的漸變過程來自己操作控件。 它會自己計算動畫的過程,然后我們需要監(jiān)聽它的動畫過程來自己操作控件。
這就是ValueAnimator的功能:ValueAnimator對指定值區(qū)間做動畫運算,我們通過對運算過程做監(jiān)聽來自己操作控件。
總而言之就是兩點:
1. ValueAnimator只負責對指定的數(shù)字區(qū)間進行動畫運算
2. 我們需要對運算過程進行監(jiān)聽,然后自己對控件做動畫操作
插值器的意義其實就相當于物理公式中的加速度參數(shù),所以這也就是它也叫加速器的原因。 如何自定義插值器:
**input參數(shù)與任何我們設定的值沒關系,只與時間有關,隨著時間的增長,動畫的進度也自然的增加,input參數(shù)就代表了當前動畫的進度。而返回值則表示動畫的當前數(shù)值進度 **
在getInterpolation函數(shù)中,我們將進度反轉過來,當傳0的時候,我們讓它數(shù)值進度在完成的位置,當完成的時候,我們讓它在開始的位置
ObjectAnimator是派生自ValueAnimator的,所以ValueAnimator中所能使用的方法,在ObjectAnimator中都可以正常使用。ObjectAnimator重寫了幾個方法,比如ofInt(),ofFloat()等。利用ObjectAnimator重寫的ofFloat方法如何實現(xiàn)一個動畫:(改變透明度)
前面我們都是定義多個值,即至少兩個值之間的變化,那如果我們只定義一個值呢,如下面的方式:(同樣以MyPointView為例)
僅且僅當我們只給動畫設置一個值時,程序才會調用屬性對應的get函數(shù)來得到動畫初始值。如果動畫沒有初始值,那么就會使用系統(tǒng)默認值。比如ofInt()中使用的參數(shù)類型是int類型的,而系統(tǒng)的Int值的默認值是0,所以動畫就會從0運動到100;也就是系統(tǒng)雖然在找到不到屬性對應的get函數(shù)時,會給出警告,但同時會用系統(tǒng)默認值做為動畫初始值。
如果通過給自定義控件MyPointView設置了get函數(shù),那么將會以get函數(shù)的返回值做為初始值。
根據(jù) View setBackGroundColor() 方法可以自定義條用屬性動畫。
TextView屬性匯總
android:autoLink設置是否當文本為URL鏈接/email/電話號碼/map時,文本顯示為可點擊的鏈接??蛇x值(none/web/email/phone/map/all)
android:autoText如果設置,將自動執(zhí)行輸入值的拼寫糾正。此處無效果,在顯示輸入法并輸入的時候起作用。
android:bufferType指定getText()方式取得的文本類別。選項editable 類似于StringBuilder可追加字符,也就是說getText后可調用append方法設置文本內容。spannable 則可在給定的字符區(qū)域使用樣式,參見這里1、這里2。
android:capitalize設置英文字母大寫類型。此處無效果,需要彈出輸入法才能看得到,參見EditView此屬性說明。
android:cursorVisible設定光標為顯示/隱藏,默認顯示。
android:digits設置允許輸入哪些字符。如“1234567890.+-*/% ()”
android:drawableBottom在text的下方輸出一個drawable,如圖片。如果指定一個顏色的話會把text的背景設為該顏色,并且同時和background使用時覆蓋后者。
android:drawableLeft在text的左邊輸出一個drawable,如圖片。
android:drawablePadding設置text與drawable(圖片)的間隔,與drawableLeft、 drawableRight、drawableTop、drawableBottom一起使用,可設置為負數(shù),單獨使用沒有效果。
android:drawableRight在text的右邊輸出一個drawable。
android:drawableTop在text的正上方輸出一個drawable。
android:editable設置是否可編輯。
android:editorExtras設置文本的額外的輸入數(shù)據(jù)。
android:ellipsize設置當文字過長時,該控件該如何顯示。有如下值設置:”start”—-省略號顯示在開頭;”end” ——省略號顯示在結尾;”middle”—-省略號顯示在中間;”marquee” ——以跑馬燈的方式顯示(動畫橫向移動)
android:freezesText設置保存文本的內容以及光標的位置。
android:gravity設置文本位置,如設置成“center”,文本將居中顯示。
android:hintText為空時顯示的文字提示信息,可通過textColorHint設置提示信息的顏色。此屬性在 EditView中使用,但是這里也可以用。
android:imeOptions附加功能,設置右下角IME動作與編輯框相關的動作,如actionDone右下角將顯示一個“完成”,而不設置默認是一個回車符號。這個在EditView中再詳細說明,此處無用。
android:imeActionId設置IME動作ID。
android:imeActionLabel設置IME動作標簽。
android:includeFontPadding設置文本是否包含頂部和底部額外空白,默認為true。
android:inputMethod為文本指定輸入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是這里報錯找不到。
android:inputType設置文本的類型,用于幫助輸入法顯示合適的鍵盤類型。在EditView中再詳細說明,這里無效果。
android:linksClickable設置鏈接是否點擊連接,即使設置了autoLink。
android:marqueeRepeatLimit在ellipsize指定marquee的情況下,設置重復滾動的次數(shù),當設置為 marquee_forever時表示無限次。
android:ems設置TextView的寬度為N個字符的寬度。這里測試為一個漢字字符寬度
android:maxEms設置TextView的寬度為最長為N個字符的寬度。與ems同時使用時覆蓋ems選項。
android:minEms設置TextView的寬度為最短為N個字符的寬度。與ems同時使用時覆蓋ems選項。
android:maxLength限制顯示的文本長度,超出部分不顯示。
android:lines設置文本的行數(shù),設置兩行就顯示兩行,即使第二行沒有數(shù)據(jù)。
android:maxLines設置文本的最大顯示行數(shù),與width或者layout_width結合使用,超出部分自動換行,超出行數(shù)將不顯示。
android:minLines設置文本的最小行數(shù),與lines類似。
android:lineSpacingExtra設置行間距。
android:lineSpacingMultiplier設置行間距的倍數(shù)。如”1.2”
android:numeric如果被設置,該TextView有一個數(shù)字輸入法。此處無用,設置后唯一效果是TextView有點擊效果,此屬性在EdtiView將詳細說明。
android:password以小點”.”顯示文本
android:phoneNumber設置為電話號碼的輸入方式。
android:privateImeOptions設置輸入法選項,此處無用,在EditText將進一步討論。
android:scrollHorizontally設置文本超出TextView的寬度的情況下,是否出現(xiàn)橫拉條。
android:selectAllOnFocus如果文本是可選擇的,讓他獲取焦點而不是將光標移動為文本的開始位置或者末尾位置。 TextView中設置后無效果。
android:shadowColor指定文本陰影的顏色,需要與shadowRadius一起使用。
android:shadowDx設置陰影橫向坐標開始位置。
android:shadowDy設置陰影縱向坐標開始位置。
android:shadowRadius設置陰影的半徑。設置為0.1就變成字體的顏色了,一般設置為3.0的效果比較好。
android:singleLine設置單行顯示。如果和layout_width一起使用,當文本不能全部顯示時,后面用“…”來表示。如android:text="test_ singleLine "
android:singleLine="true" android:layout_width="20dp"將只顯示“t…”。如果不設置singleLine或者設置為false,文本將自動換行
android:text設置顯示文本.
android:textAppearance設置文字外。如 “?android:attr/textAppearanceLargeInverse”這里引用的是系統(tǒng)自帶的一個外觀,?表示系統(tǒng)是否有這種外觀,否則使用默認的外觀。可textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse
android:textColor設置文本顏色
android:textColorHighlight被選中文字的底色,默認為藍色
android:textColorHint設置提示信息文字的顏色,默認為灰色。與hint一起使用。
android:textColorLink文字鏈接的顏色.
android:textScaleX設置文字之間間隔,默認為1.0f。
android:textSize設置文字大小,推薦度量單位”sp”,如”15sp”
android:textStyle設置字形[bold(粗體) 0, italic(斜體) 1, bolditalic(又粗又斜) 2] 可以設置一個或多個,用“|”隔開
android:typeface設置文本字體,必須是以下常量值之一:normal 0, sans 1, serif 2, monospace(等寬字體) 3]
android:height設置文本區(qū)域的高度,支持度量單位:px(像素)/dp/sp/in/mm(毫米)
android:maxHeight設置文本區(qū)域的最大高度
android:minHeight設置文本區(qū)域的最小高度
android:width設置文本區(qū)域的寬度,支持度量單位:px(像素)/dp/sp/in/mm(毫米),與layout_width 的區(qū)別看這里。
android:maxWidth設置文本區(qū)域的最大寬度
android:minWidth設置文本區(qū)域的最小寬度
Android activity屬性匯總
android:allowTaskReparenting
是否允許activity更換從屬的任務,比如從短信息任務 切換到瀏覽器任務。
android:alwaysRetainTaskState
是否保留狀態(tài)不變, 比如切換回home, 再從新打開, activity處于最后的狀態(tài)
android:clearTaskOnLanunch
比如 P 是 activity, Q 是被P 觸發(fā)的 activity, 然后返回Home, 從新啟動 P, 是否顯示 Q
android:configChanges
當配置list發(fā)生修改時,是否調用 onConfigurationChanged() 方法 比如 "locale|navigation|orientation".
android:enabled
activity 是否可以被實例化,
android:excludeFromRecents
是否可被顯示在最近打開的activity列表里
android:exported
是否允許activity被其它程序調用
android:finishOnTaskLaunch
是否關閉已打開的activity當用戶重新啟動這個任務的時候
android.icon
android:label
android:launchMode
activity啟動方式, "standard" "singleTop" "singleTask" "singleInstance"
其中前兩個為一組, 后兩個為一組
android:multiprocess
允許多進程
android:name
activity的類名, 必須指定
androidnHistory
是否需要移除這個activity當用戶切換到其他屏幕時。 這個屬性是 API level 3 中引入的
android:permission
android:process
一 個activity運行時所在的進程名,所有程序組件運行在應用程序默認的進程中,這個進程名跟應用程序的包名一致。中的元素process屬性能夠為所有組件設定一個新的默認值。但是任何組件都可以覆蓋這個默認值,允許你將你的程序放在多進程中運行。 如果這個屬性被分配的名字以:開頭,當這個activity運行時, 一個新的專屬于這個程序的進程將會被創(chuàng)建。 如果這個進程名以小寫字母開頭,這個activity將會運行在全局的進程中,被它的許可所提供。
android:screenOrientation
activity顯示的模式, "unspecified" 默認值 "landscape" 風景畫模式,寬度比高度大一些 "portrait" 肖像模式, 高度比寬度大。 "user" 用戶的設置 "behind" "sensor" "nosensor"
android:stateNotNeeded
是否 activity被銷毀和成功重啟并不保存狀態(tài)
android:taskAffinity
activity的親屬關系, 默認情況同一個應用程序下的activity有相同的關系
android:theme
activity的樣式主題, 如果沒有設置,則activity的主題樣式從屬于應用程序, 參見元素的theme屬性
android:windowSoftInputMode
activity主窗口與軟鍵盤的交互模式, 自從API level 3 被引入
活動的主窗口如何與包含屏幕上的軟鍵盤窗口交互。這個屬性的設置將會影響兩件事情:
1? ? 軟鍵盤的狀態(tài)——是否它是隱藏或顯示——當活動(Activity)成為用戶關注的焦點。
2? ? 活動的主窗口調整——是否減少活動主窗口大小以便騰出空間放軟鍵盤或是否當活動窗口的部分被軟鍵盤覆蓋時它的內容的當前焦點是可見的。
它的設置必須是下面列表中的一個值,或一個”state…”值加一個”adjust…”值的組合。在任一組設置多個值——多個”state…”values,例如&mdash有未定義的結果。各個值之間用|分開。例如: activity android:windowSoftInputMode="stateVisible|adjustResize" . . .
在這設置的值(除"stateUnspecified"和"adjustUnspecified"以外)將覆蓋在主題中設置的值
值 描述
"stateUnspecified" 軟鍵盤的狀態(tài)(是否它是隱藏或可見)沒有被指定。系統(tǒng)將選擇一個合適的狀態(tài)或依賴于主題的設置。這個是為了軟件盤行為默認的設置。
"stateUnchanged" 軟鍵盤被保持無論它上次是什么狀態(tài),是否可見或隱藏,當主窗口出現(xiàn)在前面時。
"stateHidden" 當用戶選擇該Activity時,軟鍵盤被隱藏——也就是,當用戶確定導航到該Activity時,而不是返回到它由于離開另一個Activity。
"stateAlwaysHidden" 軟鍵盤總是被隱藏的,當該Activity主窗口獲取焦點時。
"stateVisible" 軟鍵盤是可見的,當那個是正常合適的時(當用戶導航到Activity主窗口時)。
"stateAlwaysVisible" 當用戶選擇這個Activity時,軟鍵盤是可見的——也就是,也就是,當用戶確定導航到該Activity時,而不是返回到它由于離開另一個Activity。
"adjustUnspecified" 它不被指定是否該Activity主窗口調整大小以便留出軟鍵盤的空間,或是否窗口上的內容得到屏幕上當前的焦點是可見的。系統(tǒng)將自動選擇這些模式中一種主要依賴于是否窗口的內容有任何布局視圖能夠滾動他們的內容。如果有這樣的一個視圖,這個窗口將調整大小,這樣的假設可以使?jié)L動窗口的內容在一個較小的區(qū)域中可見的。這個是主窗口默認的行為設置。
"adjustResize" 該Activity主窗口總是被調整屏幕的大小以便留出軟鍵盤的空間。
"adjustPan" 該Activity主窗口并不調整屏幕的大小以便留出軟鍵盤的空間。相反,當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分。這個通常是不期望比調整大小,因為用戶可能關閉軟鍵盤以便獲得與被覆蓋內容的交互操作。
Android EditText 屬性匯總
android:layout_gravity="center_vertical"
設置控件顯示的位置:默認top,這里居中顯示,還有bottom
android:hint="請輸入數(shù)字!"
設置顯示在空間上的提示信息
android:numeric="integer"
設置只能輸入整數(shù),如果是小數(shù)則是:decimal
android:singleLine="true"
設置單行輸入,一旦設置為true,則文字不會自動換行。
android:password="true"
設置只能輸入密碼
android:textColor = "#ff8c00"
字體顏色
android:textStyle="bold"
字體,bold, italic, bolditalic
android:textSize="20dip"
大小
android:capitalize = "characters"
以大寫字母寫
android:textAlign="center"
EditText沒有這個屬性,但TextView有
android:textColorHighlight="#cccccc"
被選中文字的底色,默認為藍色
android:textColorHint="#ffff00"
設置提示信息文字的顏色,默認為灰色
android:textScaleX="1.5"
控制字與字之間的間距
android:typeface="monospace"
字型,normal, sans, serif, monospace
android:background="@null"
空間背景,這里沒有,指透明
android:layout_weight="1"
權重,控制控件之間的地位,在控制控件顯示的大小時蠻有用的。
android:textAppearance="?android:attr/textAppearanceLargeInverse"
文字外觀,這里引用的是系統(tǒng)自帶的一個外觀,?表示系統(tǒng)是否有這種外觀,否則使用默認的外觀。不知道這樣理解對不對?
通過EditText的layout xml文件中的相關屬性來實現(xiàn):
1. 密碼框屬性 android:password="true"? 這條可以讓EditText顯示的內容自動為星號,輸入時內容會在1秒內變成*字樣。
2. 純數(shù)字 android:numeric="true" 這條可以讓輸入法自動變?yōu)閿?shù)字輸入鍵盤,同時僅允許0-9的數(shù)字輸入
3. 僅允許 android:capitalize="cwj1987" 這樣僅允許接受輸入cwj1987,一般用于密碼驗證
下面是一些擴展的風格屬性
android:editable="false" 設置EditText不可編輯
android:singleLine="true" 強制輸入的內容在單行
android:ellipsize="end" 自動隱藏尾部溢出數(shù)據(jù),一般用于文字內容過長一行無法全部顯示時
---------------------
表格布局,適用于多行多列的布局格式,每個TableLayout是由多個 TableRow 組成,一個 TableRow 就表示 TableLayout 中的每一行,這一行可以由多個子元素組成。實際上 TableLayout 和 TableRow 都是 LineLayout 線性布局的子類。但是 TableRow 的參數(shù) android?rientation 屬性值固定為 horizontal ,且 android:layout_width=MATCH_PARENT , android:layout_height=WRAP_CONTENT 。所以 TableRow 實際是一個橫向的線性布局,且所以子元素寬度和高度一致。
注意: 在 TableLayout 中,單元格可以為空,但是不能跨列,意思是只能不能有相鄰的單元格為空.
在 TableLayout 布局中,一列的寬度由該列中最寬的那個單元格指定,而該表格的寬度由父容器指定。可以為每一列設置以下屬性:
RelativeLayout 繼承于 android.widget.ViewGroup ,其按照子元素之間的位置關系完成布局的,作為 Android 系統(tǒng)五大布局中最靈活也是最常用的一種布局方式,非常適合于一些比較復雜的界面設計。
注意:在引用其他子元素之前,引用的 ID 必須已經存在,否則將出現(xiàn)異常。
將所有的子元素放在整個界面的左上角,后面的子元素直接覆蓋前面的子元素,所以用的比較少。
絕對布局中將所有的子元素通過設置 android:layout_x 和 android:layout_y 屬性,將子元素的坐標位置固定下來,即坐標( android:layout_x , android:layout_y ) , layout_x 用來表示橫坐標, layout_y 用來表示縱坐標。 屏幕左上角為坐標(0,0),橫向往右為正方,縱向往下為正方。實際應用中,這種布局用的比較少,因為 Android 終端一般機型比較多,各自的屏幕大小。分辨率等可能都不一樣,如果用絕對布局,可能導致在有的終端上顯示不全等。