Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android API Guides---Drawable Resources

Android API Guides---Drawable Resources

編輯:關於Android編程

繪圖資源
也可以看看
2D圖形
可繪制資源是可以被繪制到屏幕上,哪些是你可以用的API,如getDrawable(INT)檢索或應用到另一個XML資源與屬性,比如Android的圖形一般概念:繪制和android:圖標。有幾種不同類型的可繪制的:


位圖文件
位圖圖形文件(巴紐,JPG格式,或.gif)。創建一個BitmapDrawable。
九宮格文件
與伸縮區域的PNG文件,使圖像大小調整基於內容(.9.png)。創建一個NinePatchDrawable。
層列表
被拉伸,管理等可繪制的數組。這些繪制在陣列順序,因此具有最大索引的元件在上面繪制。創建一個LayerDrawable。
國家名單
引用不同的位圖圖形的不同狀態的XML文件(例如,使用不同的圖像時,按下一個按鈕)。創建一個StateListDrawable。
級別列表
定義用於管理若干備用可繪的可拉伸的XML文件,每個分配的最大數值。創建一個LevelListDrawable。
過渡繪制對象
定義可以淡入淡出2繪圖資源之間繪制的XML文件。創建一個TransitionDrawable。
插圖繪制對象
它定義了鑲石按指定距離的另一繪制的可繪制的XML文件。當需要查看背景drawble比視圖的實際范圍較小,這非常有用。
剪輯繪制對象
它定義了一個繪制一個XML文件,該文件夾在此基礎上繪制對象的當前電平值另一個可繪制。創建一個ClipDrawable。
規模可繪制
定義改變另一個可繪制的是根據它的電流電平值的大小被拉伸的XML文件。創建一個ScaleDrawable
形狀繪制對象
限定了幾何形狀,其中包括顏色和漸變的XML文件。創建一個ShapeDrawable。
也看到了如何創建AnimationDrawable動畫資源文件。


注意:顏色資源也可以用來作為使用XML的繪制。例如,創建一個狀態列表繪制時,可以參考為Android顏色資源:可繪制屬性(機器人:可繪制=“@色/綠”)。


位圖


位圖圖像。 Android支持三種格式的位圖文件:png格式(首選),.JPG(接受),.GIF(灰心)。


您可以直接引用的位圖文件,使用文件名作為資源ID,或創建XML別名資源ID。


注:位圖文件,可以通過在構建過程中AAPT工具無損圖像壓縮自動優化。例如,一個真??彩色的PNG,不需要超過256種顏色可以用顏色調色板轉換成一個8位的PNG。這將導致相等質量的圖像,但它需要較少的存儲器英寸所以,要知道,放在這個目錄下的圖像二進制文件可以在生成過程中發生改變。如果你計劃,以將其轉換為位圖讀取圖像作為比特流,把你的照片在res /生/文件夾而不是,在那裡他們將不會被優化。


位圖文件


位圖文件是為.png,.jpg或.gif文件。 Android的創建這些文件,當您保存在res /繪制/目錄下的可繪制資源。


文件位置:
RES /繪制/ filename.png(.PNG,.JPG或.gif)
文件名被用作資源ID。
編譯的資源數據類型:
資源指針BitmapDrawable。
資源引用:
在Java:R.drawable.filename
在XML:@ [包:]繪制/文件名
例:

隨著保存在RES /繪制/ myimage.png的圖像,這種布局XML應用圖像視圖:

 

下面的應用程序代碼檢索圖像作為繪制對象:

 

 

Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);
也可以看看:
2D圖形
位圖繪制對象
XML位圖
一個XML位圖是XML定義的資源指向位圖文件。效果為原始位圖文件的別名。該XML可以指定位圖的附加屬性,如抖動和瓷磚。
注意:您可以使用<位>元素作為元素的一個孩子。例如,創建一個狀態列表或圖層列表時,可以排除了android:從它裡面的元素和嵌套<位圖>定義繪制項目可繪制屬性。
文件位置:
RES /繪制/ filename.xml中
文件名被用作資源ID。
編譯的資源數據類型:
資源指針BitmapDrawable。
資源引用:
在Java:R.drawable.filename
在XML:@ [包:]繪制/文件名
句法:

 

 


<bitmap
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:src="@[package:]drawable/drawable_resource"
  android:antialias=["true" | "false"]
  android:dither=["true" | "false"]
  android:filter=["true" | "false"]
  android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
           "fill_vertical" | "center_horizontal" | "fill_horizontal" |
           "center" | "fill" | "clip_vertical" | "clip_horizontal"]
  android:mipMap=["true" | "false"]
  android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
