在家办公都快1个月了,人都要疯了。希望疫情早点过去,加油武汉,加油中国!!!

今天给大家分享一个我自己封装的小项目,我们公司的产品也在使用,就是使用自定义属性替代项目中的shape文件,首先看效果图:

从效果图中可以看出,覆盖了App中常用的按钮效果,弧度、按压效果、标签选择、按钮渐变色等。如果用shape.xml实现的话,项目drawable目录下如图所示:

你会发现需要写很多shape文件,很难管理。如果使用自定义属性的话,有以下优点:

  • 1.减少项目中95%以上的shape文件,还能减少安装包体积
  • 2.一键复制,增加开发效率
  • 3.代码灵活修改Shape属性,例如按钮弧度,渐变色等

Shape框架如何使用?

使用Android Studio开发的童鞋在线依赖,目前最新版本是1.1.1:

implementation 'com.ansen.shape:shape:1.1.1'
目前支持以下自定义属性,满足大部分需求
app:solid_color="#FF00FF" 填充颜色
app:select_solid_color="#FFFFFFFF" 选中填充颜色
app:pressed_solid_color="#FFDEE0E2" 按压填充颜色app:corners_radius="5dp"  弧度app:stroke_color="#00ff00" 边框颜色
app:select_stroke_color="#ffbababa" 选中情况边框色
app:stroke_width="2dp"  边框宽度
app:select_stroke_width="0.5dp" 选中情况边框宽度app:top_left_radius="15dp" 左上弧度
app:top_right_radius="15dp" 右上弧度
app:bottom_left_radius="15dp" 左下弧度
app:bottom_right_radius="15dp" 右下弧度
app:shape_view="oval" View形状
app:color_orientation="top_bottom" 颜色渐变色方向(背景/边框/文字)app:start_color="#5BC9FF" 填充渐变色开始
app:center_color="#FF00FF" 填充渐变色中间
app:end_color="#4669F6" 填充渐变色结束app:select_start_color="#EB89FF" 渐变色选中开始色
app:select_center_color="#FCCE5F" 渐变色选中中间色
app:select_end_color="#FCCE5F" 渐变色选中结束色按压渐变色
app:pressed_start_color="#983458"
app:pressed_center_color="#98633F"
app:pressed_end_color="#98633F"<!--   TextView/EditView控件独有属性     -->
app:text="点击我切换选中效果"
app:select_text="选中时显示的文字"
app:border_gradient="true/false" 边框渐变
app:text_gradient="true/false" 文字渐变app:text_color="#FFFFFFFF" 文本未选中颜色
app:select_text_color="#BBBBBB" 文本选中颜色app:unselect_drawable="@mipmap/icon_sex_select_male" 图片未选中
app:select_drawable="@mipmap/icon_sex_select_woman" 图片选中
app:drawable_direction="right" 图片显示TextView方向,left:左边 top:上面 right:右边 bottom:底部

首先需要在xml根布局控件增加一个属性:

xmlns:app="http://schemas.android.com/apk/res-auto"

例如给TextView设置弧度、填充颜色、边框颜色、边框宽度,代码如下所示:

<com.ansen.shape.AnsenTextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:padding="10dp"android:text="Hello World!"android:textColor="#FFFFFF"app:corners_radius="5dp"app:solid_color="#FF00FF"app:stroke_color="#00ff00"app:stroke_width="2dp" />

源码下载

