图像上的按钮 Android

Buttons Over Image Android

我正在为我的应用程序开发一项功能,用户可以点击放置在图像背景中的按钮。问题:我需要将按钮放置在图像中的特定位置,这样它看起来就不会移位,并且可以动态地适应不同类型设备的分辨率。这是一个图像示例:

我想把按钮放在这些圆角正方形所在的位置。我如何确定它们在不同设备上看起来也完全一样?我可能需要在每个按钮上方放置一些文本。按钮必须是可点击的,我在按钮上有一些动画,让用户知道按钮何时被点击。非常感谢任何线索。任何可行的解决方案都是可以接受的答案。

部落冲突游戏有类似的东西:

这正是我想要实现的目标!

由于有很多 Android 设备,实际上您无法在所有设备中准确显示按钮。您可以使用 RelativeLayout 或 LinearLayout 来确保顶部标题位于按钮上方

会有一个 parent 视图,其中有两个 children :一个用于标题,另一个用于所有按钮

如果您使用 RelativeLayout,您可以将按钮放置在图像中的任何位置。

只需确保您使用 DP 测量单位并为每种密度准备尺寸合适的图像。

一个简短的例子:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <Button android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp" />
    <Button android:layout_marginLeft="30dp"
        android:layout_marginTop="30dp" />
    <Button android:layout_marginLeft="10dp"
        android:layout_marginTop="50dp" />
</RelativeLayout>

我通过使用设备的宽度和高度的百分比找到了一个黑客解决方案。它适用于平板电脑和另外 2 种不同屏幕尺寸的设备。

    int w = front_layout.getWidth();
    int h = front_layout.getHeight();

    LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    int top = convert(h * 0.248f);
    int bottom = 0;
    int left = convert(w * 0.186f);
    int right = 0;

    params.setMargins(left, top, right, bottom);
    btn1.setLayoutParams(params);

private int convert(float value) {
    return (int) Math.ceil(value);
}

唯一的缺点是我必须通过尝试和错误来找到确切的百分比。更好的解决方案将为我接受的答案打分!