我有一堆瓷砖组成了单个图像,按请求渲染(根据屏幕上可见的总图像部分)。合成图像比屏幕大得多。每个瓷砖都紧密地与相邻的瓷砖相邻,以创建单个图像的错觉(如果不使用平铺,则单个图像将太大并且会出现OOM错误)。
这些是FrameLayout中的ImageViews,通过top/leftMargin定位。
目标API 2.2 / SDK 8
我正在尝试响应用户事件(按钮按下,捏等)缩放总图像。
显然,setScale直到API 11才可用。我尝试在setWillNotDraw(false)的FrameLayout的onDraw中使用canvas.scale,并且正在调用onDraw,但没有应用缩放(我认为因为布局本身没有任何图形信息?我原以为它也会呈现其子代,但我想除非我在这里做错了,否则不会)。
我想我可以遍历每个瓷砖并独立缩放它,但每次还需要重新定位每个瓷砖。
我必须想到一种方法来缩放父View(ViewGroup?),以便其所有子项也被缩放(就像其他管理GUI的语言一样)。 我错过了什么?
谢谢
这些是FrameLayout中的ImageViews,通过top/leftMargin定位。
目标API 2.2 / SDK 8
我正在尝试响应用户事件(按钮按下,捏等)缩放总图像。
显然,setScale直到API 11才可用。我尝试在setWillNotDraw(false)的FrameLayout的onDraw中使用canvas.scale,并且正在调用onDraw,但没有应用缩放(我认为因为布局本身没有任何图形信息?我原以为它也会呈现其子代,但我想除非我在这里做错了,否则不会)。
我想我可以遍历每个瓷砖并独立缩放它,但每次还需要重新定位每个瓷砖。
我必须想到一种方法来缩放父View(ViewGroup?),以便其所有子项也被缩放(就像其他管理GUI的语言一样)。 我错过了什么?
谢谢
canvas.save();
然后canvas.scale(scale, scale);
,然后进行任何所需的绘制操作,最后执行canvas.restore();
。这样,只有您想要受到影响的绘制操作才会受到变换的影响。例如,如果超类或父类打算在画布上进行进一步的绘制,则不会无意中泄漏比例操作。在 save 和 restore 之间进行的绘制会受到比例的影响,调用 restore 不会对此产生反向作用,只会对之后的绘制产生影响。 - Arild