分享一个自己的开源项目ShapeView相关推荐

  1. 爱上开源boot4go,我的第一个golang的开源项目

    前言 笔者从02年开始进入java程序员的行业, springcloud微服务方面的项目也做过很多,在云原生的年代,开始使用docker,k8s以及相关的一些云原生基础组件,目测到很多的后端服务都是使 ...

  2. [网赚项目] 分享一个刚需赚钱项目,可多重变现,月入好几个w

    不知道你喜不喜欢看纪录片,就是人与自然\天地玄黄\浮生六日这类的纪录片,我是很喜欢的 这个项目就是这样,卖纪录片合集,很简单,但是想卖好,也需要一定技巧 先来看看收益,月入好几个w,还是很可观的吧(简 ...

  3. 一个文件的开源项目,开启你的开源之旅

    你是否记得:刚学完编程基础那会儿,特别想写个东西,但动起手来却发现到处碰壁? 你是否找到:一个好玩的开源项目,结果卡在了部署环境.安装依赖上?最后"含恨而终"! 我刚学编程的时候, ...

  4. 搭建去中心化交易所——分享一个简单的DEX项目代码及文档

    分享一个简单的DEX项目代码及文档 Dex.top项目源码及文档分享 // DEx.top - Instant Trading on Chain // // Author: DEx.top Teamp ...

  5. 分享一个进销存项目(多层架构)

    分享一个进销存项目(多层架构) 花了点时间完成了一个进销存的项目,个人觉得对逻辑分析,架构思想都有一定的体会,故拿出来和大家分享下,首先介绍下项目的功能吧,主要功能有采购管理,销售管理,库存管理,人员 ...

  6. 做一个优秀的开源项目,需要注意哪些方面?

    摘要 如果你想发布一个开源库,请确保它有以下特点: 清晰的依赖性和安装说明 至少有一个简要的文档指南 修改日志和仓库中的标签 关于支持的语言.运行时.工具版本的信息和项目的成熟度 一个可以让用户提问和 ...

  7. 小程序影藏溢出的gif_分享几个优质开源项目 | 电商类app,趣享 gif,研发助手DoraemonKit,github小程序...

    本来想一个个分享,这样标题比较好起,不过感觉有点少,那就不定期攒一些分享吧.其中部分来源投稿,有些是我自己无意发现的. 1非常方便的 github 小程序员 经常想在手机上看一些最新的github项目 ...

  8. 如何向Openstack社区提交一个新的开源项目

    前几天有个朋友问我,自己有一个idea不错的项目,也把基本的框架写好了,想贡献到Openstack社区,却不知道应该怎么做.正好之前我有过类似的经历,那么来分享一下我是如何向Openstack社区提交 ...

  9. 【分享一个动漫拼图项目】

    分享一个动漫拼图小游戏项目 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.此次将主要使用JFrame来完成此项目,JFrame是什么? 二.使用步骤 1.项目代 ...

最新文章

  1. 高斯混合模型聚类实战(Gaussian Mixtures)
  2. php屏幕抓取,关于屏幕抓取:如何在PHP中实现Web scraper?
  3. Android实战】DroidPlugin插件化应用分析
  4. 毕业论文 | 基于单片机的多功能智能小车设计论文(电路+程序+论文)
  5. DDR3和eMMC区别
  6. qt 设计师缩放_重新设计缩放体验
  7. 如果在这样的环境中写代码,会不会很高效
  8. linux添加定时器防抖,linux驱动2.3按键中断-定时器防抖
  9. ROS笔记(17) Gazebo
  10. Applying a Color Wash to Images
  11. 注册表把html设置成桌面,[注册表] 将Windows 10默认应用程序设置页面添加到桌面右键菜单中...
  12. Spring Cloud中如何保证各个微服务之间调用的安全性
  13. My.WinformMvc,一个 Winform MVC 框架
  14. mysql导入超大sql文件方法
  15. icp光谱仪的工作原理_ICP原理
  16. 花两年时间去面试一个人——给准备面试的启发
  17. 计算机导论结业报告大一,河北工业大学计算机导论结业论文
  18. 人工智能技术对全民生活的影响
  19. 研发人员技术定级的一些思考
  20. 基于K近邻的葡萄酒质量检测项目

热门文章

  1. 音乐系统-七月在线课程
  2. Quartus II 功能仿真设置流程
  3. Alibaba Sentinel功能入门与配置持久化
  4. 沃尔玛logo的历史
  5. MySQL零基础从入门到精通(函数篇)
  6. then在c语言中什么意思,then 放在句末可以表示”然后“的意思吗?
  7. win10蓝屏 你的电脑遇到问题 需要重新启动 自动修复无限重启 终止代码:BAD_POOL_CALLER
  8. 论文阅读:基于深度学习的肺癌放射基因组学图像生物标记和基因表达数据关联框架
  9. (1) Dot net“很难”实现像Java一样的跨平台性
  10. 《智能手机心率和呼吸率测量算法的前瞻性验证》阅读笔记