我正在开发一个应用程序。需要的是,我想创建一个布局,如图所示:
在这里,我采用了相对布局,我将图像作为背景。 图像没有红点(按钮)。
我将红色按钮作为图像按钮放在固定位置。当我在我的galaxy s2上运行时,它看起来很好并且工作正常。
但是当我在LG optimus L3 E400上测试这个布局时。红色按钮不在我设置的位置。
布局代码是:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background" >
<TextView
android:id="@+id/textview_navigationbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/navigationbar"
android:text="@string/string_map"
android:gravity="center"
android:textIsSelectable="false" />
<RelativeLayout
android:layout_below="@+id/textview_navigationbar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="50sp"
android:layout_marginBottom="50sp"
android:background="@drawable/map">
<ImageButton
android:id="@+id/imagebutton_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="100dip"
android:layout_marginLeft="50dip"
android:background="@drawable/button_1" />
<ImageButton
android:id="@+id/imagebutton_2"
android:layout_below="@+id/imagebutton_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dip"
android:layout_marginLeft="6dip"
android:background="@drawable/button_2" />
<ImageButton
android:id="@+id/imagebutton_3"
android:layout_below="@+id/imagebutton_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dip"
android:layout_marginLeft="40dip"
android:background="@drawable/button_3" />
</RelativeLayout>
</RelativeLayout>
在我的LG Optimus L3 E400中,它看起来像:
红色按钮未打开位置。 我不想使用地图视图,因为我不知道,也从未使用它。
请指导我如何摆脱这个问题。如何创建布局以获得最大分辨率和屏幕支持。
答案 0 :(得分:3)
最简单的方法是创建一个自定义视图,用于保存图像(位图)及其顶部的按钮,并使用onDraw
方法绘制按钮,并分析onTouch
上的坐标创建你的触摸事件。
如果您保持图像的纵横比(宽度:高度),您可以使用缩放轻松地将按钮映射到合适的位置。
以下是自定义视图示例列表:
你也可以使用AndEngine
一个2D图形/游戏引擎来安装android,它将为你完成扩展。
在这里查看:official website,examples
答案 1 :(得分:2)
使用Canvas可以做到最好。
或者更简单的方法是编辑图像并在图像中添加这些红点。
你可以使用onTouchListener,在onTouch中你可以获得x和y坐标来完成你的任务
这样的事情: -
public boolean onTouch(View v, MotionEvent event) {
int x = event.getX();
int y = event.getY();
//handle your events on basis of x and y
}
这不是处理它的最好方法。但应该工作。