public class LevelListDrawable
extends DrawableContainer
java.lang.Object | |||
↳ | android.graphics.drawable.Drawable | ||
↳ | android.graphics.drawable.DrawableContainer | ||
↳ | android.graphics.drawable.LevelListDrawable |
管理多个备用Drawable的资源,每个备用最大数值。 使用setLevel(int)
设置对象的级别值将加载具有分配给其最大属性的下一个较大或相等值的图像。 一个很好的使用LevelListDrawable的例子是一个电池电量指示器图标,带有不同的图像来指示当前的电池电量。
它可以使用<level-list>
元素在XML文件中定义。 每个Drawable级别在嵌套的<item>
定义。 例如:
<level-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:maxLevel="0" android:drawable="@drawable/ic_wifi_signal_1" /> <item android:maxLevel="1" android:drawable="@drawable/ic_wifi_signal_2" /> <item android:maxLevel="2" android:drawable="@drawable/ic_wifi_signal_3" /> <item android:maxLevel="3" android:drawable="@drawable/ic_wifi_signal_4" /> </level-list>
通过将此XML保存到项目的res / drawable /文件夹中,可以将其引用为ImageView
的drawable。 默认图像是列表中的第一个。 然后可以通过setImageLevel(int)
将其更改为其他级别setImageLevel(int)
。 有关更多信息,请参阅Drawable Resources的指南。
XML attributes |
|
---|---|
android:drawable |
Reference to a drawable resource to use for the frame. |
android:maxLevel |
The maximum level allowed for this item. |
android:minLevel |
The minimum level allowed for this item. |
Public constructors |
|
---|---|
LevelListDrawable() |
Public methods |
|
---|---|
void |
addLevel(int low, int high, Drawable drawable) |
void |
inflate(Resources r, XmlPullParser parser, AttributeSet attrs, Resources.Theme theme) 从可选的由主题设计的XML资源中扩展此Drawable。 |
Drawable |
mutate() 使这个drawable可变。 |
Protected methods |
|
---|---|
boolean |
onLevelChange(int level) 如果您根据级别而变化,请在您的子类中覆盖此内容以更改外观。 |
void |
setConstantState(DrawableContainer.DrawableContainerState state) |
Inherited methods |
|
---|---|
From class android.graphics.drawable.DrawableContainer
|
|
From class android.graphics.drawable.Drawable
|
|
From class java.lang.Object
|
|
From interface android.graphics.drawable.Drawable.Callback
|
引用可用于该帧的可绘制资源。 如果没有给出,drawable必须由第一个子标签定义。
必须是另一个资源的引用,其形式为“ @[+][package:]type:name
”,或者其形式为“一个主题属性 ?[package:][type:]name
”。
这对应于全局属性资源符号 drawable
。
此项目允许的最高级别。
必须是整数值,例如“ 100
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 maxLevel
。
此项目允许的最低级别。
必须是整数值,例如“ 100
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 minLevel
。
void addLevel (int low, int high, Drawable drawable)
Parameters | |
---|---|
low |
int
|
high |
int
|
drawable |
Drawable
|
void inflate (Resources r, XmlPullParser parser, AttributeSet attrs, Resources.Theme theme)
从可选的由主题设计的XML资源中扩展此Drawable。 对于每个Drawable,这不能被调用一次以上。 请注意,框架可能已经调用过这一次从XML资源创建Drawable实例。
Parameters | |
---|---|
r |
Resources : Resources used to resolve attribute values |
parser |
XmlPullParser : XML parser from which to inflate this Drawable |
attrs |
AttributeSet : Base set of attribute values |
theme |
Resources.Theme : Theme to apply, may be null |
Throws | |
---|---|
XmlPullParserException |
|
IOException |
Drawable mutate ()
使这个drawable可变。 这个操作不能逆转。 一个可变的drawable保证不与其他drawable共享它的状态。 当你需要修改从资源加载的drawable的属性时,这是特别有用的。 默认情况下,从同一资源加载的所有可绘制实例共享一个公共状态; 如果修改一个实例的状态,则所有其他实例都将收到相同的修改。 在可变Drawable上调用此方法将不起作用。
Returns | |
---|---|
Drawable |
This drawable. |
boolean onLevelChange (int level)
如果您根据级别而变化,请在您的子类中覆盖此内容以更改外观。
Parameters | |
---|---|
level |
int
|
Returns | |
---|---|
boolean |
Returns true if the level change has caused the appearance of the Drawable to change (that is, it needs to be drawn), else false if it looks the same and there is no need to redraw it since its last level. |
void setConstantState (DrawableContainer.DrawableContainerState state)
Parameters | |
---|---|
state |
DrawableContainer.DrawableContainerState
|