android 自定义控件之QQ气泡

  本篇文章主要是一个对贝塞尔曲线以及Path的一个应用,仿照QQ做了一个气泡的效果,效果如下:

  

 首先实现这个效果的主要步骤

(1)绘制出QQ气泡静止时候的样式

(2)绘制出当手指拖动时候相连接的样式

(3)超过一定距离气泡炸裂的样式

下面进行详细的讲解,首先第一步我们通过Canvas.drawCircle()以及drawText()方法绘制出气泡和气泡上的文字

  canvas.drawCircle(moveBubbleCenter.x, moveBubbleCenter.y, bubbleRadius, bPaint);
            textPaint.getTextBounds(bubbleText, 0, bubbleText.length(), textRect);
            canvas.drawText(bubbleText, moveBubbleCenter.x - textRect.width() / 2, moveBubbleCenter.y + textRect.height() / 2, textPaint);

这一步较简单就是简单的API的使用。接下来我们进行手指拖动的时候相连接的绘制,通过观察我们可以知道在拖动的时候View主要可以分为三部分,一、原地不动的随距离不断变小的气泡,二、可以移动的大气泡,三、与气泡相连接的弧形。在这三部分中其中大小两个气泡实现方式主要也是通过Canvas.drawCircle()实现的,随着invalidate()的不断调用,更改小圆的绘制的半径和大圆的位置即可,随着手指移动大圆的位置和小圆的半径计算如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值