【UI布局】用XML的selector实现按钮样式自动切换

如果你曾经是一名WEB前台设计师,如果你曾经有过设计的功底,那么你很荣幸,如果你切到Android平台中,以前的知识和经验都能很好的移植到Android平台中。本人以为,学习是一个长期的积累过程,经验很重要,为什么有的人不管做神马生意都赚钱,因为他有经验,经验加上变通,就是智慧。

布局是根本,不管在WEB设计还是在手机客户端设计中,都是如此。如果一开始局就没有布好,就算你的细节做得再精美,到头来还是要重构。相比传统WEB设计中的布局,Android平台一样都不少,只是WEB设计的层布局,在Android中有了个新的叫法,叫帧布局。布局在本篇中不是重点,因为和WEB中的概念几乎一样,所以一笔带过。

说实话,我还是比较喜欢WEB设计中的样式命名规范,简单,易用,最主要的是WEB的样式很好管理,不像Android样式文件分得很细,看起来比较零乱。如果你研究过SDK的设计方式,你会发现一个按钮的样式,分得很细,有btn_default.xml,btn_default_small.xml等二十几个样式文件。

下面我们模仿SDK的设计方式,自定义一个按钮样式文件btn_default.xml,包含非焦点,焦点,pressed三种不同状态。

 
 
  1. 1<?xmlversion="1.0"encoding="utf-8"?>
  2. 2<selectorxmlns:android="http://schemas.android.com/apk/res/android">
  3. 3itemandroid:state_pressed="true"> //按下
  4. 4shape>
  5. 5gradient
  6. 6android:startColor="#ff8c00"
  7. 7android:endColor="#FFFFFF"
  8. 8android:angle="270"/>
  9. 9
  10. 10stroke
  11. 11android:width="2dp"
  12. 12android:color="#dcdcdc"/>
  13. 13
  14. 14corners
  15. 15android:radius="2dp"/>
  16. 16
  17. 17padding
  18. 18android:left="10dp"
  19. 19android:top="10dp"
  20. 20android:right="10dp"
  21. 21android:bottom="10dp"/>
  22. 22
  23. 23</>
  24. 24
  25. 25item>
  26. 26
  27. 27itemandroid:state_focused="true"> //焦点
  28. 28>
  29. 29gradient
  30. 30android:startColor="#ffc2b7"
  31. 31android:endColor="#ffc2b7"
  32. 32android:angle="270"/>
  33. 33
  34. 34stroke
  35. 35android:width="2dp"
  36. 36android:color="#dcdcdc"/>
  37. 37
  38. 38corners
  39. 39android:radius="2dp"/>
  40. 40
  41. 41padding
  42. 42android:left="10dp"
  43. 43android:top="10dp"
  44. 44android:right="10dp"
  45. 45android:bottom="10dp"/>
  46. 46
  47. 47>
  48. 48
  49. 49> //失去焦点
  50. 50
  51. 51>
  52. 52>
  53. 53gradient
  54. 54android:startColor="#ff9d77"
  55. 55android:endColor="#ff9d77"
  56. 56android:angle="270"/>
  57. 57
  58. 58stroke
  59. 59android:width="2dp"
  60. 60android:color="#fad3cf"/>
  61. 61
  62. 62corners
  63. 63android:radius="2dp"/>
  64. 64
  65. 65padding
  66. 66android:left="10dp"
  67. 67android:top="10dp"
  68. 68android:right="10dp"
  69. 69android:bottom="10dp"/>
  70. 70
  71. 71>
  72. 72
  73. 73>
  74. 74
  75. 75selector

selector可以理解为状态切换器,不同的状态下切换不同的样式,在传统WEB设计中就是伪类hover。shape意为定义按钮的形状。

样式的引用很简单,Android统一把样式文件作为她的一种资源,下面是样式的使用方式。

Button
  
  
  • 2android:background="@drawable/btn_default"
  • 3android:layout_width="wrap_content"
  • 4android:layout_height="wrap_content"
  • 5android:text="testStyle"
  • 6>
  • 7
  • 8Button>
  • 9
  • 效果

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐


    php输出xml格式字符串
    J2ME Mobile 3D入门教程系列文章之一
    XML轻松学习手册
    XML入门的常见问题(一)
    XML入门的常见问题(三)
    XML轻松学习手册(2)XML概念
    xml文件介绍及使用
    xml编程(一)-xml语法
    XML文件结构和基本语法
    第2章 包装类
    XML入门的常见问题(二)
    Java对象的强、软、弱和虚引用
    JS解析XML文件和XML字符串详解
    java中枚举的详细使用介绍
    了解Xml格式
    XML入门的常见问题(四)
    深入SQLite多线程的使用总结详解
    PlayFramework完整实现一个APP(一)
    XML和YAML的使用方法
    XML轻松学习总节篇