Android應用資源—繪制資源類型(Drawable)(四)

級別列表

級別列表管理著一組可選擇的繪制資源,被管理的每個資源都會給分配一個最大的數字值。調用setLevel()方法給裝載在級別列表中的有android:maxLevel屬性的繪制資源設置級別值。android:maxLevel的值要大於或等於傳遞給setLevel()方法的值。

文件位置(FILE LOCATION):

res/drawable/filename.xml

文件名被用作資源ID。

被編譯資源的數據類型(COMPILED RESOURCE DATATYPE):

資源指向一個LevelListDrawable對象。

資源引用(RESOURCE REFERENCE)

在Java代碼中:R.drawable.filename

在XML中:@[package:]drawable/filename

語法(SYNTAX):   

<?xml version="1.0" encoding="utf-8"?>
<level-list
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/drawable_resource"
        android:maxLevel="integer"
        android:minLevel="integer"/>
</level-list>

元素(ELEMENTS):

<level-list>

它必須是根元素。包含一個或多個<item>元素。

屬性(ATTRIBUTES):

xmlns:android

字符串值,必須的。它定義瞭XML的命名空間,必須是:http://schemas.android.com/apk/res/android

<item>

定義瞭某個級別中使用的一個可繪制資源。

屬性(ATTRIBUTES):

android:drawable

繪制資源,必須的,它指向瞭一個要插入的可繪制資源。

android:maxLevel

整數值,指定這個項目所允許的最大級別。

android:minLevel

整數值,指定這個項目所允許的最小級別。

 

例子(EXAMPLE):

<?xml version="1.0" encoding="utf-8"?>
<level-listxmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/status_off"
        android:maxLevel="0"/>
    <item
        android:drawable="@drawable/status_on"
        android:maxLevel="1"/>
</level-list>

一旦級別類被應用給瞭一個View對象,就能夠調用setLevel()或setImageLevel()方法來改變級別。

 

過渡期繪制資源

TransitionDrawable是一個繪制資源對象,它能夠在兩個繪制資源之間漸入漸出。

每個可繪制資源都用一個<item>元素來代表,它被放在一個單一的<transition>元素內部。在<transition>元素內隻能包含一個或兩個<item>元素。向前過渡,要調用startTransition()方法,向後過渡,要調用reverseTransition()方法。

文件位置(FILE LOCATION):

res/drawable/filename.xml

文件名被用作資源ID。

被編譯資源的數據類型(COMPILED RESOURCE DATATYPE):

資源指向一個TransitionDrawable對象。

資源引用(RESOURCE REFERENCE):

在Java代碼中:R.drawable.filename

在XML中:@[package:]drawable/filename

語法(SYNTAX):

<?xml version="1.0" encoding="utf-8"?>
<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"/>
</transition>

元素(ELEMENTS):

<transition>

必須的,它必須是根元素,它要包含一個或多個<item>元素。

屬性(ATTRIBUTES):

xmlns:android

字符串值,必須的。它定義瞭XML的命名空間,必須是:http://schemas.android.com/apk/res/android

<item>

它定義瞭一個繪制過渡效果的繪制資源,必須是<tansition>元素的子元素,它還可以接收<bitmap>子元素。

屬性(ATTRIBUTES):

android:drawable

繪制資源,必須的。它應用一個可繪制資源。

android:id

資源ID,針對這個繪制資源的唯一的資源ID。要使用“@+id/name”格式,給這個項目創建一個新的資源ID,“+”指示應該給這個資源創建一個新的ID。通過這個ID,可以使用View.findViewById()或Activity.findViewById()方法來獲取或編輯這個可繪制資源。

android:top

整數值。上邊緣的偏移像素。

android:right

整數值。右邊緣的偏移像素。

android:bottom

整數值。下邊緣的偏移像素。

android:left

整數值。左邊緣的偏移像素。

例子(EXAMPLE):

XML文件被保存在res/drawable/transition.xml:

<?xml version="1.0" encoding="utf-8"?>
<transitionxmlns:android="http://schemas.android.com/apk/res/android">
    <itemandroid:drawable="@drawable/on"/>
    <itemandroid:drawable="@drawable/off"/>
</transition>

佈局XML把這個繪制資源應用給一個View對象:

<ImageButton
    android:id="@+id/button"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/transition"/>

下面的代碼在第一項到第二項之間要執行500毫秒的過渡:

ImageButton button =(ImageButton) findViewById(R.id.button);
TransitionDrawable drawable =(TransitionDrawable) button.getDrawable();
drawable.startTransition(500);

 

 摘自 FireOfStar的專欄

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。