如何在特定坐标中启动Activity

时间:2018-03-04 04:31:54

标签: java android canvas kotlin

我的活动有一个宽度和高度等于6000的画布。当我启动活动时,我的屏幕的左上角坐标是(0,0)所以屏幕'中心约(30,60)。 我想要的是以屏幕中心的坐标(3000,3000)启动活动 just an example

任何解决方案?

更新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

2 个答案:

答案 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。这应该将其缩放到视图并将原点移动到中心。