Android-drawable资源-StateListDrawable

          StateListDrawable可能大家比较陌生,当时<selector></selector>大家一定很熟悉,StateListDrawable就是<selector></selector>对应的类。它是由多个条件选择图片,组成一个整体的图形!每一个item对应一种状态匹配,以及这种状态下的drawable资源。

每次状态发生改变时,都会从上到下遍历这个状态列表,第一个和它匹配将会被调用,而不是再适合的。

下面是所有的状态列表:


<item>
为某个状态定义一个drawable,必须作为<selector>的子元素。

属性:

android:drawable             必须的,指向一个drawable资源 android:state_pressed                 Boolean。是否按下 android:state_focused           Boolean。是否获得获得焦点 android:state_hovered        Boolean。鼠标在上面滑动的状态。通常和state_focused使用同样的drawable  api14后新增的 android:state_selected                  Boolean。是否选中 android:state_checkable      Boolean。是否可以被勾选(checkable)。只能用在可以勾选的控件上 android:state_checked                Boolean。是否被勾选上 android:state_enabled                    Boolean。是否可用 android:state_activated      Boolean。是否被激活并持久的选择  api11后新增 android:state_window_focused Boolean。当前应用程序是否获得焦点
代码实例:res/drawable/selector.xml(当没有声明状态时,默认匹配所有状态)。

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

</selector>
xml布局中引用:

    <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hello"
        android:background="@drawable/selector"/>

纯代码实现:

StateListDrawable drawable=new StateListDrawable();
		drawable.addState(new int[]{android.R.attr.state_pressed}, getResources().getDrawable(R.color.black));
		drawable.addState(new int[]{}, getResources().getDrawable(R.color.white));
		Button btn=(Button) findViewById(R.id.btn);
		btn.setBackground(drawable);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值