满地鸡毛的一年 || 转行Android之路
作者:程序员小北
链接:https://juejin.cn/post/7042468847466577957
效果预览
先来看一下这个库的实际表现吧,用起来真的很简单,而且特别的漂亮。以下效果图是在 MI 6X,Android 9 系统上的表现。不同设备实际效果可能有差异,读者请注意。
可以看到,已经支持 View,TextView,ImageView,Button,ConstraintLayout,LinearLayout,RelativeLayout,FrameLayout,RecyclerView 控件的圆角与描边了,基本覆盖日常开发所需,一针治好设计师多年的圆角病!
如何使用
本项目全部使用 Kotlin 语言开发,最低支持版本为 Android 5.0。代码在 Github 和 Gitee(码云)均已经开源。读者可以点击下方链接查看更加详细的使用方法,本文只做粗略的介绍。
Github:github.com/liqvip/Easy…
Gitee:gitee.com/lishu1108/E…
如果本项目帮助到了你,希望读者可以帮我点个 Star,我会更加努力搬砖的!第一步
在项目根目录下的
build.gradle
中添加 jitpack 仓库allprojects {repositories {...maven { url 'https://jitpack.io' }} }
第二步
在对应模块的
build.gradle
中添加 EasyView 的依赖dependencies {...implementation 'com.github.liqvip:EasyView:1.0.0' }
第三步
在布局文件中添加需要使用的 EasyView,以下是简单示例
<com.github.easyview.EasyImageViewandroid:layout_width="@dimen/dp_200"android:layout_height="@dimen/dp_200"app:ev_radius="@dimen/dp_100"app:ev_stroke_width="@dimen/dp_5"app:ev_stroke_color="@color/demo18"/><com.github.easyview.EasyRelativeLayoutandroid:layout_width="@dimen/dp_250"android:layout_height="@dimen/dp_150"app:ev_topLeft_radius="@dimen/dp_50"app:ev_bottomLeft_radius="@dimen/dp_20"app:ev_stroke_width="@dimen/dp_5"app:ev_stroke_color="@color/demo6"/>......
只需三步,清清爽爽搞定所有圆角和描边。
我为什么要写这个库
在 Android 开发中,如果一个控件想要实现上面类似的圆角和描边效果,有如下两种最为常用的方式。
写 xml 文件,设置圆角背景
在 drawable 文件夹下,新建 xml 文件,通过 shape 标签来设置圆角半径,描边宽度和颜色。然后将它设置为某个具体 View 的背景即可。这种方式有明显的缺点,一旦项目比较大,不同 View 的圆角半径,描边宽度和颜色都会是不一样的,这导致的结果就是,会有大量的 xml 文件堆积在我们的项目中,后期维护成本太高。最重要的一点是,这种方式一点也不优雅。
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><corners android:radius="10dp" /><solid android:color="@color/colorAccent" /> </shape>
使用 GradientDrawable
这种方式和写 xml 文件来设置圆角与描边的原理都是一样的,都是通过设置 View 的背景来达到目的。区别在于 GradientDrawable 支持动态设置,这里就不举例子说明 GradientDrawable 的用法了,读者可以网上搜索相关文章,自行尝试。
可以看到,要达到圆角与描边的效果,你都避免不了写 xml 或者大量重复无意义的代码,那么最佳的实现方式是什么呢?最佳的使用方式又是什么?带着这样的困惑,最终我完成了这个库。
我心中的最佳实现
编程讲究面向接口,在我看来,Android 中所有的控件,都应该具有圆角和描边的特性,但是官方控件在设计之初,就没有过多考虑过使用者的感受。实际开发中,圆角和描边的使用范围特别的广泛,我们急需要一个好的解决方案:能够直接在 xml 布局文件中直接设置圆角和描边。这对于开发者来说,特别的友好,就像使用一个个简单的属性一样,而 EasyView 也正满足甚至超越上述方案。
那么 EasyView 这个项目内部是如何实现圆角和描边的呢?答案也很简单,核心原理就是使用 Canvas 的图像混合。对 Canvas 有研究过的的读者在阅读 EasyView 这个项目的源码时,就会轻松很多。
由于本文主要介绍 EasyView 的使用方法,所以源码就不过多的讨论,或许过几天我会专门写一篇文章来向读者解析 EasyView 的源码,并分享一下我在开发这个项目中所遇到的各种坑。EasyView 刚发布不到一天,它还是一个充满朝气的孩子,如果你在使用过程中遇到一些问题,请务必给我提 issue。
满地鸡毛的一年 || 转行Android之路相关推荐
- 会计转行算法之路(一)会计转程序员
会计转行算法之路(一)会计转程序员 回忆起来,要感谢互联网,感谢开源,没有互联网,就没有我的今天,我也就无法走上自己的追梦之路. 每次迷茫的时候,回忆一下初心,我的理想是什么? 通过科学技术,改善人们 ...
- Android 之路30---UI基础控件
导读 1.TextView 2.Button 3.Android各种控件的监听器 4.EditText 5.ImageView及ImageButton 6.Android 中Xml文件引用资源的方法 ...
- 小丑Android之路-安卓的5大布
题记:从今天开始撸博客了,小丑决定先走一步!从基础开始学起,由此开始android之路,其实完全是被毕设逼得(兴趣?别给我提兴趣-.-),废话不多说了. android之路的开始由搭建环境开始,这个网 ...
- 渣硕自学两年转行Android,零经验春招拿美团30w年薪offer,HR说我是头一个!
前言 本人为某末流211工科硕士, 找工作时,经常在网上找资料学习.面经刷题,为回馈朋友们,写下这篇分享贴,也算是对我求学生涯的总结. 说来令人感慨,我的考研之路异常曲折,每次都觉得自己能十拿九稳,结 ...
- Android之路-------Activity的详解
前言 由于接近放假,公司在赶项目所以前段LP比较忙,没什么时间总结和写博客,只是准备睡觉的时候看看书,每天看的不算多,大概10多页左右吧,不过每天坚持如此的话那也是一个庞大的数字. 今天LP的任务完成 ...
- android 长按缩放拖动_十年Android之路面试2000人,面试准备+内部泄露核心题(中高级)...
前言 先介绍一下自己:曾服务于东芝,东方集团,阿里,三一重工,有15年项目开发经验,熟悉汇编,java,c/c++开发语言,对系统底层,web开发和移动端开发有较深入研究.主要涉及应用层mis,erp ...
- 小姜的Android之路
作者:安辉 链接:https://zhuanlan.zhihu.com/p/20810699 1.初级工程师小姜之前完全没接触过Android开发,是个应届生,他的待遇是13k,然后小姜以校招的身份进 ...
- (9)Android之路====Android系统OTA更新
本次介绍Android OTA更新,AOSP官方教程的地址是:https://source.android.google.cn/devices/tech/ota/ 另外可以参考:https://blo ...
- 25岁文科女转行软件测试之路
@TOC谈谈自己转行测试之路 时间很快,眨眼进入测试这行已有三个多月,刚转正不久,还是个测试小白.写这篇文章的目的主要是为了总结,也想记录分享自己转行的历程. 先说下自己的背景吧,2016年大专毕业, ...
最新文章
- VS2005转换工作环境
- 考前自学系列·计算机组成原理·补码定点加减运算和溢出判断,浮点数的加减运算,原码的乘法
- CPU指令集是什么东西
- PAT(乙级)1014
- 简明Vim练级攻略(转载)
- TortoiseSVN与VisualSVN Server搭建SVN版本控制系统【转】
- 智能音箱音效哪个好_华为支浩:音质好是底线,AI基本功扎实让智能音箱不再是“玩具”...
- sublime text3运行python不显示内容_sublime text 运行python无法出结果
- LInux下du, df, top, free, pstack, su, sudo, adduser, password命令
- 基于mint-ui的城市选择3级联动
- [转]可爱的 Python:: 使用 itertools 模块中的组合函数
- 下载 .m3u8视频文件
- 《东周列国志》第二十六回 歌扊扅百里认妻 获陈宝穆公证梦
- java 如何调用大漠插件_java通过jaboc调用dll(大漠插件)遇到的坑,变参指针传参问题...
- android 各个版本安全特性
- HTML5 CSS3初学者指南(2) – 样式化第一个网页
- Easy-Es核心功能深度介绍
- wan端口未连接怎么弄_wan口未连接是什么意思?怎么解决
- oracle函数(in/out)
- mysql in 排序 无数据混乱_mysql in查询 结果乱序 引发的思考
热门文章
- 中华瑰宝之山西人的面食
- 怎么ping IP地址,怎么ping域名
- 《iVX 高仿美团APP制作移动端完整项目》05 美食页商家推荐内容、分类、推荐商家制作
- 三相SVPWM逆变器MATLAB仿真实验,三相SVPWM逆变电路MATLAB仿真.doc
- 某星级酒店警卫队定岗定编项目纪实 ——完善定岗定编,转向人性化管理
- 速学Latex之数学公式编辑
- Markdown 中 LaTex 数学公式命令
- 编写程序,求出几何形状(长方形、正方形、圆形)的周长和面积
- C语言入门教程|| C语言 程序结构|| C语言 基本语法
- ros学习——gmapping建图