Android和svg的平面图

时间:2015-03-20 19:42:39

标签: javascript android html5 svg android-canvas

我想在我的Android应用中显示一个简单的自定义平面图,类似于下图:

image1

目标是为我当前所在的区域着色(我在我的应用中获得此信息):

image2

如果这些区域中的每一个都可以点击以设置onclicklistener或类似物,并且能够像图像一样放大/缩小,那将是完美的。

主要限制是我希望一切都是本地的,也就是说,没有连接到互联网服务来导入图像。

我已经尝试加载包含svg平面图的html,但是当我从一个区域移动到另一个区域时,我不知道如何从Android更改区域的颜色。

我该如何处理?

3 个答案:

答案 0 :(得分:0)

您可以在WebView中创建一个简单的html页面并附加SVG并添加Javascript,因此当点击svg中的某些元素来调用javascript函数时。然后,如果您的应用程序是本机应用程序或只是在html中处理它,您可以将事件发送到Android应用程序中的本机Java代码。

我相信这篇文章特别针对您的问题Interfacing with SVG

答案 1 :(得分:0)

你的地板看起来很像网格布局!!你为什么要做这么多工作来实现非常简单的事情?您需要做的是动态创建网格布局,然后将其他视图放入其中

答案 2 :(得分:-1)

这是一个非常开放的问题。这也不简单。

您将不得不进行大量的低级编码才能实现您的概述。无论如何,你将不得不找到一种方法将SVG变成可以与之交互的东西。这里的限制因素是您正在使用SVG - 这不是数据格式,而是矢量。除非你将SVG解析为更适用于UI的东西,或者能够以不同的格式(某种形式的解析JSON?)获取这些数据,否则你只是显示一个图像。

现在假设您确实找到了一种更方便地获取此数据的方法,您可以沿着自定义视图的路径并覆盖draw()。然后你可以在你想要的地方画出你的房间和位置,添加一个TouchListener,添加一个绘图状态机等。除了View.draw(),你可以使用GLSurfaceView并用硬件语言绘图。