Android View
Caroline_cheng
Android Camera 工程师
展开
-
自定义view系列---验证码CodeView实现
本系列到此,关于自定义view的大部分知识点已经讲述完了。本篇是此系列的最后一篇,以验证码 的实现来将前面的内容串在一起展现出来。验证码是有随机生成的若干个数字 和 若干条干扰线组成,提供的功能主要有:刷新验证吗改变验证码个数改变干扰线个数改变验证码字体大小改变验证码字体颜色获取当前验证码效果图如下:CodeView需要添加4个自定义属性:验证码个数,干扰线条数,验证码字体大小,验证码字体颜色。1,attrs.xml中添加属性如下:<declare-styleable na原创 2020-08-20 15:51:39 · 706 阅读 · 1 评论 -
自定义view系列---自定义属性
我们在自定义view的时候,经常会需要自定义属性。比如上篇讲的继承View实现TextView,因为是直接继承View的,所以该自定义view就没有android:text属性了,但是对于一个TextView来说,text属性又是十分重要的,否则在使用该自定义的TextView时,就不能为该View设置text值了,那这个view还能叫做TextView吗?要解决这个问题,就需要用到view的自定义属性,这个知识点有比较固定的用法,同时比较容易理解。我们现在就给上面的MyTextView来添加一个tex原创 2020-08-20 14:53:48 · 647 阅读 · 0 评论 -
自定义view系列---继承view实现TextView效果
自定义view系列,前面讲述的案例大部分是通过View的onDraw()来绘制view外观,没有考虑view的测量部分。本篇我们就来重点关注下view的测量。自定义view是要关注三个方法的重写。1,构造方法// 在代码中创建组件时使用 Button btnOK = new Button(this)public FirstView(Context context)// 在layout布局文件中使用public FirstView(Context context, AttributeSet att原创 2020-08-20 14:06:44 · 598 阅读 · 0 评论 -
自定义view系列---刮刮乐的实现
本篇我们将通过另一个案例–刮刮乐 的实现来加深我们上节讲述的位图运算的理解。我们先来分析下刮刮乐的实现思路:从技术实现上来说,刮刮乐有两个图层,一个是不会变化的中奖信息图层,一个是蒙上了一层灰色的图层。当用户手指在屏幕上涂抹时,需要将灰色抹掉,露出下面的中奖信息。所以对于中奖信息来说,应该采用更简单的实现,可以在在图片上写上中奖信息后作为view的背景,当手指在屏幕上涂抹时就不需要考虑中奖信息的重绘了。然后在创建一个Bitmap对象,开始时是灰色的,手指在屏幕上移动时绘制线条,将线条与灰色做 Mode.原创 2020-08-19 20:36:36 · 474 阅读 · 0 评论 -
自定义view系列---通过位图运算实现圆形头像
本篇要讲解一个比较难理解的部分:位图运算。相信大家原创 2020-08-19 19:22:41 · 153 阅读 · 0 评论 -
自定义view系列---位图渐变的使用
位图渐变其实就是在绘制的图形中将指定的位图作为背景,如果图形比位图小,则通过渐变模式进行平铺。平铺有3种模式:TileMode.CLAMP 模式不平铺TileMode.REPEAT 模式表示平铺TileMode.MIRROR模式也表示平铺,但是交错的位图是彼此的镜像,方向相反。可以同时指定水平和垂直两个方向的渐变模式。@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //加载原创 2020-08-19 16:53:51 · 350 阅读 · 0 评论 -
自定义view系列---手指绘制矩形
本篇来实现一个 手指在屏幕上滑动,绘制矩形的效果,即以手指DOWN事件的坐标为起点,以手指UP事件的坐标为终点,手指抬起后绘制出这个矩形。如果你看过这个系列前面两篇文章:自定义view系列—手指绘制曲线,应该很快就有一个大致的思路了。没错,还是那个思路,监听手指的滑动事件,通过DOWN 和 UP 事件确定矩形的左上角和右下角,即可定位这个矩形了。这里有一点需要注意:常规手指从屏幕左上 向 右下 滑动,那么DOWN就是矩形左上角点坐标,UP就是矩形右下角坐标。但是如果用户是从屏幕右下 向 左上 滑动呢,原创 2020-08-19 15:49:01 · 579 阅读 · 0 评论 -
自定义view系列---手指绘制曲线2
我们在上一篇:自定义view系列—手指绘制曲线 中讲解了如何通过自定义view实现将手指在屏幕上的滑动路径绘制出来,关键点就是缓存Bitmap。本篇我们来讲解下这个需求的另外一种实现方式,通过Path来保存绘制的数据。知道Vector的同学对path一定不陌生,我们可以通过一定的规则来绘制一个图标的路径,然后在使用该图标时,任意缩放该图标都不会有失真模糊的现象,path就是这么神奇。我们这里的Path原理也是一样的,就是可以给这个对象添加绘制路径,这样我们就可以将绘制路径保存在Path对象中,而不用通过原创 2020-08-19 15:21:01 · 227 阅读 · 0 评论 -
自定义view系列---手指绘制曲线
需求:实现手指在屏幕上滑动,绘制出手指的滑动轨迹,并提供一键清除轨迹的功能。手指在屏幕上滑动,view会收到一系列的滑动事件 :DOWN —> MOVE —> … —> MOVE —> UP/CANCEL。我们知道曲线是由若干小段的直线组成的,手指在屏幕上随意滑动,肯定是曲线的路径,但是这曲线是由若干MOVE事件上报的滑动点组成的。因此,要实现这个需求,就需要监听手指的滑动事件,系统每次上报滑动事件时,我们就绘制一段直线。我们自定义一个view叫DrawLineByFinger原创 2020-08-19 13:56:44 · 337 阅读 · 0 评论 -
自定义view系列---小球滚动案例
最近读了 李赞红 的Android自定义组件开发详解,对自定义View和ViewGroup有了更深的理解,现将书中的案例及自己的理解整理出来,进一步加深理解并方便以后回顾,毕竟 好记性不如烂笔头。先简单介绍下作者,李赞红,在湖南株洲从事IT教育行业,说实话,我刚开始看到这个介绍,还奇怪了,一个培训机构的老师,还能写书(为自己的偏见感到羞愧。。。),进一步了解发现,正是因为作者身在教育行业,才更能体会到程序员们困惑和需求,也更了解这个行业存在的问题,很多程序员工作一段时间后就遇到了职业瓶颈,涉及底层原理很难原创 2020-08-17 18:15:02 · 433 阅读 · 0 评论 -
自定义view系列---Canvas坐标轴变化
如果我们需要绘制一个时钟,并且时钟有60个刻度,那么要怎么办?如果不知道通过变化坐标轴的方法,那么可能就要傻傻的canvas.drawLine…60次了。。。我们知道view的坐标轴是在view的左上角,向右为x正,向下为y正。我们在不改变坐标轴的情况下绘制内容,就是相对的这个左上角的点了。但是Canvas对象提供了位移、缩放、旋转等API来修改view的坐标原点。比如我们要绘制一组同心矩形。那我们就可以使用Canvas的缩放坐标轴来实现了。for (int i = 0; i< 10 ;i++)原创 2020-08-17 19:40:21 · 391 阅读 · 0 评论