android - 具有多个翻译坐标的 Android 大型画布无需触摸即可滚动到特定绘图
问题描述
在 android 中使用具有更大宽度和高度 1000x1000 并包裹在水平滚动视图中的自定义视图。并使用canvas.drawPath(path, paint)绘制路径
代码片段
<HorizontalScrollView
android:id="@+id/horizontalScrollView"
android:layout_width="125dp"
android:layout_height="200dp">
<LinearLayout
android:id="@+id/childLinear"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<CustomCanvas
android:id="@+id/canvas"
android:layout_width="1000dp"
android:layout_height="1000dp" />
</LinearLayout>
</HorizontalScrollView>
在开始绘制路径之前,使用canvas.translate(width / 2f, height / 2f)将原点移动到画布中心。
有一个小的水平滚动视口用于滚动,并且
需要滚动 drawPath 线始终在滚动视图视口中居中。
平移坐标后,起始 x,y 移动到中心,根据条件进行多次平移。
如何计算线的原始 x,y 位置并滚动到该图?
谢谢,帮助赞赏。
解决方案
我自己想通了,只是存储了视图 x,y 和画布翻译 x,y 之间的区别,如下所示。
var offsetX = width/2f
var offsetY = height/2f
translate(width/2f,height/2f)
offsetX+= 100
offsetY+= 100
translate(100,100)
所有画布操作结束,offsetX、offsetY 将拥有视图中最后绘制的坐标。
推荐阅读
- go - 延迟函数执行顺序
- vue.js - 在树枝循环中创建 vue 组件
- matlab - 我的 ifft 的输出仍然有比较大的复数
- python - 如何按时间顺序从文件夹中提取 jpg EXIF 元数据
- node.js - 无法使用 Express 从 MongoDB 中使用 ID 检索数据
- json - 如何使用 python DRF 在 JSON 响应下面创建这个
- python - 我使用的打印语句显示语法错误,请注意我的代码中的错误
- javascript - DiscordAPIError:无法发送带有和嵌入的空消息
- firebase - Firebase 安全规则警告消息
- swift - 可以在 spritekit 中反向播放纹理图集吗?