自定义View系列
本系列会分享本人对自定义View的理解,开源一些自定义框架。
珠穆朗玛小王子
又是一个新的开始
展开
-
ZEditText:自定义密码输入框
前言心情非常沉重,仅以此篇文章纪念我摔碎的手机屏幕偶然看到一篇文章,讲解了自定义密码输入框,直接上图:很多的App都有这样的功能,一般实现这种输入框有以下几种方案:实实在在的写了5个EditText,然后各种焦点切换逻辑,哪怕增多或者减少一个输入框,都要改很多东西,最不推荐的一种方法;隐藏一个EditText,把输入的内容显示在可见的TextView上,相对于第一种做法肯定是高级了很多;继承EditText,修改onDraw绘制边框以及文字;我看到的文章,讲解的是第三种做法,他直接继原创 2020-08-10 17:47:55 · 684 阅读 · 0 评论 -
SlidingScaleTabLayout(3):解决文字动画需要重写PagerAdapter.getItemPosition()的问题
前言自从SlidingScaleTabLayout发布以后,收到的最多的反馈:1、为什么文字切换没有效果?大部分都是PagerAdapter.getItemPosition()的重写问题,虽然demo里有个例子,但是很明显没有达到我当初的预期。重写PagerAdapter.getItemPosition()是一个很不优雅的方案,增多了使用者的开发成本,并且很容易出错,我也一直在找解决方案,终于在上周发了1.2.x版本。正文解决方案来源于我的同事,在之前的开发任务中,我们的app也加入了Tab原创 2020-07-27 11:45:09 · 823 阅读 · 0 评论 -
自定义View:秀一个音乐app的歌词变色TextView
前言从2014年开始从事安卓的工作,就一直关注郭霖大神的博客,慢慢的到微信公众号,再到第三行代码。说来惭愧,我只投过一篇稿,大部分都是处于蹭吃蹭喝的潜水状态,感慨已年近三十,在头发掉光之前再投第二篇稿。我个人比较喜欢做一些有意思的东西,所以这次把最近做的一个小功能跟大家分享一下:仿音乐App歌词播放变色的TextView。正文首先先看一下效果图:...原创 2020-05-21 19:13:19 · 775 阅读 · 1 评论 -
自定义View:可伸展折叠的ExpandTextView
前言最近工作比较多,写了几个小控件跟大家分享一下。首先看图:这种可以显示展开和折叠的TextView非常常见,如果全文要当作一个按钮处理的话,就没办法和文字混排,所以以前就和产品商量折中方案,就没太细细研究这个效果。今天算是补上了。正文其实实现这个效果非常简单,总共就100行代码。首先我们要解决的问题是按钮和文字的混排问题,首选方案肯定是SpannableString,文字的大小,颜色,下划线都可以定制,用它肯定没毛病。剩下的就是字符串的截取,如果是折叠我们就截取字符串的前几行,再减去几个字符给全原创 2020-05-18 17:42:55 · 683 阅读 · 1 评论 -
自定义View:Android 仿 PS 选色板
前言马上就要过年了,估计大家都心里喊着:学不动了,学不动了,所以今天跟大家分享一篇简单轻松的内容:Android仿PS选色板。记得我刚开始学习Android的时候,就一直对PS选色板有一种执着,终于在今年找到了理想的解决方案。首先动图镇楼:正文总结...原创 2020-04-07 15:32:59 · 612 阅读 · 0 评论 -
SlidingScaleTabLayout(2):解决标题文字变化抖动的问题
前言之前我在FlycoTabLayout的基础上写了一个SlidingScaleTabLayout,实现ViewPager切换Tab标题文字大小变化的效果:可能是因为我的项目标题比较短,所以当时没有发现文字抖动的问题,在github开源后,有很多的小伙伴跟我反馈这个问题,由于已经离职加入到新的项目中,一拖再拖到今天,真的非常抱歉。如果你还不了解SlidingScaleTabLayout,可...原创 2020-01-09 10:46:51 · 2230 阅读 · 2 评论 -
仿陌陌选项卡:文字大小变化的SlidingScaleTabLayout
前言不知不觉博客又一个月没有更新了。最近再看flutter,本来想写一篇flutter有关的内容,仔细想想又觉得内容太多,等年后回来再写一个系列吧。年底了,在大家距离过年假期越来越近,工作热情逐渐消退的气氛中,我们聊一点简单的。最近公司发布了新版本的UI,其中一个效果是模仿陌陌的:首先我们简单分析一下效果:被选中的Tab文字大,其他Tab文字小被选中的字体加粗其他的效果就先忽略了...原创 2019-01-17 13:55:39 · 4181 阅读 · 6 评论 -
GridLayoutView:基于GridLayout实现的网格布局,实现宽高自适应
前言前两天突发一个bug,我在ScrollView中嵌套了一个GridView(已经重写了onMeasure方法),GridView的高度是wrap_content,在我更新adapter的时候GridView的高度竟然会时高时低,搞得我一脸懵逼,最终找到原因:@Override public void onMeasure(int widthMeasureSpec, int heigh...原创 2018-12-27 15:27:42 · 8377 阅读 · 0 评论 -
关于《RecyclerView的item添加悬浮层的效果》的问题反馈
前言如果你还没看过自定义View:实现RecyclerView的item添加悬浮层的效果,可以先阅读上一篇。上一周向郭神的微信公众号投稿《RecyclerView的item添加悬浮层的效果》,看到有那么多的朋友阅读和留言评论,心情十分激动,文章已将近过去一周,阅读的高峰期应该已经过去了,这里针对评论反馈的问题,来写一个解答篇。正文ListView版本已发布之前说会做一个List...原创 2018-11-26 17:11:43 · 1118 阅读 · 0 评论 -
自定义View:实现RecyclerView的item添加悬浮层的效果
前言20天后,终于良心发现更新博客了,又到了年底,好多的事情都要收尾,今天分享一个RecyclerView的容器类,帮助大家实现添加Item的浮层的效果。首先看一下效果图:有人会问我:老铁,你实现的这个东西有个卵用?如果你没看明白,我们再看一张非常熟悉的应用场景:正文记得2年前在创业公司的时候,正是短视频火爆的高峰期,公司也做了一款二次元的短视频app,很可惜还没上线就被腰斩了。当时...原创 2018-11-15 13:56:29 · 4363 阅读 · 1 评论 -
图表CanvasChartView(六):发布到jcenter
前言今天我们要把CanvasChartView发布到Jcenter,让更多的开发者方便的使用它,说来惭愧,我还没有发布任何一款开源库,这一次也是现学现卖,把我学习的过程分享给大家。首先感谢前辈们分享了宝贵的经验,下面是主要参考的博文链接:Android 快速发布开源项目到jcenter多个语言项目发布JCenter仓库的小结点击打开链接正文首先打开jcenter官网:https://bintray...原创 2018-06-19 18:56:11 · 346 阅读 · 0 评论 -
图表CanvasChartView(五):扩展CanvasChartView
前言经过前几篇的努力,我们的CanvasChartView已经渐渐变得很健壮,今天我们扩展几个小功能,并且增加自定义属性,为发布CanvasChartView,做最后的收尾工作。要添加的功能列表:自定义属性,线条的颜色,粗细等等增加数据点之间的连线样式为曲线增加只显示x,y均为正数的情况增加显示刻度值正文首先一张图了解一下今天的任务:数据点之间的连线增加曲线样式直接贴出关键代码: /** ...原创 2018-06-19 12:17:42 · 436 阅读 · 0 评论 -
图表CanvasChartView(四):基于方案二的优化
前言之前我们已经讨论并实现了两种实现滑动的方案,最终第二种实现了我们想要的效果,今天我们对方案二优化一下,让我们的CanvasChartView体验起来更屌。都有哪些地方需要优化呢:首先肯定是Fling的效果,惯性滑动是必备的优化绘制过程中Path对象创建多次的问题,这会造成内存的浪费文字的测量等计算,滑动的时候还要绘制之前的数据的文字,可以缓存一部分经常使用的文字宽高整理代码的逻辑,优化部分代码...原创 2018-06-06 17:39:42 · 391 阅读 · 0 评论 -
图表CanvasChartView(三):手势滑动方案二
前言之前我们使用了第一种滑动方案,虽然滑动的效果有了,但是和我们期望的还是有很大差距,例如滑动的时候,坐标轴跟着滑动了,导致我们向右滑动一段距离之后,就看到不坐标轴了。但是我们也找到了解决办法:不移动View的scrollX,而是对画布Canvas进行偏移。今天我们就来实现这种方案。正文整体改造的思路:1、手动记录偏移值,相当于之前的ScrollX2、computeScroll只用来计算新的偏移值...原创 2018-05-29 18:47:57 · 603 阅读 · 0 评论 -
图表CanvasChartView(二):手势滑动方案一
前言之前我们已经把canvas的绘制部分搞定了,现在最关键的就剩下手势滑动了,想到手势滑动,我第一个想到的是Scroller,什么也别说了,赶紧搞起来。正文因为手势滑动的功能和canvas没有什么直接的联系,为了防止我手贱误改了之前的功能,所以我们新建一个基类:BaseScrollerView,专门实现和手势移动有关的功能,然后让CanvasChart继承BaseScrollerView就完美了。...原创 2018-05-08 15:41:54 · 1096 阅读 · 0 评论 -
图表CanvasChartView(一):Canvas绘制
前言愉快的五一假期说没就没,又到了上班的日子,今天不是特别忙,赶紧写点什么。前一阵都在看源码了,看的头昏脑胀,突然想起来去年的时候,以前的同事问我对于类似天气这种app,那种温度图表是怎么做的,当时很忙,就直接让他找开源库用一下,今天就来自己写一个。正文说道比较火的天气app,我想到的就是墨迹天气了,先贴张图:我们研究的主题就是这中间的这两条线,再最终的效果上,我们会慢慢向他靠近。首先我们来简单分...原创 2018-05-02 18:59:38 · 1333 阅读 · 0 评论 -
Android动画篇(四):最终效果篇CircleProgressSuperBar
前言今天终于有时间把最后的成果分享给大家了,为了提高一下博客的逼格,我也找了一个专门做原型、导图的在线网站:processon(www.processon.com),这个工具真的很棒,也很方便,这里给他点个赞。CircleProgressSuperBar为了完成最终的效果,我也是踩了一些坑,今天把我总结的最清晰的思路分享给大家,首先我们回顾一下我们的效果图:正文首先我们来分析一下,CirclePro原创 2017-07-18 16:05:19 · 1578 阅读 · 0 评论 -
Android动画篇(三):canvas.clipRect 纠错篇
前言之前说要整合一下我们做出来的效果,我已经弄完了,首先别的不说,工程量比我预想的要多的多,而且踩了不少的坑,尤其是canvas.clipRect的使用上出现了一点问题,所以想趁着下班前简单的写一下对这个api新的理解和使用心得。正文拿出之前的代码: @Override protected void onDraw(Canvas canvas) { if (mRectF ==原创 2017-07-13 18:53:03 · 1810 阅读 · 0 评论 -
Android动画篇(二):颜色和形状改变的ChangeShapeAndColorButton
前言上一篇我们聊了聊如何实现圆形的进度条,已经了解了ValueAnimator的用法,其实我最终的要实现的效果是这样的: 这是github上开源的一款框架,效果很棒,大家可以参考学习: https://github.com/dmytrodanylyk/circular-progress-button从动图的效果上看,圆形的进度条这个难关我们已经攻克了,今天我们来看看如果改变形状、颜色、和大小。正原创 2017-07-11 17:23:33 · 2709 阅读 · 1 评论 -
Android动画篇(一):圆形进度条CircleProgressBar
前言最近看框架和源码比较多,很久没有写动画了,相信很多的朋友都对动画感兴趣,我也不例外,毕竟做前端还是要靠动画特效吃饭的,并且比写功能模块更有成就感。今天我们就来个稍微简单一点的CircleProgressBar热个身。首先需要对ValueAnimator动画,还有Canvas,Paint画图的相关的类和API都有一定的了解,所以这部分还比较薄弱的朋友可以先去学习一下基础知识,否则可能会有些吃力。正原创 2017-07-07 19:03:02 · 8507 阅读 · 0 评论 -
自定义九宫格解锁控件
前言九宫格手势解锁已经是非常常见的手机解锁方式,支付宝等一些软件也都曾经使用过,感觉还是很高大上的。在github已经有很好的开源控件,大家可以去自己搜索,我自己写了一个自定义的九宫格控件,作为练习作业。效果图我不会做动图,就凑合看吧…… 先贴自定义属性代码 <!-- 九宫格解锁--> <declare-styleable name="DrawPointLineUnlockView">原创 2016-11-18 20:34:22 · 815 阅读 · 0 评论