ELEMENTS:

定義位圖的源和它的屬性。
屬性:


xmlns:android
串。定義了XML命名空間,它必須是“http://schemas.android.com/apk/res/android”。這是必需的僅在<位圖>是根元素,它在<位圖>嵌套一個的內時,沒有必要的。
android:src
繪制資源。需要。參照繪制資源。
android:antialias
布爾。啟用或禁用抗鋸齒。
android:dither
布爾。啟用或禁用抖動位圖,如果位圖不具有相同的像素結構的屏幕(例如:一個ARGB 8888位圖與一個RGB 565屏幕)。
android:filter
布爾。啟用或禁用位圖篩選。當位圖收縮或伸展平滑的外觀過濾使用。
android:gravity

 

關鍵詞。定義該位圖的嚴重性。重力表示,其中以定位可繪在其容器如果位圖是比容器更小。
必須是一個或多個(由分隔'|')以下的恆定值:

 

Value Description top 放對象在其容器的頂部,不改變其大小。 bottom 放對象在其容器的底部,不改變其大小 left 其容器的z左邊,不改放對象在變其大小 right 其容器的z右邊,不改放對象在變其大小 center_vertical 放置在其容器的垂直中心對象,不改變其大小。 fill_vertical 如果需要的話,以便完全填滿其容器生長的物體的垂直尺寸。 center_horizontal 放置在其容器的水平中心對象,不改變其大小 fill_horizontal 如果需要的話,以便完全填滿其容器生長的物體的水平尺寸。 center 放置在其容器中的垂直和水平軸兩個中心的對象,不改變其大小。 fill 如果需要的話,以便完全填滿其容器成長對象的水平和垂直尺寸。這是默認的。 clip_vertical 可以設置附加的選項,使頂部和/或兒童的底部邊緣夾在其容器邊界。夾子基於垂直重力:頂部重力夾子的底部邊緣,一個底重力夾子的頂部邊緣,並且既不剪輯兩邊緣。 clip_horizontal 可以設置附加的選項,使左和/或兒童的右邊緣夾在其容器邊界。夾子基於水平比重:左重力剪輯的右邊緣,右重力夾子的左邊緣,並且既不剪輯兩邊緣。 android:mipMap
布爾。啟用或禁用的mipmap提示。見setHas MIPMAP()了解更多信息。默認值是假的。
android:tileMode
關鍵詞。定義平鋪模式。當啟用瓦模式,該位圖被重復。啟用平鋪模式時,重力會被忽略。
必須是以下常數值之一:

 

 

Value Description disabled 不平鋪的位圖。這是默認值。 clamp 復制邊緣顏色,如果著色器繪制其原有的邊界外 repeat 水平和垂直方向重復著色器的圖像。 mirror 重復渲染圖像的水平水平和垂直方向重復著色器的圖像.ly和垂直方向上,交替鏡像,使相鄰圖像總是縫。
例:

 

 


也可以看看:
BitmapDrawable
創建別名資源
九宮格
九補丁是一個PNG圖像,其中您可以定義當視圖中含量超過正常范圍的圖像縮放的Andr??oid伸縮區域。您通常指定此類型的圖像為具有至少一個維度設定為“WRAP_CONTENT”視圖的背景,並且當查看增長以適應內容,九宮圖像也縮放以匹配視圖的大小。一個例子利用九宮圖像是Android的標准按鈕組件所使用的背景,這必須拉伸以適應按鈕中的文本(或圖像)。
同與正常的位圖,你可以直接或通過XML定義的資源引用九宮文件。
有關如何創建具有拉伸區域的九宮文件的完整討論,請參閱2D圖形文件。
九宮格文件
文件位置:
RES /繪制/ filename.9.png
文件名被用作資源ID。
編譯的資源數據類型:
資源指針NinePatchDrawable。
資源引用:
在Java:R.drawable.filename
在XML:@ [包:]繪制/文件名
例:
隨著保存在RES /繪制/ myninepatch.9.png的圖像,這種布局XML應用九宮到View:

 

 

也可以看看:
2D圖形
NinePatchDrawable
XML Ninepatch
一個XML九宮格是XML指向一個九宮文件中定義的資源。該XML可以指定抖動的圖像。
文件位置:
RES /繪制/ filename.xml中
文件名被用作資源ID。
編譯的資源數據類型:
資源指針NinePatchDrawable。
資源引用:
在Java:R.drawable.filename
在XML:@ [包:]繪制/文件名
句法:

 

 


