如何在特定坐标中启动Activity

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在特定坐标中启动Activity相关的知识,希望对你有一定的参考价值。

我的活动有一个宽度和高度等于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
答案

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

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

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

另一答案

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

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

以上是关于如何在特定坐标中启动Activity的主要内容,如果未能解决你的问题,请参考以下文章

android在特定片段中隐藏工具栏

如何在选项卡 Activity 的片段中使用 onCreateOptionsMenu? (夏洛克动作条)

选择片段 A 时如何在 ViewPager 上不一起启动所有片段

在片段中启动 Activity [重复]

如何从活动意图到特定片段?

在 Activity 内部,如何暂停 for 循环以调用片段,然后在按钮单击片段后恢复循环以重新开始