繁体   English   中英

android studio (java) 中图像上的可点击区域

[英]clickable areas over an image in android studio (java)

我继承了一个具有挑战性目标的 Android Studio 项目。 基本上,这个想法是应用程序显示一个图像,它是建筑物(博物馆)的地图。 当用户点击一个房间时,应用程序会显示该房间的名称,然后他们有其他一些选项来做事。 只要我们将应用程序设计为在单个设备上使用并且不打算在其他任何设备上使用它,这就会很好地工作,这当然很愚蠢。 我已经能够让地图图像对不同尺寸的屏幕做出反应就好了。 我遇到的问题是按钮,它们是在设计过程中绘制在地图的一部分上的。

我使用了 ConstraintLayout,但它没有做我需要的。 一方面,按钮并没有像我期望的那样移动。 例如,当我在平板电脑上运行应用程序时,图像可以很好地调整大小,但按钮都聚集在一个象限内; 他们并没有真正按照我预期的方式调整图像大小。

第二个问题是按钮大小。 即使按钮在较大的屏幕上确实移动了(让我们假设它们确实移动了),按钮本身也不会调整大小。 我已经尝试过 WRAP_CONTENT,但是即使在设计中它的大小也比我想要的大。 将其设置为 0dp 只会生成一个 1 像素的按钮(不知道为什么)。 在响应不同的屏幕尺寸时,是否有某种方法可以使按钮大小与图像增长成比例增长? 换句话说,在布局设计中,我希望能够指定按钮尺寸,以便它们覆盖我想要的地图图像的确切部分,但是当图像增大时,我希望按钮按比例增大,以便它主要与它对应的房间对齐。

我已经阅读了有关使用带有彩色区域的叠加图像作为解决方法的内容,但这在某些房间图像中不切实际,因为可点击区域超过 20 个。

我希望这个解释足够清楚。 在此先感谢您的帮助。

在您的职位上,我建议您查看具有您需要的功能的库,例如AndroidImageMap 如有必要,您可以下载它们,将它们作为模块插入到您的项目中并更改代码。 还要检查这些问题,我认为它会更清楚: 图像的可点击区域如何使图像中的某些区域在android中可点击

这并不难实现,您需要在背景中具有图像的父 ViewGroup 中覆盖onMeasure ,并且知道其original sizeget the scale to the new dimension您想要适合get the scale to the new dimension ,然后multiply all coordinates它:背景图像和所有按钮l,t,r,b以类似的方式 AbsoluteLayout 工作

我自己也更喜欢覆盖onDrawonTouchEvent并在同一组件中绘制/单击按钮,但您可以使其与 android.Button 一起使用

如果您添加代码,我可以提供更多帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM