android statelistdrawable如何创建和使用

avatar
作者
筋斗云
阅读量:0

在Android中,StateListDrawable是一种可以根据控件状态(例如按下、获取焦点等)自动切换图片的Drawable

  1. 首先,在res/drawable目录下为每个状态创建一个图片文件。例如,我们创建三个不同的图片:button_normal.png(正常状态),button_pressed.png(按下状态)和button_focused.png(获取焦点状态)。

  2. 接下来,在res/drawable目录下创建一个XML文件,例如button_state_list.xml。在这个文件中,定义一个selector元素,并为每个状态指定相应的图片。例如:

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">     <item android:drawable="@drawable/button_pressed" android:state_pressed="true" />     <item android:drawable="@drawable/button_focused" android:state_focused="true" />     <item android:drawable="@drawable/button_normal" /> </selector> 

这里,我们为按下状态指定了button_pressed.png图片,为获取焦点状态指定了button_focused.png图片,而正常状态则使用button_normal.png图片。

  1. 最后,在布局文件或代码中使用这个StateListDrawable。例如,在布局文件中,将Button的android:background属性设置为刚才创建的button_state_list.xml
    android:id="@+id/my_button"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="Click me!"     android:background="@drawable/button_state_list" /> 

现在,当用户与这个按钮交互时,它会根据不同的状态显示相应的图片。

如果你想在代码中创建和使用StateListDrawable,可以使用以下方法:

StateListDrawable stateListDrawable = new StateListDrawable(); stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, getResources().getDrawable(R.drawable.button_pressed)); stateListDrawable.addState(new int[]{android.R.attr.state_focused}, getResources().getDrawable(R.drawable.button_focused)); stateListDrawable.addState(new int[]{}, getResources().getDrawable(R.drawable.button_normal));  Button myButton = findViewById(R.id.my_button); myButton.setBackground(stateListDrawable); 

这段代码首先创建了一个StateListDrawable对象,然后为每个状态添加了相应的图片。最后,将StateListDrawable设置为按钮的背景。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!