android - 面罩在计步器画布上倾斜
问题描述
我已经浏览了这个SpeedoMeter精彩的图书馆,他们在画布上创建了一个自定义速度计。简而言之,他们在画布背景和前景上添加 2 个图像,并在速度值发生变化时移动前景图像的矩形蒙版。
我尝试自定义 ImageLinearGauge 的代码以显示垂直方向的进度,并进行了以下更改:
- 通过将 alpha 值减小到 0 来保持背景图像(仪表)
- 创建由前景图像(填充)组成的移动矩形
- 从搜索栏更改进度值时,步骤 2 中创建的蒙版矩形出现在背景之上,给人一种进步的感觉。
我的查询:
我希望这个前景蒙版图像与粉红色区域上的黑线对齐/重叠。尝试了以下方法:
将蒙版矩形沿其中心旋转-20f,但我可以看到动画中的一些不一致。
rect.set(0, heightPa - (heightPa * getOffsetSpeed()).toInt(), widthPa, heightPa) val mat = Matrix() mat.setRotate(-20f, (widthPa/2).toFloat(),(heightPa - (heightPa * getOffsetSpeed()).toInt()/2).toFloat()); mat.mapRect(rectF) canvas.translate(padding.toFloat(), padding.toFloat()) canvas.drawBitmap(foregroundBitmap, rect, rectF, paint) canvas.translate((-padding).toFloat(), (-padding).toFloat())
尝试旋转画布 - 保存、旋转和绘图和恢复画布,整个粉红色区域正在旋转。
canvas.rotate(-20f);//, (widthPa/2).toFloat(),(heightPa - (heightPa * getOffsetSpeed()).toInt()/2).toFloat()); mat.mapRect(rectF) canvas.translate(padding.toFloat(), padding.toFloat()) canvas.drawBitmap(foregroundBitmap, rect, rectF, paint) canvas.translate((-padding).toFloat(), (-padding).toFloat()) canvas.restore();
有没有其他方法,我可以试试吗?请推荐!!
解决方案
推荐阅读
- flutter - Flutter/Dart Scope 问题 - 返回防止重复文件上传所需的信息?
- c# - 如何在保持默认相等检查的同时向 NUnit 添加自定义相等
- java - 未找到 gradle Jigsaw 模块
- c - 用 C 解决代码强制“1A 剧院广场”
- html - 没有阻塞功能的前台
- python - 为什么pybind11将double转换为int?
- javascript - 导航仅在 javascript 和 css 中打开和关闭动画
- html - Bootstrap4 卡片标题导致图标溢出
- r - Phillips–Perron 检验 - 负值解释
- python - 如何用 Python 从 NHC 网站中提取表格?