編輯:關於Android編程
本文將介紹Android中Resource Types的drawable、menu、layout。如需訪問官方原文,您可以點擊這些鏈接:
《Drawable Resources》 《Layout Resource》 《Menu Resource》
布局資源用於定義組件的布局UI。
文件目錄:
res/layout/filename.xml
引用方式:
In Java: R.layout.filename
In XML: @[package:]layout/filename
語法:
根標簽可以是 ViewGroup
、View
、或
之一。
標簽及其屬性:
:承載其他View的容器。如LinearLayout, RelativeLayout, FrameLayout
等。並不是所有的
都能在布局中直接包含View,比如說AdapterView
,它的子View來自於Adapter。
– android:id
:資源ID。
– android:layout_height
:dp或關鍵字(wrap_content
、match_parent
)。不可缺省。
– android:layout_width
:dp或關鍵字(wrap_content
、match_parent
)。不可缺省。
:任何View都可以包含這個標簽,它表示程序第一次加載時,該View獲得焦點,該標簽只能在一個布局文件中使用一次。
:引用一個布局。
– layout
:不可缺省。引用一個布局資源。
– android:id
:資源ID。可覆蓋引用布局的根View的ID。
– android:layout_height
:可覆蓋引用布局的根View的android:layout_height
。
– android:layout_width
:可覆蓋引用布局的根View的android:layout_width
。
:是一個根標簽。但並未占用布局樹中的節點。使用該標簽包含的元素將被直接替換至引用該標簽的布局中。
示例:
引用方式:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}
菜單資源為程序提供菜單項。如Options Menu、Context Menu、submenu 等。在Java中通過MenuInflater
類中的方法引入菜單資源。
文件目錄:
res/menu/filename.xml
引用方式:
In Java: R.menu.filename
In XML: @[package:]menu.filename
語法:
標簽及其屬性:
和/或
標簽。
– xmlns:android
:不可缺省,XML文件的命名空間。必須是:"http://schemas.android.com/apk/res/android"
。
:一個菜單項。若包含了
標簽必須被包含於
– android:id
:資源ID。
– android:title
:String類型。菜單項的顯示內容。
– android:titleCondensed
: String類型。縮短的菜單項的顯示內容。當android:title
中指定的的內容顯示不下時,顯示該屬性的內容。
– android:icon
:drawable資源。菜單項的圖標。
– android:onClick
:方法名。當菜單項被點擊時,調用該方法。必須在activity中定義該方法,且必須使用public修飾符,需要傳入一個MenuItem
作為唯一參數。
– android:showAsAction
:下表中的Value值之一。用於確定如何在標題欄中顯示該item項。
-- `android:actionLayout`:layout資源。定制的標題欄布局。
-- `android:actionViewClass`:類名。用於聲明在標題欄展示的控件的全限定類名,如`"android.widget.SearchView"`表示將控件`SearchView`展示在標題欄上。
-- `android:actionProviderClass`:類名。用於聲明在標題欄展示的菜單項的全限定類名,如`"android.widget.ShareActionProvider"`表示使用控件`ShareActionProvider`作為一個菜單項。
-- `android:alphabeticShortcut`:Char類型。為該item指定字符快捷鍵。
-- `android:numericShortcut`:Integer類型。為該item指定數字快捷鍵。
-- `android:checkable`:Boolean類型。`true`表示該item是可勾選的。
-- `android:checked`:Boolean類型。`true`表示item默認是勾選狀態。
-- `android:visible`:Boolean類型。`true`表示item默認是可見狀態。
-- `android:enabled`:Boolean類型。`true`表示item默認是使能狀態。
-- `android:menuCategory`:值為下表中的Value值之一。這些值對應著Menu類中的` CATEGORY_* `字段。表示item的優先級。
–android:orderInCategory
:Integer類型。該項的重要級別。
:定義一組item項。
– android:id
:資源ID。
–android:checkableBehavior
:值為下表中的Value值之一。指定該組item的可勾選行為。
-- `android:visible`:Boolean類型,true表示group可見。
-- `android:enabled`:Boolean類型,true表示group使能。
-- `android:menuCategory`:與`- `標簽中的 `android:menuCategory`屬性相同。
-- `android:orderInCategory`:Integer類型。該項的重要級別。
示例:
-
-
-
-
-
在Java代碼中引入該menu資源:
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.example_menu, menu);
return true;
}
public void onGroupItemClick(MenuItem item) {
// One of the group items (using the onClick attribute) was clicked
// The item parameter passed here indicates which item it is
// All other menu item clicks are handled by onOptionsItemSelected()
}
Drawable是一種能夠在屏幕上展示的資源,根據不同的展示形式,Drawable可分為如下類型:
Bitmap File
:一個位圖文件資源,.png、.jpg 、或 .gif格式。對應BitmapDrawable
對象。
Nine-Patch File
:一種可以在指定方向上拉伸而不會失真的.9.png格式的圖片資源。對應NinePatchDrawable
對象。
Layer List
:一個引用了一組Drawable圖片的資源,具有層次順序,最大標號的drawable在最頂層。對應LayerDrawable
對象。
State List
:不同狀態下可飲用不同drawable資源的drawable。對應StateListDrawable
對象。
Level List
:管理大量的drawable,並會指定一個最大值。對應LevelListDrawable
對象。
Transition Drawable
:可以在兩個drawable之間淡入淡出切換的drawable。對應TransitionDrawable
對象。
Inset Drawable
:在一個drawable中插入一個drawable並指定距離。當View的背景小於該View時,使用該類型的drawable。
Clip Drawable
:根據當前drawable尺寸剪切另一個drawable。對應ClipDrawable
對象。
Scale Drawable
:根據當前drawable尺寸縮放另一個drawable。對應ScaleDrawable
對象。
Shape Drawable
:設定顏色和漸變的drawable。對應ShapeDrawable
對象。
Android支持三種位圖文件。.png (推薦), .jpg (可接受), .gif (不推薦)。
文件目錄:
res/drawable/filename.png (.png, .jpg, or .gif)
引用方式:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
示例:
在Java代碼中引入:
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);
一個XML位圖文件定義在XML中,可以使用
標簽將一個drawable包含在
中。
文件目錄:
res/drawable/filename.xml
引用方式:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
語法:
標簽及其屬性:
:
– xmlns:android
:命名空間;
– android:src
:資源drawable。不可缺省。
– android:antialias
:Boolean類型。是否抗鋸齒。
– android:dither
:Boolean類型。設置圖像的像素是否與屏幕的像素相匹配。
– android:filter
:Boolean類型。是否開啟圖像過濾。
– android:gravity
:圖像顯示的位置。
– android:mipMap
:Boolean類型。用於開啟圖片的提示。
– android:tileMode
:拼裝模式。可使用的值:disabled
(默認值,不拼裝)、clamp
(若drawable有陰影,則重復其邊緣顏色)、repeat
(在豎直和水平方向上重復陰影圖片)、mirror
(以鏡像的方式重復陰影)
示例:
Nine-Patch是一個可拉伸的圖片類型。其格式為.9.png。在普通圖片的四周多出了1dp的寬度,其中,可以在左邊和上邊的1dp寬度中指定該圖片可拉伸的范圍,而右邊和下邊的1dp寬度用於指定圖片中顯示文字的位置。
文件目錄:
res/drawable/filename.9.png
引用方式:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
示例:
使用
標簽包含若干個
標簽。每一個item表示一個層級的drawable。
文件目錄:
res/drawable/filename.xml
引用方式:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
語法:
-
標簽及其屬性:
:不可缺省,用於包含若干
標簽。
– xmlns:android
:命名空間,不可缺省。
:用於設置每一個層級drawable。
– android:drawable
:drawable資源,不可缺省。
– android:id
:資源ID。
– android:top
:Integer類型。距離容器頂端的偏移量。
– android:right
:Integer類型。距離容器右端的偏移量。
– android:bottom
:Integer類型。距離容器底端的偏移量。
– android:left
:Integer類型。距離容器左端的偏移量。
示例:
-
-
-
代碼中引用:
效果如下:
State List drawable可以為控件設置不同狀態下的drawable。如button有正在點擊、未點擊、獲得焦點 等狀態。
文件目錄:
res/drawable/filename.xml
引用方式:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
語法:
-
標簽及其屬性:
:不可缺省。必須是根標簽,包含若干個
。
– xmlns:android
:命名空間
– android:constantSize
:Boolean
類型。若為true,表示當狀態改變時,drawable的尺寸不變。默認為false。
– android:dither
:Boolean類型。默認為true。若為true,表示如果圖片的像素類型與屏幕不符,則適配該屏幕類型。(如位圖類型是ARGB 8888,而屏幕是RGB 565)。
– android:variablePadding
:Boolean類型。默認為false。若為true,表示當狀態改變時,控件的padding值會改變。
:定義某個狀態下的drawable資源。必須是
標簽的子標簽。
– android:drawable
:drawable資源。不可缺省。
– android:state_pressed
:Boolean類型。默認為false。為true時,表示該控件正在被點擊。
– android:state_focused
:Boolean類型。默認為false。為true時表示該控件獲得了焦點,即為可輸入狀態。
– android:state_hovered
: Boolean類型。光標是否懸停,通常與focused state相同。默認為false。
– android:state_selected
:Boolean類型。控件是否處於選中狀態。
– android:state_checkable
:Boolean類型。true表示控件設為可選的。僅用於某個控件可以在可選的和非可選的之間切換。
– android:state_checked
:Boolean類型。true表示控件被勾選狀態。
– android:state_enabled
:Boolean類型。控件是否可接受點擊事件。
– android:state_activated
:Boolean類型。是否將該控件設為被點擊標記狀態。即點擊後會永久變色,表示該控件被點擊過。
– android:state_window_focused
:Boolean類型。true表示當該應用程序窗口處於前台時。
示例:
-
-
-
-
在代碼中引用:
管理著若干個drawable的資源。
文件目錄:
res/drawable/filename.xml
引用方式:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
語法:
-
標簽及其屬性:
:必須作為根標簽。其中可包含若干個
標簽。
– xmlns:android
:命名空間
:該標簽作為一個層級包含一個drawable。
– android:drawable
:drawable資源。不可缺省。
– android:maxLevel
:Integer類型。該item項的最大級別。
– android:minLevel
:Integer類型。該item項的最小級別。
示例:
-
-
Transition Drawable 用於在兩個drawable之間的切換產生淡入淡出效果。
文件目錄:
res/drawable/filename.xml
引用位置:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
-
示例:
-
-
引入控件:
Java中引入:在500毫秒內將第一個drawable切換至第二個drawable
ImageButton button = (ImageButton) findViewById(R.id.button);
TransitionDrawable drawable = (TransitionDrawable) button.getDrawable();
drawable.startTransition(500);
語法:
標簽及其屬性:
:必須作為根標簽。
– xmlns:android
:命名空間。
– android:drawable
:插入的drawable資源。不可缺省。
– android:insetRight
:Dimension類型。右部插入。
– android:insetTop
:Dimension類型。頂部插入。
– android:insetBottom
:Dimension類型。底部插入。
– android:insetLeft
:Dimension類型。右部插入。
示例:
可以在XML中自定義一個普通性狀的drawable。
文件目錄:
res/drawable/filename.xml
引用方式:
In Java: R.drawable.filename
In XML: @[package:]drawable/filename
語法:
標簽及其屬性:
:指定drawable形狀。必須是根標簽。
– xmlns:android
:命名空間。不可缺省。
– android:shape
:指定drawable形狀。可選值為:"rectangle"
(缺省值,矩形)、"oval"
(橢圓)、"line"
(直線) 、"ring"
(圓環)
:為drawable添加圓形邊角。只有android:shape
屬性設為"rectangle"
時,該標簽及標簽中的屬性才有效。
– android:radius
:指定圓角半徑。單位Dimension。
– android:topLeftRadius
:左上角半徑
– android:topRightRadius
:右上角半徑
– android:bottomLeftRadius
:左下角半徑
– android:bottomRightRadius
:右下角半徑
:漸變顏色
– android:angle
:Integer類型。漸變角度。0表示從左至右。90表示從下至上。45表示從左下至右上。默認為0。
– android:centerX
:Float類型。0.0-1.0。漸變中心的x的坐標。
– android:centerY
:Float類型。0.0-1.0。漸變中心的y的坐標。
– android:centerColor
:Color
類型。是一個16進制數。表示起始顏色與最終顏色的中間色。
– android:endColor
:Color
類型。最終色。
– android:startColor
:Color
類型。起始色。
– android:type
:漸變模式。可選值:"linear"
(線性漸變。缺省值)、"radial"
(放射式漸變)、"sweep"
(掃描漸變)
– ndroid:useLevel
:Boolean類型。若作用在LevelListDrawable
上則為true。
:與父容器View的邊距。
– android:left
:Dimension類型。左邊距。
–android:right
:Dimension類型。右邊距。
–android:top
:Dimension類型。上邊距。
– android:bottom
:Dimension類型。下邊距。
:drawable的尺寸。
– android:height
:Dimension類型。形狀的高度。
– android:width
:Dimension類型。形狀的寬度。
:填充顏色。
– android:color
:Color類型。
:邊框線。
– android:width
:Dimension類型。邊框線寬度。
– android:color
:Color類型。邊框線顏色。
– android:dashGap
:Dimension類型。邊框線為虛線時兩虛線的間隔。
– android:dashWidth
:Dimension類型。虛線的長度。
示例:
引入控件:
Java代碼中引入:
Resources res = getResources();
Drawable shape = res. getDrawable(R.drawable.gradient_box);
TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);
一.寫在前面的話在日常使用手機的過程中,我們經常希望有這樣一個功能:可以對我們的某一個應用加鎖,進入的時候需要輸入密碼驗證身份,然後才可以進入主界面,這就是一個程序鎖的功
最近項目中有個新的需求,用戶在完交易需要進行輸入支付密碼付款的時候,要讓用戶簽下自己的簽名,提起到數字簽名這個東西,感覺有點高大上,後來想想數字簽名的原理也不是太復雜,主
要做這種效果1- 整個自定義控件其實就是一個ArcMenu .(半圓形那一圈),左下角的圖標沒有加入進控件中。 2- 我基於他的類改了點。他是將左下角的關閉ic
在項目中有一個小功能需要實現,就是對多行文本進行排版布局,每一行的內容又分為兩部分,左邊為標題,右邊為描述,左邊內容長度不確定,右邊的內容需要對齊,如有換行也需要對齊右邊