Android中的Drawable资源—— StateListDrawable
来源:互联网 发布:uml对象设计与编程 编辑:程序博客网 时间:2024/04/27 18:12
这种使用xml来定义图片的方式在buttion中经常使用,它会根据状态来显示不同的图片资源。
存放位置:
res/drawable/
使用方式:
在Java文件中:R.drawable.filename
例如:
Resources res = getResources();Drawable drawable = res.getDrawable(R.drawable.myimage);
在xml布局文件中:@[package:]drawable/filename
例如:
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/myninepatch" />
语法:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" android:constantSize=["true" | "false"] android:dither=["true" | "false"] android:variablePadding=["true" | "false"] > <item android:drawable="@[package:]drawable/drawable_resource" android:state_pressed=["true" | "false"] android:state_focused=["true" | "false"] android:state_hovered=["true" | "false"] android:state_selected=["true" | "false"] android:state_checkable=["true" | "false"] android:state_checked=["true" | "false"] android:state_enabled=["true" | "false"] android:state_activated=["true" | "false"] android:state_window_focused=["true" | "false"] /></selector>
例如:
<?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 触摸时并且当前窗口处于交互状态 --> <item android:state_pressed="true" android:state_window_focused="true" android:drawable= "@drawable/pic1" /> <!-- 触摸时并且没有获得焦点状态 --> <item android:state_pressed="true" android:state_focused="false" android:drawable="@drawable/pic2" /> <!--选中时的图片背景--> <item android:state_selected="true" android:drawable="@drawable/pic3" /> <!--获得焦点时的图片背景--> <item android:state_focused="true" android:drawable="@drawable/pic4" /> <!-- 窗口没有处于交互时的背景图片 --> <item android:drawable="@drawable/pic5" /> </selector>
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/button" />
另外,需要说的是,上面定义的这个xml会被相应的解析为StateListDrawable对象,所以我们也可以使用代码来进行实现。
//初始化一个空对象 StateListDrawable stalistDrawable = new StateListDrawable(); //获取对应的属性值 Android框架自带的属性 attr int pressed = android.R.attr.state_pressed; int window_focused = android.R.attr.state_window_focused; int focused = android.R.attr.state_focused; int selected = android.R.attr.state_selected; stalistDrawable.addState(new int []{pressed , window_focused}, getResources().getDrawable(R.drawable.pic1)); stalistDrawable.addState(new int []{pressed , -focused}, getResources().getDrawable(R.drawable.pic2); stalistDrawable.addState(new int []{selected }, getResources().getDrawable(R.drawable.pic3); stalistDrawable.addState(new int []{focused }, getResources().getDrawable(R.drawable.pic4); //没有任何状态时显示的图片,我们给它设置我空集合 stalistDrawable.addState(new int []{}, getResources().getDrawable(R.drawable.pic5);
上面的“-”负号表示对应的属性值为false
https://developer.android.com/guide/topics/resources/drawable-resource.html#StateList
https://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html
http://blog.csdn.net/qinjuning/article/details/7474827
0 0
- Android中的Drawable资源—— StateListDrawable
- Android-drawable资源-StateListDrawable
- Drawable资源——StateListDrawable 资源
- Drawable资源----StateListDrawable
- 初学Android,使用Drawable资源之使用StateListDrawable资源(十三)
- Android中的Drawable资源——Transition Drawable
- Android中的Drawable资源——Bitmap
- Android中的Drawable资源—— NinePatchDrawable
- Android中的Drawable资源—— LayerDrawable
- Android中的Drawable资源—— LevelListDrawable
- Android中的Drawable资源—— InsetDrawable
- Android中的Drawable资源—— ClipDrawable
- Android中的Drawable资源—— ScaleDrawable
- Android中的Drawable资源—— GradientDrawable
- Android中的Drawable资源—— VectorDrawable
- Android中的Drawable资源
- Android中的Drawable资源
- Android中的Drawable资源
- 获取日期
- 初探ViewPager
- Generate Parentheses
- mongoDB查询之find
- ASP.NET错误处理的三种方式
- Android中的Drawable资源—— StateListDrawable
- C++中继承的注意事项
- oracle复习 - day02
- 如何把安全证书导入/删除 java中的cacerts证书库
- How to install and configure NGINX on CentOS 7
- 生成带混淆配置的aar库
- 单例模式--设计模式1
- 关于Android补间动画中的属性值
- 如何强制删掉文件(特别提示文件不存在)