<nine-patch
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:src="@[package:]drawable/drawable_resource"
  android:dither=["true" | "false"] />
內容:

定義九宮格來源和它的屬性。
屬性:


xmlns:android
串。 需要。定義了XML命名空間,它必須是“http://schemas.android.com/apk/res/android”。
android:src
繪制資源。 需要。參照九宮文件。
機器人:抖動
布爾。啟用或禁用抖動位圖,如果位圖不具有相同的像素結構的屏幕(例如:一個ARGB8888位圖與一個RGB565屏幕)。
例:

 

 


層列表


一個LayerDrawable是管理其他可繪制陣列的可繪制對象。列表中的每個可繪在列表中的列表的最後一個可拉伸的順序繪制繪制在頂部。


每個繪制由單個<層列表>元素中的元素表示。


文件位置:
RES /繪制/ filename.xml中
文件名被用作資源ID。
編譯的資源數據類型:
資源指針LayerDrawable。
資源引用:
在Java:R.drawable.filename
在XML:@ [包:]繪制/文件名
句法:

 

 

?xml version="1.0" encoding="utf-8"?>
<layer-list
  xmlns:android="http://schemas.android.com/apk/res/android" >
  <item
    android:drawable="@[package:]drawable/drawable_resource"
    android:id="@[+][package:]id/resource_name"
    android:top="dimension"
    android:right="dimension"
    android:bottom="dimension"
    android:left="dimension" />
ELEMENTS:

需要。這必須是根元素。包含一個或多個元素。
屬性:


xmlns:android
串。需要。定義了XML命名空間,它必須是“http://schemas.android.com/apk/res/android”。

定義繪制的層繪制到另一個地方,在它的屬性定義的位置。必須用<選擇>元素的子元素。接受子<位圖>元素。
屬性:


android:drawable
繪制資源。需要。參照繪制資源。
android:id
資源ID。為此繪制一個獨特的資源ID。要為這個項目創建一個新的資源ID,使用以下形式:“@ + ID /名稱”。加符號表示,本應作為一個新的ID來創建。您可以使用此標識來檢索和修改與View.findViewById()或Activity.findViewById()的繪制。
android:top
整數。頂部的像素偏移。
android:right
整數。正確的像素偏移量。
android:bottom
整數。底部的像素偏移。
android:left
整數。在像素,左偏移。
所有的繪制項目縮放到適合包含視圖的大小,默認情況下。因此,在不同位置放置圖像在圖層列表可能會增加視圖的大小和一些圖像縮放為宜。為了避免在列表中縮放項目,使用<位圖>元素中的元素中指定繪制並定義重力的東西,不結垢,如“中心”。例如,下面的定義進行縮放以適應其容器查看一個項目:

 

 

為了避免結垢,下面的示例使用元素為中心的比重:

 

 


 
例:
在保存RES /繪制/ layers.xml XML文件:


  
   
  
  
   
  
  
   
  
請注意,此示例使用嵌套的<位圖>元素與“中心”重力定義每個項目的繪制資源。這確保了沒有圖像被縮放到適合容器的大小,由於由偏移的圖像調整大小而引起的。


這種布局XML應用繪制到View:

 

 

結果是日益偏移圖像的堆棧:

 

\

也可以看看:
LayerDrawable
國家名單
一個StateListDrawable是使用幾種不同的圖像來表示相同的圖形,根據對象的狀態中的XML定義的可繪制的對象。例如,一個按鈕控件可以在幾種不同的狀態(壓,突出重點,或兩者都不是),並使用狀態列表繪制的一個存在,你可以為每個國家不同的背景圖片。
你可以這樣描述XML文件的狀態列表。每個圖形由單個<選擇>元素中的元素表示。每個使用不同的屬性來描述,其中它應該被用來作為圖形為可繪制的狀態。
在每個狀態變化,所述狀態列表遍歷從上到下和相匹配的當前狀態下使用,該選擇並非基於所述的第一項“最佳匹配”,而僅僅是一個滿足該狀態的最低標准的第一項。
文件位置:
RES /繪制/ filename.xml中
文件名被用作資源ID。
編譯的資源數據類型:
資源指針StateListDrawable。
資源引用:
在Java:R.drawable.filename
在XML:@ [包:]繪制/文件名
句法:

 


