图像上的按钮 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);
}
唯一的缺点是我必须通过尝试和错误来找到确切的百分比。更好的解决方案将为我接受的答案打分!
我正在为我的应用程序开发一项功能,用户可以点击放置在图像背景中的按钮。问题:我需要将按钮放置在图像中的特定位置,这样它看起来就不会移位,并且可以动态地适应不同类型设备的分辨率。这是一个图像示例:
我想把按钮放在这些圆角正方形所在的位置。我如何确定它们在不同设备上看起来也完全一样?我可能需要在每个按钮上方放置一些文本。按钮必须是可点击的,我在按钮上有一些动画,让用户知道按钮何时被点击。非常感谢任何线索。任何可行的解决方案都是可以接受的答案。
部落冲突游戏有类似的东西:
这正是我想要实现的目标!
由于有很多 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);
}
唯一的缺点是我必须通过尝试和错误来找到确切的百分比。更好的解决方案将为我接受的答案打分!