Android:创建一个可以无失真地缩放的正方形网格

时间:2012-05-17 17:54:14

标签: android android-layout android-canvas

我是Android编程的绝对新手,所以请耐心等待:) 对于我的简单游戏,我在开始时绘制一个由正方形组成的20 x 10网格。 在游戏中,我需要在一些正方形的中心画一个精灵。 (类似于Checkers网格,每个方块的中心都有一个芯片)。我希望这款游戏适用于各种屏幕尺寸和密度。我的方法是在游戏开始时获取画布宽度和高度,计算正方形的边,然后绘制网格并将其保存为位图,然后在游戏中使用该位图。这样我的网格就可以在屏幕上完美缩放。

1)有更好的方法吗?我可以使用网格图像作为位图吗?我担心的是,当图像被缩放到不同的屏幕时,正方形可能会变形为矩形。另外,很难计算每个缩放平方的中心位置(放置精灵)。

2)我还需要在屏幕的某个位置显示标题,分数,等级等。在位图上留下空间然后在位图上写分数,或者为网格创建一个SurfaceView布局以及在其中写下分数,级别等的另一个视图是不是更好?

谢谢!

1 个答案:

答案 0 :(得分:1)

使用Nine-Patch .png图像,首先创建一个代表一个正方形的图像或创建一个代表您的20x10网格的图像 - 您的选择。这样做是为了在mdpi(每英寸中点)屏幕上看起来正确。

然后,您需要为要支持的其他屏幕密度创建预缩放图像。 ldpi的那个将是原始的0.75,hdpi是原始尺寸的1.5倍,xhdpi是原始尺寸的2倍。

然后将图像放在项目的相关可绘制资源目录中 - example / res / drawable-mdpi和/ res / drawable-hdpi等等。

为每个密度赋予图像完全相同的名称,例如square.png或grid.png。只要这些可绘制目录包含同名图像,Android就会找到合适的密度并使用它。

这是一个很长的文档,但你真的需要阅读......

Supporting Multiple Screens

...特别是Alternative Drawables的部分。