<selector xmlns:android="http://schemas.android.com/apk/res/android"
  android:constantSize=["true" | "false"]
  android:dither=["true" | "false"]
  android:variablePadding=["true" | "false"] >
  <item
    android:drawable="@[package:]drawable/drawable_resource"
    android:state_pressed=["true" | "false"]
    android:state_focused=["true" | "false"]
    android:state_hovered=["true" | "false"]
    android:state_selected=["true" | "false"]
    android:state_checkable=["true" | "false"]
    android:state_checked=["true" | "false"]
    android:state_enabled=["true" | "false"]
    android:state_activated=["true" | "false"]
    android:state_window_focused=["true" | "false"] />
ELEMENTS:

需要。這必須是根元素。包含一個或多個元素。
屬性:


xmlns:android
串。需要。定義了XML命名空間,它必須是“http://schemas.android.com/apk/res/android”。
android:constantSize
布爾。 “真”,如果繪制的內部報告的大小仍然是狀態的改變常數(尺寸是最大的所有國家的); “假”,如果尺寸變化基於當前的狀態。默認為false。
android:dither
布爾。 “真”,以使該位圖的抖動,如果位圖不具有相同的像素結構的屏幕(例如,一個ARGB 8888位圖與一個RGB 565屏幕); “假”以禁用抖動。默認值為true。
android:variablePadding
布爾。 “真”,如果繪制的填充應根據所選擇的當前狀態的變化; “假”如果填充應保持不變(基於所有國家的最大填充)。啟用此功能,您需要處理時,這往往是不支持的狀態變化,進行布局。默認為false。

定義繪制到在某些國家使用,正如它的屬性描述。必須用元素的子元素。
屬性:


android:drawable
繪制資源。需要。參照繪制資源。
android:state_pressed

 

布爾。 “真”,如果當按下對象應使用此產品的(當按鈕被觸摸諸如/點擊); “假”,如果這個項目應該在默認使用,非按下狀態。
android:state_focused
布爾。 “真”如果這個項目時,應使用對象具有輸入焦點(當用戶選擇一個文本輸入等); “假”,如果這個項目應該在默認使用,非聚焦狀態。
android:state_hovered
布爾。 “真”,如果當物體被由光標懸停應該使用這個產品“假”,如果這個項目應該在默認使用,非懸停狀態。通常,這可拉伸可以是用於“聚焦”狀態的相同可拉伸。
介紹了API級別14。


android:state_selected
布爾。 “真”,如果當物體是用方向控制導航時(例如通過與一個d-墊列表導航時)當前用戶選擇這個項目應該使用; “假”如果在沒有選擇的對象應使用此項目。
選擇狀態時,使用對焦(安卓state_focused)是不夠的(例如,當列表視圖具有焦點,並在其中一個項目中選擇了D-PAD)。


android:state_checkable
布爾。 “真”,如果當對象是可勾選應該使用這個產品, “假”,如果當對象不是可勾選此項目應該被使用。 (只有有用的,如果該對象可以可檢查的和非可檢查的小部件之間轉換。)
android:state_checked
布爾。 “真”,如果當對象被選中應該使用這個產品, “假”,如果它應當對象是使用未檢查。
android:state_enabled
布爾。 “真”,如果當物體被啟用應使用此產品的(能夠接收觸摸/點擊事件); “假”,如果當物體被禁用它應該被使用。
android:state_activated
布爾。 “真”,如果當對象被激活為持久的選擇應該使用這個項目(如“亮點”以前選擇列表中一個持久的導航視圖的項目); “假”,如果當物體不激活它應該被使用。
介紹了API級別11。


android:state_window_focused
布爾。 “真”,如果當應用程序窗口已關注這個項目應該使用(應用程序是在前台),“假”,如果這個項目時,應使用應用程序窗口沒有焦點(例如,如果通知欄是拉下來,或者出現一個對話框)。
注意:請記住,在Android的匹配對象的當前狀態的狀態列表適用中的第一項。因此,如果在該列表中的第一項包含任何狀態的上述屬性,那麼它被施加每一次,這就是為什麼預設值應始終是最後(如下面的示例所示)。


例:
在保存RES /繪制/ button.xml XML文件:

 



   
   
   
   
這種布局XML應用狀態列表繪制到按鈕:
也可以看看:
StateListDrawable
級別列表
一個管理若干備用可繪制的繪制對象,每人分到的最大數值。設置與執行setLevel()的繪制的電平值加載在具有Android的水平列表中的繪制資源:最高等級大於或等於傳遞給方法的值。
文件位置:
RES /繪制/ filename.xml中
文件名被用作資源ID。
編譯的資源數據類型:
資源指針LevelListDrawable。
資源引用:
在Java:R.drawable.filename
在XML:@ [包:]繪制/文件名
句法:

 

 


