【问题标题】:Dynamically place buttons where there is a circle on background image动态地将按钮放置在背景图像上有圆圈的位置
【发布时间】:2013-08-29 06:41:44
【问题描述】:

我是新的 android 开发人员,正在尝试使用 eclipse IDE 在 android 中开发游戏。哪个有这样的游戏板

我只想把按钮放在有圆圈的地方。

我使用相对布局对 xml 中的按钮位置进行了硬编码,但由于屏幕大小不同,此解决方案不起作用

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/AbsoluteLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bani_qatar_board" >

<Button
    android:id="@+id/btn_a8"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignLeft="@+id/btn_a1"
    android:layout_below="@+id/btn_a1"
    android:layout_marginTop="82dp"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_a7"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignLeft="@+id/btn_a8"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="7dp"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_b2"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_below="@+id/btn_a1"
    android:layout_marginLeft="51dp"
    android:layout_marginTop="14dp"
    android:layout_toRightOf="@+id/btn_a1"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_b1"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBottom="@+id/btn_a8"
    android:layout_alignLeft="@+id/btn_b2"
    android:layout_marginBottom="2dp"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_b8"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_above="@+id/btn_a7"
    android:layout_alignLeft="@+id/btn_b1"
    android:layout_marginBottom="11dp"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_c2"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_below="@+id/btn_b2"
    android:layout_marginLeft="52dp"
    android:layout_marginTop="5dp"
    android:layout_toRightOf="@+id/btn_b8"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_c1"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBottom="@+id/btn_a8"
    android:layout_alignLeft="@+id/btn_c2"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_c8"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_above="@+id/btn_b8"
    android:layout_alignLeft="@+id/btn_c1"
    android:layout_marginBottom="7dp"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_b3"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBottom="@+id/btn_b2"
    android:layout_alignLeft="@+id/btn_a2"
    android:layout_marginBottom="4dp"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_c3"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBaseline="@+id/btn_c2"
    android:layout_alignBottom="@+id/btn_c2"
    android:layout_alignLeft="@+id/btn_b3"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_c7"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBaseline="@+id/btn_c8"
    android:layout_alignBottom="@+id/btn_c8"
    android:layout_alignLeft="@+id/btn_c3"
    android:background="@drawable/blank"
    android:focusable="true" />

<Button
    android:id="@+id/btn_b7"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBottom="@+id/btn_b8"
    android:layout_alignLeft="@+id/btn_c7"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_a6"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBaseline="@+id/btn_a7"
    android:layout_alignBottom="@+id/btn_a7"
    android:layout_alignLeft="@+id/btn_b7"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_c4"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBaseline="@+id/btn_c3"
    android:layout_alignBottom="@+id/btn_c3"
    android:layout_marginLeft="95dp"
    android:layout_toRightOf="@+id/btn_c3"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_c5"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBaseline="@+id/btn_c1"
    android:layout_alignBottom="@+id/btn_c1"
    android:layout_alignLeft="@+id/btn_c4"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_c6"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBaseline="@+id/btn_c7"
    android:layout_alignBottom="@+id/btn_c7"
    android:layout_alignLeft="@+id/btn_c5"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_b4"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBaseline="@+id/btn_b3"
    android:layout_alignBottom="@+id/btn_b3"
    android:layout_marginLeft="50dp"
    android:layout_toRightOf="@+id/btn_c4"
    android:background="@drawable/blank"
    android:paddingBottom="9dp" />

<Button
    android:id="@+id/btn_b5"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBaseline="@+id/btn_c5"
    android:layout_alignBottom="@+id/btn_c5"
    android:layout_alignLeft="@+id/btn_b4"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_b6"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBaseline="@+id/btn_b7"
    android:layout_alignBottom="@+id/btn_b7"
    android:layout_alignLeft="@+id/btn_b5"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_a3"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_above="@+id/btn_b2"
    android:layout_alignParentRight="true"
    android:layout_marginRight="13dp"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_a4"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBaseline="@+id/btn_b5"
    android:layout_alignBottom="@+id/btn_b5"
    android:layout_alignLeft="@+id/btn_a3"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_a5"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignBaseline="@+id/btn_a6"
    android:layout_alignBottom="@+id/btn_a6"
    android:layout_alignLeft="@+id/btn_a4"
    android:background="@drawable/blank" />

<Button
    android:id="@+id/btn_a2"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_above="@+id/btn_b2"
    android:layout_marginLeft="86dp"
    android:layout_toRightOf="@+id/btn_c2"
    android:background="@drawable/blank" />

<TextView
    android:id="@+id/infoDisplay"
    android:layout_width="175dp"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/btn_b1"
    android:layout_toLeftOf="@+id/btn_c5"
    android:gravity="center"
    android:text="@string/text"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="#000000" />

<Button
    android:id="@+id/btn_a1"
    android:layout_width="27dp"
    android:layout_height="25dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="12dp"
    android:layout_marginTop="63dp"
    android:background="@drawable/blank" />

</RelativeLayout>`

输出是

问题:您可以清楚地看到按钮没有显示在圆圈上。

注意:我现在不想为此使用任何游戏引擎。我想在eclipse中开发这个游戏。

关于如何将按钮准确地放在圆圈上的任何建议。提前致谢。

【问题讨论】:

  • 如果你不知道圆圈的确切位置,你可能需要一些模式识别。
  • 他知道他们在哪里。
  • 是的,你在写我知道图片上的圆圈位置但是代码方面我不知道圆圈在哪里。

标签: android xml android-layout android-button


【解决方案1】:

您还可以硬编码 relativeLayout 的 layout_height 和 layout_width。它的背景图片将自动调整为该布局大小。然后应该适用于每种显示尺寸。

【讨论】:

  • 感谢您的建议,让我检查一下这个解决方案是否有效
  • 是的,它可以工作,按钮位置没有改变,但现在问题是板尺寸高度和宽度是硬编码的,所以布局其他部分显示黑色我想在全屏上显示板,请看图片。现在我该怎么办提前谢谢link
  • 那么你应该以编程方式进行。再次将您的布局与 fill_parent 一起使用。然后在代码中,创建按钮并根据 screen_sizes 将它们设置为正确的位置。看看这里:stackoverflow.com/questions/1016896/…
  • 让我们假设我确实得到了 screen_width 和 screen_height 那么我将如何计算圆圈的位置?。
  • 它们按某种顺序排列...您必须反复试验。例如,前 3 行位于 (screenSizeX/3, screenSizeY/3), (2*screenSizeX/3, screenSizeY/3), (screenSizeX, screenSizeY/3) ,然后是其他 2 行。但如果不合适,您必须重新尝试
【解决方案2】:

如果您在两个维度上拉伸背景图像而不保留 AR,那么您可以使用 LinearLayout 并通过将 layout_weight 分配给按钮和不可见的填充视图来排列按钮。
但这可能会让我很乏味,在代码中计算所有位置可能会更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 2013-11-28
    • 2016-12-15
    • 2013-10-07
    • 2014-01-13
    • 1970-01-01
    • 2015-06-15
    相关资源
    最近更新 更多