我的活动有一个宽度和高度等于6000的画布。当我启动活动时,我的屏幕的左上角坐标是(0,0)所以屏幕'中心约(30,60)。 我想要的是以屏幕中心的坐标(3000,3000)启动活动
任何解决方案?
更新1:
我使用了这个Kotlin代码:
var fondo = Lienzo(this) //fondo is the Canvas View (6000,6000)
val scrollV = ScrollView(this)
val hscrollV = HorizontalScrollView(this)
scrollV.addView(fondo)
hscrollV.addView(scrollV)
layaout1.addView(hscrollV) //layaout1 is a RelativeLayout
答案 0 :(得分:0)
更多的代码会很好,因为我无法看到你在哪里声明位置,但如果你对坐标进行硬编码,我建议不要使用相同的宽度和高度变量,只需将它们放在坐标中/ 2所以如果你的变量是宽度和高度,它应该是这样的,取决于你使用的是:
.setPosition(width/2, height/2);
如果这不是很有用,请提供更多信息或更多代码,以查看您的错误所在:)
答案 1 :(得分:0)
这不是Canvases在Android中的运作方式。你没有声明你想要它有多大,它神奇地缩放到屏幕上。如果你在View的onDraw函数中,传入的Canvas是View的大小,以物理像素为单位。您需要将绘图缩放到它。如果您首先绘制到屏幕外位图然后将其blit到屏幕,那么当您进行blit时,您的工作就是通过矩阵缩放位图。此外,在Android中,坐标系是左上角的0,0。除非它大大减轻你的绘图,否则我建议你不要打它。
但是,您可以在“画布”上使用矩阵变换来更改它。首先,您希望在y中将矩阵缩放6000 / view.getHeight(),在x中缩放6000 / view.getWidth()。然后你想要在x和-3000中将它翻译为-3000。这应该将其缩放到视图并将原点移动到中心。