<level-list
  xmlns:android="http://schemas.android.com/apk/res/android" >
  <item
    android:drawable="@drawable/drawable_resource"
    android:maxLevel="integer"
    android:minLevel="integer" />
android:insetLeft

這必須是根元素。包含一個或多個元素。
屬性:


xmlns:android
串。 需要。定義了XML命名空間,它必須是“http://schemas.android.com/apk/res/android”。

限定了可拉伸在一定的水平來使用。
屬性:


android:drawable
繪制資源。 需要。參考可繪制資源被插圖。
android:maxLevel
整數。最高級別允許為這個項目。
android:minLevel
整數。最低級別允許為這個項目。
例:

 

 



  
  
一旦這個被施加到一個視圖,該電平可以與執行setLevel()或setImageLevel()來改變。
也可以看看:
LevelListDrawable
過渡繪制對象
一個TransitionDrawable是繪制對象,可以淡入淡出兩個可繪制資源之間。
每個繪制由單個<過渡>元素中的元素表示。沒有兩個以上的項目支持。過渡轉接,呼叫轉移啟動()。為了向後過渡,叫反向轉換()。
文件位置:
RES /繪制/ filename.xml中
文件名被用作資源ID。
編譯的資源數據類型:
資源指針TransitionDrawable。
資源引用:
在Java:R.drawable.filename
在XML:@ [包:]繪制/文件名
句法:

<transition
xmlns:android="http://schemas.android.com/apk/res/android" >
  <item
    android:drawable="@[package:]drawable/drawable_resource"
    android:id="@[+][package:]id/resource_name"
    android:top="dimension"
    android:right="dimension"
    android:bottom="dimension"
    android:left="dimension" />
ELEMENTS:

需要。這必須是根元素。包含一個或多個元素。
屬性:


xmlns:android
串。需要。定義了XML命名空間,它必須是“http://schemas.android.com/apk/res/android”。

定義繪制的繪制轉變的一部分使用。必須是一個元素的一個孩子。接受子<位圖>元素。
屬性:


android:drawable
繪制資源。需要。參照繪制資源。
android:id
資源ID。為此繪制一個獨特的資源ID。要為這個項目創建一個新的資源ID,使用以下形式:“@ + ID /名稱”。加符號表示,本應作為一個新的ID來創建。您可以使用此標識來檢索和修改與View.findViewById()或Activity.findViewById()的繪制。
android:top
整數。頂部的像素偏移。
android:right
整數。正確的像素偏移量。
android:bottom
整數。底部的像素偏移。
android:left
整數。在像素,左偏移。
例:
在保存RES /繪制/ transition.xml XML文件:


  
  
這種布局XML應用形狀繪制到View

 

 

And the following code performs a 500ms transition from the first item to the second:

 

 

ImageButton button = (ImageButton) findViewById(R.id.button);
TransitionDrawable drawable = (TransitionDrawable) button.getDrawable();
drawable.startTransition(500);
也可以看看:
TransitionDrawable
插圖繪制對象


在XML的鑲石按指定距離的另一繪制定義的繪制。當一個視圖需要一個背景是不是查看實際邊界較小,這非常有用。


文件位置:
RES /繪制/ filename.xml中
文件名被用作資源ID。
編譯的資源數據類型:
資源指針InsetDrawable。
資源引用:
在Java:R.drawable.filename
在XML:@ [包:]繪制/文件名
句法:

 

 


<inset
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:drawable="@drawable/drawable_resource"
  android:insetTop="dimension"
  android:insetRight="dimension"
  android:insetBottom="dimension"
  android:insetLeft="dimension" />
ELEMENTS:

定義插圖繪制。這必須是根元素。
屬性:


xmlns:android
串。 需要。定義了XML命名空間,它必須是“http://schemas.android.com/apk/res/android”。
android:drawable
繪制資源。 需要。參考可繪制資源被插圖。
android:insetTop
尺寸。頂部插入,作為一個尺寸值或尺寸資源
android:insetRight
尺寸。右小圖,作為一個尺寸值或尺寸資源
android:insetBottom
尺寸。底部插入,作為一個尺寸值或尺寸資源
android:insetLeft
尺寸。左小圖,作為一個尺寸值或尺寸資源
例:

 

 


