Most visited

Recently visited

Added in API level 1

LevelListDrawable

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的指南。

Summary

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

XML attributes

android:drawable

引用可用于该帧的可绘制资源。 如果没有给出,drawable必须由第一个子标签定义。

必须是另一个资源的引用,其形式为“ @[+][package:]type:name ”,或者其形式为“一个主题属性 ?[package:][type:]name ”。

这对应于全局属性资源符号 drawable

android:maxLevel

此项目允许的最高级别。

必须是整数值,例如“ 100 ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 maxLevel

android:minLevel

此项目允许的最低级别。

必须是整数值,例如“ 100 ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 minLevel

Public constructors

LevelListDrawable

Added in API level 1
LevelListDrawable ()

Public methods

addLevel

Added in API level 1
void addLevel (int low, 
                int high, 
                Drawable drawable)

Parameters
low int
high int
drawable Drawable

inflate

Added in API level 21
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

mutate

Added in API level 3
Drawable mutate ()

使这个drawable可变。 这个操作不能逆转。 一个可变的drawable保证不与其他drawable共享它的状态。 当你需要修改从资源加载的drawable的属性时,这是特别有用的。 默认情况下,从同一资源加载的所有可绘制实例共享一个公共状态; 如果修改一个实例的状态,则所有其他实例都将收到相同的修改。 在可变Drawable上调用此方法将不起作用。

Returns
Drawable This drawable.

Protected methods

onLevelChange

Added in API level 1
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.

setConstantState

Added in API level 1
void setConstantState (DrawableContainer.DrawableContainerState state)

Parameters
state DrawableContainer.DrawableContainerState

Hooray!