如何在特定坐标中启动Activity

问题描述 投票:0回答:2

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

任何解决方案

更新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
java android canvas kotlin
2个回答
0
投票

更多的代码会很好,因为我无法看到你在哪里声明位置,但如果你对坐标进行硬编码,我建议不要使用相同的宽度和高度变量,只需将它们放在坐标/ 2中即可。变量是宽度和高度,它应该是这样的,取决于你使用的是什么:

.setPosition(width/2, height/2);

如果这没用,那么请提供更多信息或更多代码,看看你的错误在哪里:)


0
投票

这不是Canvases在Android中的运作方式。你没有声明你想要它有多大,它神奇地缩放到屏幕上。如果你在View的onDraw函数中,传入的Canvas是View的大小,以物理像素为单位。您需要将绘图缩放到它。如果您首先绘制到屏幕外位图然后将其blit到屏幕,那么当您进行blit时,您的工作就是通过矩阵缩放位图。此外,在Android中,坐标系是左上角的0,0。除非它大大减轻你的绘图,我建议你不要打它。

但是,您可以在“画布”上使用矩阵变换来更改它。首先,您需要在y中将矩阵缩放6000 / view.getHeight(),在x中缩放6000 / view.getWidth()。然后你想要在x和-3000中将其翻译为-3000。这应该将其缩放到视图并将原点移动到中心。

© www.soinside.com 2019 - 2024. All rights reserved.