也可以看看:
InsetDrawable
Clipdrawable
該剪輯另一個可繪制在此基礎上定義在XML中可繪制可繪制目前的水平。可以控制多少子抽拉得到在寬度和高度根據該電平,以及一個重力來控制在其被放置在其整體容器裁剪。最常用的實現之類的進度條。
文件位置:
RES /繪制/ filename.xml中
文件名被用作資源ID。
編譯的資源數據類型:
資源指針ClipDrawable。
資源引用:
在Java:R.drawable.filename
在XML:@ [包:]繪制/文件名
句法:

 

 


<clip
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:drawable="@drawable/drawable_resource"
  android:clipOrientation=["horizontal" | "vertical"]
  android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
          "fill_vertical" | "center_horizontal" | "fill_horizontal" |
          "center" | "fill" | "clip_vertical" | "clip_horizontal"] />
ELEMENTS:

定義剪輯繪制。這必須是根元素。
屬性:


xmlns:android
串。 需要。定義了XML命名空間,它必須是“http://schemas.android.com/apk/res/android”。
android:drawable
繪制資源。 需要。參考可繪制資源進行裁剪。
android:clipOrientation
關鍵詞。該方向的剪輯。
必須是以下常數值之一:

 

 

Value Description horizontal Clip the drawable horizontally. vertical Clip the drawable vertically.
android:gravity
Keyword. Specifies where to clip within the drawable.

Must be one or more (separated by '|') of the following constant values:

Value Description top Put the object at the top of its container, not changing its size. WhenclipOrientationis"vertical", clipping occurs at the bottom of the drawable. bottom Put the object at the bottom of its container, not changing its size. WhenclipOrientationis"vertical", clipping occurs at the top of the drawable. left Put the object at the left edge of its container, not changing its size. This is the default. WhenclipOrientationis"horizontal", clipping occurs at the right side of the drawable. This is the default. right Put the object at the right edge of its container, not changing its size. WhenclipOrientationis"horizontal", clipping occurs at the left side of the drawable. center_vertical Place object in the vertical center of its container, not changing its size. Clipping behaves the same as when gravity is"center". fill_vertical Grow the vertical size of the object if needed so it completely fills its container. WhenclipOrientationis"vertical", no clipping occurs because the drawable fills the vertical space (unless the drawable level is 0, in which case it's not visible). center_horizontal Place object in the horizontal center of its container, not changing its size. Clipping behaves the same as when gravity is"center". fill_horizontal Grow the horizontal size of the object if needed so it completely fills its container. WhenclipOrientationis"horizontal", no clipping occurs because the drawable fills the horizontal space (unless the drawable level is 0, in which case it's not visible). center Place the object in the center of its container in both the vertical and horizontal axis, not changing its size. WhenclipOrientationis"horizontal", clipping occurs on the left and right. WhenclipOrientationis"vertical", clipping occurs on the top and bottom. fill Grow the horizontal and vertical size of the object if needed so it completely fills its container. No clipping occurs because the drawable fills the horizontal and vertical space (unless the drawable level is 0, in which case it's not visible). clip_vertical Additional option that can be set to have the top and/or bottom edges of the child clipped to its container's bounds. The clip is based on the vertical gravity: a top gravity clips the bottom edge, a bottom gravity clips the top edge, and neither clips both edges. clip_horizontal Additional option that can be set to have the left and/or right edges of the child clipped to its container's bounds. The clip is based on the horizontal gravity: a left gravity clips the right edge, a right gravity clips the left edge, and neither clips both edges.
EXAMPLE:
XML file saved atres/drawable/clip.xml:

 

The following layout XML applies the clip drawable to a View:

以下代碼獲取被拉伸並增加以便剪裁逐步顯示圖像的量:

 

ImageView imageview = (ImageView) findViewById(R.id.image);
ClipDrawable drawable = (ClipDrawable) imageview.getDrawable();
drawable.setLevel(drawable.getLevel() + 1000);
增加水平降低削波的量和慢慢揭示了圖像。這是在7000的水平:

 

\
注意:默認級別為0,這是完全修剪,因此圖像是不可見的。當電平是10,000時,圖像不裁剪和完全可見。

也可以看看:
ClipDrawable
Scaledrawable
在XML改變基於當前水平的另一個繪制的大小定義的繪制。
文件位置:
RES /繪制/ filename.xml中
文件名被用作資源ID。
編譯的資源數據類型:
資源指針ScaleDrawable。
資源引用:
在Java:R.drawable.filename
在XML:@ [包:]繪制/文件名
句法:

 


<scale
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:drawable="@drawable/drawable_resource"
  android:scaleGravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
             "fill_vertical" | "center_horizontal" | "fill_horizontal" |
             "center" | "fill" | "clip_vertical" | "clip_horizontal"]
  android:scaleHeight="percentage"
  android:scaleWidth="percentage" />
