一.创建xml文件,位置:drawable/xxx.xml,同目录下记得要放相关图片

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <selectorxmlns:android="http://schemas.android.com/apk/res/android">
  3. <!--没有焦点时的背景图片-->
  4. <itemandroid:drawable="@drawable/handle_normal"android:state_enabled="true"android:state_window_focused="false"/>
  5. <!--触摸模式按下时的背景图片-->
  6. <itemandroid:drawable="@drawable/handle_pressed"android:state_pressed="true"/>
  7. <itemandroid:drawable="@drawable/handle_focused"android:state_enabled="true"android:state_focused="true"/>
  8. <itemandroid:drawable="@drawable/handle_normal"android:state_enabled="true"/>
  9. <!--获得焦点时的图片背景-->
  10. <itemandroid:drawable="@drawable/handle_focused"android:state_focused="true"/>
  11. <!--
  12. android:state_selected是选中
  13. android:state_focused是获得焦点
  14. android:state_pressed是点击
  15. android:state_enabled是设置是否响应事件,指所有事件
  16. -->
  17. </selector>

.使用xml文件:

1.方法一:listview中配置android:listSelector="@drawable/xxx
或者在listviewitem中添加属性android
background="@drawable/xxx"

2.方法二:Drawable drawable = getResources().getDrawable(R.drawable.xxx);
ListView.setSelector(drawable);
但是这样会出现列表有时候为黑的情况,需要加上:android:cacheColorHint="@android:color/transparent"
使其透明。

相关属性:

android:state_selected是选中
android:state_focused
是获得焦点
android:state_pressed
是点击
android:state_enabled
是设置是否响应事件,指所有事件

根据这些状态同样可以设置buttonselector效果。也可以设置selector改变button中的文字状态。


以下是配置button中的文字效果:
drawable/button_font.xml

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <selectorxmlns:android="http://schemas.android.com/apk/res/android">
  3. <itemandroid:state_selected="true"android:color="#FFF"/>
  4. <itemandroid:state_focused="true"android:color="#FFF"/>
  5. <itemandroid:state_pressed="true"android:color="#FFF"/>
  6. <itemandroid:color="#000"/>
  7. </selector>
Button 还可以实现更复杂的效果,例如渐变
drawable/button_color.xml

[html] view plain copy
  1. <spanstyle="color:#330033;"><?xmlversion="1.0"encoding="utf-8"?>
  2. <selectorxmlns:android="http://schemas.android.com/apk/res/android">/
  3. <itemandroid:state_pressed="true">//定义当button处于pressed状态时的形态。
  4. <shape>
  5. <gradientandroid:startColor="#8600ff"/>
  6. <strokeandroid:width="2dp"android:color="#000000"/>
  7. <cornersandroid:radius="5dp"/>
  8. <paddingandroid:left="10dp"android:top="10dp"
  9. android:bottom="10dp"android:right="10dp"/>
  10. </shape>
  11. </item>
  12. <itemandroid:state_focused="true">//定义当button获得focus时的形态
  13. <shape>
  14. <gradientandroid:startColor="#eac100"/>
  15. <strokeandroid:width="2dp"android:color="#333333"color="#ffffff"/>
  16. <cornersandroid:radius="8dp"/>
  17. <paddingandroid:left="10dp"android:top="10dp"
  18. android:bottom="10dp"android:right="10dp"/>
  19. </shape>
  20. </item>
  21. </selector></span><spanstyle="color:#ff0000;"></span>
最后,需要在包含buttonxml文件里添加两项。例如main.xml文件,需要在<Button />里加两项 androidfocusable="true"android:background="@drawable/button_color"这样就把drawale/button_color.xml文件与这个控件关联起来了。

更多相关文章

  1. Android学习笔记(33):Android对话框
  2. Android中TabLayout添加小红点
  3. Android官方命令深入分析之Hierarchy Viewer
  4. Android与JavaScrpit相互调用
  5. AIDL介绍和实例讲解
  6. android.net.LocalSocket
  7. Android点击水波纹效果
  8. Android参数设置: Preference
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android定时任务
  2. Android中Webview自适应屏幕
  3. 解决Genymotion运行Android 5.0一直卡在
  4. Android Studio连接华为mate8手机调试时
  5. Android 切换日夜间模式
  6. Android Studio启动异常Unable to start
  7. RK平台修改android系统源码设置开机启动a
  8. SMS发送流程 Android2.2
  9. Android 延迟执行方法
  10. Android中安装软件到模拟器时提示:INSTALL