当前位置:   article > 正文

Android中自定义CommonShapeButton替换Shape标签_android 使用自定义属性替代项目中的shape

android 使用自定义属性替代项目中的shape

在原有的基础上,新增了java版本,目前支持kotlin和java两个版本,git地址:文章链接

又更新了,新增文字大小自适应方法,xml文件中可控

在Android开发中,使用Shape标签可以很方便的帮我们构建资源文件,跟传统的png图片相比:

  • shape标签可以帮助我们有效减小apk安装包大小。
  • 在不同手机的适配上面,shape标签也表现得更加优秀。

关于shape标签如何使用,在网上一搜一大把,笔者这里就不赘述了,今天我们要讨论的shape标签泛滥成灾以后带来的后果。这里先给大家看一个维护刚刚有3年的项目的drawable目录。

请注意右侧标红的滚动条,有没有感觉很酸爽,在这个目录下的文件现在已经接近400个了,并且还在不停的增加。我们分析这个目录下的xml构成,发现主要由两种类型构成:selector和shape。selector这里略过不提,重点是shape,发现shape文件已经超过一半多,并且还会不停的增加,我们在带着好奇的心态,随便点开几个shape看一看

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android">
  3. <!-- solid的表示填充颜色 -->
  4. <solid android:color="#44ffffff"/>
  5. <stroke
  6. android:width="1px"
  7. android:color="#77ffffff"/>
  8. <!--为了展示半圆,就把角度设置的大点-->
  9. <corners android:radius="100dp"/>
  10. </shape>
  11. <?xml version="1.0" encoding="utf-8"?>
  12. <shape xmlns:android="http://schemas.android.com/apk/res/android">
  13. <solid android:color="#ffffff" />
  14. <corners android:radius="1dip" />
  15. <stroke
  16. android:width="0.5dip"
  17. android:color="#ea474f" />
  18. </shape>
  19. <?xml version="1.0" encoding="utf-8"?>
  20. <shape xmlns:android="http://schemas.android.com/apk/res/android">
  21. <stroke
  22. android:width="0.5dp"
  23. android:color="@color/color_de" />
  24. <solid android:color="@color/white" />
  25. <corners android:radius="5dp" />
  26. </shape>

真的是不看不知道,一看吓一跳。原来我们项目中大量存在的shape文件其实都是大同小异的。涉及到最常见的shape变化:圆角,描边,填充以及渐变。进一步分析,我们又发现:

  • 有些时候填充颜色是相同的,只不过圆角半径不同,我们就得新增及一个shape文件。
  • 有些时候圆角半径是相同的,只不过填充颜色不同,我们又得增加一个shape文件。
  • 有些时候两个负责不同业务模块的同事,各自新增一个同样样式的shape文件。

等等一些情况,让我们陷入了shape文件的无限新增与维护中。我们不禁要思考,有没有办法可以把这些shape统一起来管理呢?xml书写出来的代码最终不都是会对应一个内存中的对象么?我们能不能从管理shape文件过渡到管理一个对象呢?

Talk is cheap 。 Show me the code

第一步,我们需要确定shape标签对应的泪到底是哪一个?第一反应就是ShapeDrawable,顾名思义嘛。然后残酷的事实告诉我们其实是GradientDrawable这兄弟。浏览Grad

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/796411
推荐阅读
相关标签
  

闽ICP备14008679号