Android动态排列布局

时间:2013-04-24 10:09:03

标签: android

我正在开发一个口琴播放Android应用程序,其中显示口琴乐器,其中一部分是可点击的。

我想要显示仪器的全宽图片(相应调整高度),其中某些部分是可点击的,并且必须根据图片大小动态定位。

问题是我不知道如何使用布局元素来实现这一点,因此它可以在具有不同屏幕尺寸的设备上呈现。使用什么布局?

将仪器显示为ImageView或布局的背景以及如何使其适合?

无论如何将按钮相对于图片的宽度和高度?或者它必须以编程方式完成?而且当孔变大或变小时,它们的宽度和高度必须改变。

我对Android布局没有太多经验,我完全不知道如何做到这一点。

这是仪器的示例图片:

enter image description here

虽然不同设备的图片尺寸会发生变化,但我希望可以点击孔。

任何建议都会对我有所帮助。

1 个答案:

答案 0 :(得分:2)

ImageView有一个内部Matrix,用于控制图像的缩放方式。

我们可以获取此矩阵并将其反转,以便我们可以将缩放图像上的触摸转换为原始图像中的坐标。

float[] xy = new float[]{x, y}; // the xy from the touch event
Matrix inverse = new Matrix();
imageView.getImageMatrix().inverse(inverse);
inverse.mapPoints(xy); // xy now contains the coordinates of the click in the original image

现在您需要做的就是将xy与每个音符位置的一些保存值匹配。