android - 绘制圆形矩形描边动画
问题描述
目前潜入 Canvas 并绘制自定义视图。onDraw
我刚刚用这段代码(我的方法)创建了一个带边框的圆形矩形:
paint.color = Color.RED
paint.style = Paint.Style.FILL
val cornerRadius = 150f
val strokeWidth = 12f
val rect = RectF(
rootView.left.toFloat() + strokeWidth,
rootView.top.toFloat() + strokeWidth,
rootView.right.toFloat() - strokeWidth,
rootView.bottom.toFloat() - strokeWidth
)
canvas.drawRoundRect(rect, cornerRadius, cornerRadius, paint)
paint.style = Paint.Style.STROKE
paint.color = Color.GREEN
paint.strokeWidth = strokeWidth
canvas.drawRoundRect(rect, cornerRadius, cornerRadius, paint)
我想要实现的是这个边框的动画(蛇形进度)。上次我做了类似的事情是圆形边框动画,其中对象drawArc
中动态变化的角度Animation
做得很完美。但是,这次我不能使用drawArc
,因为需要不同的形状。我附上了一张图片,我指出了我希望动画从哪里开始。我正在考虑创建 Path 对象,但我不知道如何从右下角开始绘制(就在圆形部分之后)。有人用过类似的东西吗?
上次(对于圆圈,如前所述)我做了这样的事情:
canvas.drawArc(rect, START_ANGLE_POINT, angle, false, paint)
和动画类:
private inner class CountdownAnimation(private val roundCountdownView: RoundCountdownView): Animation() {
override fun applyTransformation(interpolatedTime: Float, t: Transformation?) {
roundCountdownView.angle = 360f * interpolatedTime
roundCountdownView.requestLayout()
}
}
我想实现类似的东西,但在互联网上找不到任何有用的东西。已经找到了这个 SO question,但我认为通过位图来解决这个特定问题是过度的。我将不胜感激任何建议。提前致谢!:)
解决方案
推荐阅读
- python - 在 django 中重新组合只返回一个石斑鱼 - 不在重新组合的列表上迭代
- sql-server - 将多个 mdf 文件附加到 SQL Server 实例或提取数据并将其保存到新数据库
- python - django csv 自动导入
- javascript - 获取 angularJS 渲染成 HTML 的对象
- android - 多个 res 文件夹不显示在 android studio 的项目窗口中
- java - 通过网络发送时spring是否对二进制数据进行编码?
- r - Shiny - 在用于 ggplot 的反应性 dplyr 表达式中使用来自 sliderInput 的日期范围
- docker - 为什么我不能暴露 portainer 代理端口 9001?
- mongodb - 从包含 180 亿个文档的 mongo 集合中删除 5 亿个文档
- node.js - 是否可以使用 pg-promise 在同一查询中使用多个数据库?