Android开源BezierView:仿QQ未读消息99+条的红色气泡



Android开源BezierView:仿QQ未读消息99+条的红色气泡

在移动版的QQ中,如果用户的QQ消息超过99条,会有这样的消息提示气泡(包含拖动动画):


Android第三方开源的BezierView实现了上述QQ的99+条未读消息气泡显示。
Android开源BezierView在github上的项目主页是:https://github.com/chenupt/BezierDemo
使用Android BezierView只需要写一个布局即可:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <github.chenupt.bezier.BezierView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent" />

</LinearLayout>

代码运行结果如上图所示。


剩下原作者已经写好,如果在项目开发中需要使用BezierView,直接将github上的项目改变成一个lib然后导入到自己的项目直接使用即可。

Android 中,可以通过继承 View 或 SurfaceView 实现画贝塞尔曲线。 一般来说,需要使用 Path 对象来绘制贝塞尔曲线。Path 对象可以通过 moveTo、lineTo、quadTo、cubicTo 等方法来绘制线、二次贝塞尔曲线和三次贝塞尔曲线。其中,quadTo 和 cubicTo 方法用于绘制贝塞尔曲线。 下面是一个简单的例子,演示了如何在自定义视图中绘制一二次贝塞尔曲线: ```java public class BezierView extends View { private Paint mPaint; private Path mPath; public BezierView(Context context) { this(context, null); } public BezierView(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { mPaint = new Paint(); mPaint.setColor(Color.RED); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(5); mPath = new Path(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int startX = 100; int startY = getHeight() / 2; int endX = getWidth() - 100; int endY = getHeight() / 2; int controlX = getWidth() / 2; int controlY = getHeight() / 2 - 200; mPath.reset(); mPath.moveTo(startX, startY); mPath.quadTo(controlX, controlY, endX, endY); canvas.drawPath(mPath, mPaint); } } ``` 在这个例子中,我们绘制了一二次贝塞尔曲线,起点为 `(startX, startY)`,终点为 `(endX, endY)`,控制点为 `(controlX, controlY)`。我们使用 `mPath.quadTo(controlX, controlY, endX, endY)` 方法来绘制曲线,并且在 `onDraw` 方法中调用 `canvas.drawPath(mPath, mPaint)` 来绘制出来。 当然,这只是一个非常简单的例子,实际使用中可能需要更多的控制点和更复杂的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangphil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值