1

我的问题最初可能会让人很困惑,所以请耐心等待。我将从上下文的一些前言开始:

前言:

我有一个应用程序,它将使用数组从地图中进行路径查找。

^那很模糊:会有一个字符数组,代表墙壁、楼梯等,并且会有一个找到最佳路径的函数。

我想在 android 屏幕上显示路径。

将有由数组函数生成的字符代表生成的路径(可能是“x”或其他东西)。


好的,说得更清楚一点:数组中会有一个“x”的“路径”。这些“x”代表将要显示在 Android 屏幕上的路径。


我的实际问题:

如何将数组中的“x”转换为在屏幕上显示一行?我的想法是使用 for 循环/if 语句来检查是否存在“x”,如果存在,则在表示实际屏幕的第二个数组中显示一个小红点/线。

我试图找到这个,但是输入谷歌是一件很尴尬的事情,所以我一无所有地完成了我的研究。

是否有某种内置的 android 功能可以让您将不同的颜色分配给不同的坐标?


这就是我想出现在屏幕上的那种。如果这是应用程序,则蓝色将由第一个数组中的“x”表示。

4

1 回答 1

1

有几种方法可以实现将坐标系映射到描述路径的矩阵的这种效果。

根据数组的大小和更新调用的频率(听起来路径查找运行一次,之后进行一次渲染),循环遍历可能不会太昂贵。我个人会做的是开始研究如何在画布上绘图,获取屏幕大小,并相应地调整边界。

以像素为单位获取屏幕尺寸- 如何获取屏幕尺寸 http://danielnadeau.blogspot.com/2012/01/android-canvas-beginners-tutorial.html - 一个不错的画布教程

一旦您可以绘制到缩放的画布,只需运行一个看起来像这样的循环:

float scale_x = screen_width/columns;
float scale_y = screen_height/rows; //pixels per grid square
for( int x = 0; x < columns; x++)
for( int y = 0; y < rows; y++)
if( data[x][y] == 'x') drawRect(x*scale_x, y*scale_y, scale_x,scale_y) //if something found, draw a colored square
于 2013-03-19T01:00:04.967 回答