ELEMENTS:

定義繪制規模。這必須是根元素。
屬性:


xmlns:android

 

串。需要。定義了XML命名空間,它必須是“http://schemas.android.com/apk/res/android”。
android:drawable
繪制資源。需要。參照繪制資源。
android:scaleGravity
關鍵詞。指定縮放後的重心位置。
必須是一個或多個(由分隔'|')以下的恆定值:


值說明
top把對象在其容器的頂部,不改變其大小。
bottom把對象在其容器的底部,不改變其大小。
left對象在其容器的左邊緣,不改變其大小。這是默認的。
right把對象在其容器的右邊緣,不改變其大小。
center_verticalcenter_vertical地點對象,不改變其大小。
fill_vertical如果需要的話,以便完全填滿其容器fill_vertical成長的對象的垂直尺寸。
center_horizontal在它的容器的水平中心CENTER_HORIZONTAL地點對象,不改變其大小。
fill_horizontal如果需要的話,以便完全填滿其容器fill_horizo??ntal成長的對象的水平大小。
center中心放置在其容器的同時在垂直和水平軸,不改變其尺寸的中心的對象。
fill填充,如果需要,以便完全填滿其容器成長的對象的水平和垂直尺寸。
clip_vertical可以設置clip_vertical附加選項,使頂部和/或兒童的底部邊緣夾在其容器的邊界。夾子基於垂直重力:頂部重力夾子的底部邊緣,一個clip_horizontal底重力夾子的頂部邊緣,並且既不剪輯兩邊緣。
可以設置clip_horizo??ntal附加選項,使左和/或兒童的右邊緣夾在其容器的邊界。夾子基於水平比重:左重力剪輯的右邊緣,右重力夾子的左邊緣,並且既不剪輯兩邊緣。
android:scaleHeight
百分比。規模高度,表示為可繪制的結合的百分比。該值的格式為XX%。例如:100%,12.5%等
android:scaleWidth
百分比。刻度寬度,表示為可繪制的結合的百分比。該值的格式為XX%。例如:100%,12.5%等
例:

 


也可以看看:
LayerDrawable
Shapedrawable
這是在XML中定義的通用形狀。
文件位置:
RES /繪制/ filename.xml中
文件名被用作資源ID。
編譯的資源數據類型:
資源指針GradientDrawable。
資源引用:
在Java:R.drawable.filename
在XML:@ [包:]繪制/文件名
句法:

 

 


<shape
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape=["rectangle" | "oval" | "line" | "ring"] >
  <corners
    android:radius="integer"
    android:topLeftRadius="integer"
    android:topRightRadius="integer"
    android:bottomLeftRadius="integer"
    android:bottomRightRadius="integer" />
  <gradient
    android:angle="integer"
    android:centerX="integer"
    android:centerY="integer"
    android:centerColor="integer"
    android:endColor="color"
    android:gradientRadius="integer"
    android:startColor="color"
    android:type=["linear" | "radial" | "sweep"]
    android:useLevel=["true" | "false"] />
  <padding
    android:left="integer"
    android:top="integer"
    android:right="integer"
    android:bottom="integer" />
  <size
    android:width="integer"
    android:height="integer" />
  <solid
    android:color="color" />
  <stroke
    android:width="integer"
    android:color="color"
    android:dashWidth="integer"
    android:dashGap="integer" />
ELEMENTS::

形狀繪制。這必須是根元素。
屬性:


xmlns:android
串。需要。定義了XML命名空間,它必須是“http://schemas.android.com/apk/res/android”。
android:shape
關鍵詞。限定形狀的類型。有效值為:
值應將描述
"rectangle",填補了包含查看的矩形。這是默認的形狀。
"oval"”的橢圓形狀,其適合的含視圖的尺寸。
"line"跨越包含視圖的寬度水平線。這種形狀需要<沖程>元素來定義線的寬度。
"ring"”的環狀。
下面的屬性只用於機器人:android:shape="ring":


android:innerRadius
尺寸。用於環(中間孔)的內部的半徑,作為尺寸值或尺寸的資源。
android:innerRadiusRatio
浮動。為環的內部的半徑,表示為環的寬度的比率。例如,如果機器人:innerRadiusRatio =“5”,然後內徑等於環的寬度由5分此值由機器人覆蓋:innerRadius。默認值為9。
android:thickness
尺寸。環的厚度,作為尺寸值或尺寸的資源。
android:thicknessRatio
浮動。環的厚度,表示為環的寬度的比率。例如,如果機器人:thicknessRatio =“2”,則厚度等於環的寬度除以2。此值由機器人覆蓋:innerRadius。默認值是3。
android:useLevel
布爾。如果此用作LevelListDrawable“真”。這通常應該是“假”還是你的形狀可能不會出現。

創建圓角的形狀。僅適用於當形狀為長方形。
屬性:


android:radius
尺寸。所有邊角半徑,作為一個尺寸值或尺寸資源。這被覆蓋由以下屬性的每個角落。
android:topLeftRadius
尺寸。為左上角的半徑,作為尺寸值或尺寸的資源。
android:topRightRadius
尺寸。為右上角的半徑,作為尺寸值或尺寸的資源。
android:bottomLeftRadius
尺寸。為左下角的半徑,作為尺寸值或尺寸的資源。
android:bottomRightRadius
尺寸。對於右下角的半徑,作為尺寸值或尺寸的資源。
注:每一個角落,必須在開始階段被超過1提供一個拐角半徑大,否則沒有邊角圓潤。如果你想具體的角落,不進行四捨五入,一個解決辦法是使用Android:半徑大於1設置默認的圓角半徑大,但覆蓋你真正想要的值每一個角落,提供零(“0dp” ),您不希望圓角。



指定形狀的漸變色。
屬性:


android:angle
整數。漸變的角度,以度。 0為從左到右,90是底部至頂部。它必須是45默認的倍數為0。
android:centerX
浮動。相對X位置為梯度(0 - 1.0)的中心。
android:centerY
浮動。相對Y位置的梯度(0 - 1.0)的中心。
android:centerColor
顏色。可選顏色自帶的起點和終點之間的顏色,為十六進制值或顏色的資源。
android:ENDCOLOR
顏色。結束顏色,為十六進制值或顏色的資源。
android:gradientRadius
浮動。漸變的半徑。只有當應用機器人:TYPE =“放射狀”。
android:startColor
顏色。起始色,為十六進制值或顏色資源。
android:type
關鍵詞。類型漸變圖案的應用。有效值為:
值說明
“"linear"”的線性漸變。這是默認的。
"radial"”徑向漸變。起始顏色為中心的顏色。
"sweep"一個掃線梯度。
android:useLevel
布爾。如果此用作LevelListDrawable“真”。

填充要應用到含有視圖元件(此焊盤視圖內容的位置,而不是形狀)。
屬性:


android:left
尺寸。左填充,作為一個尺寸值或尺寸資源。
android:top
尺寸。頂部填充,作為一個尺寸值或尺寸資源。
android:right
尺寸。右側填充,作為一個尺寸值或尺寸資源。
android:bottom
尺寸。底部填充,作為一個尺寸值或尺寸資源。

形狀的尺寸。
屬性:


android:height
尺寸。形狀的高度,作為尺寸值或尺寸的資源。
android:width
尺寸。形狀的寬度,作為尺寸值或尺寸的資源。
注意:形狀擴展到容器視圖相稱這裡定義的尺寸的大小,在默認情況下。 scaleType到“中心”:當您在使用ImageView的形狀,你可以通過設置在Android限制縮放。



純色填充的形狀。
屬性:


android:color
顏色。顏色應用到形狀,以十六進制值或顏色資源。

中風線的形狀。
屬性:


android:width
尺寸。線的厚度,作為尺寸值或尺寸的資源。
android:color
顏色。線的顏色,如十六進制值或顏色資源。
android:dashGap
尺寸。線之間的距離破折號,作為尺寸值或尺寸的資源。只有有效的,如果機器人:dashWidth設置。
android:dashWidth
尺寸。各劃線的大小,作為尺寸值或尺寸的資源。只有有效的,如果機器人:dashGap設置。
例:
在保存RES /繪制/ gradient_box.xml XML文件:

 

 



  
  
  

 

這種布局XML應用形狀繪制到View:

此應用程序代碼獲取形狀繪制,並將其應用於一個觀點

Resources res = getResources();
Drawable shape = res. getDrawable(R.drawable.gradient_box);

TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved