我想做一個10×10的跳棋游戲,棋盤是傾斜的,是一個3D的位置。當40個棋子在真實的設備上排列在棋盤上時,它保持在正確的方格中。當我在不同的設備上測驗相同的代碼時,它從他們的方格中移動。我怎樣才能使跳棋的棋子在所有設備上都不偏離方格。
<?xml version="1.0" encoding="utf-8"? >
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"/span>
xmlns:app="http://schemas.android.com/apk/res-auto"。
xmlns:tools="http://schemas.android.com/tools"。
android:layout_width="match_parent"。
android:layout_height="match_parent"。
android:background="@drawable/bkkg"。
tools:context=".New_GameActivity"/span>>
<ImageView。
android:id="@ id/imageView2"。
android:layout_width="wrap_content"
android:layout_height="wrap_content"。
app:layout_constraintBottom_toBottomOf="father"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="father"
app:layout_constraintTop_toTopOf="parent"。
app:srcCompat="@drawable/buard" />
<ImageView
android:id="@ id/square1"
android:layout_width="0dp"。
android:layout_height="0dp"/span>
android:layout_marginStart="116dp"。
android:layout_weight="1"。
app:layout_constraintBottom_toBottomOf="father"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.095"/span>
app:layout_constraintStart_toStartOf="father"
app:layout_constraintTop_toTopOf="parent"。
app:layout_constraintVertical_bias="0.930"。
app:layout_constraintHeight_percent="0.09"。
app:layout_constraintWidth_percent="0.05"。
app:srcCompat="@drawable/square"/span> />
<ImageView
android:id="@ id/square2"
android:layout_width="0dp"。
android:layout_height="0dp"/span>
android:layout_marginStart="116dp"。
app:layout_constraintBottom_toBottomOf="father"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.270"/span>
app:layout_constraintStart_toStartOf="father"/span>
app:layout_constraintTop_toTopOf="parent"。
app:layout_constraintVertical_bias="0.930"。
app:layout_constraintHeight_percent="0.09"。
app:layout_constraintWidth_percent="0.05"。
app:srcCompat="@drawable/square"/span> />
<ImageView
android:id="@ id/square3"
android:layout_width="0dp"。
android:layout_height="0dp"/span>
android:layout_marginStart="116dp"。
app:layout_constraintBottom_toBottomOf="father"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.440"/span>
app:layout_constraintStart_toStartOf="father"/span>
app:layout_constraintTop_toTopOf="parent"。
app:layout_constraintVertical_bias="0.930"。
app:layout_constraintHeight_percent="0.09"。
app:layout_constraintWidth_percent="0.05"。
app:srcCompat="@drawable/square"/span> />
<ImageView
android:id="@ id/square4"
android:layout_width="0dp"。
android:layout_height="0dp"/span>
android:layout_marginStart="116dp"。
app:layout_constraintBottom_toBottomOf="father"
app:layout_constraintEnd_toEndOf="parent"。
app:layout_constraintHeight_percent="0.09"。
app:layout_constraintHorizontal_bias="0.612"。
app:layout_constraintStart_toStartOf="father"
app:layout_constraintTop_toTopOf="parent"。
app:layout_constraintVertical_bias="0.93"。
app:layout_constraintWidth_percent="0.05"。
app:srcCompat="@drawable/square"/span> />
<ImageView
android:id="@ id/square5"
android:layout_width="0dp"。
android:layout_height="0dp"/span>
app:layout_constraintBottom_toBottomOf="father"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.09"。
app:layout_constraintHorizontal_bias="0.825"。
app:layout_constraintStart_toStartOf="father"
app:layout_constraintTop_toTopOf="parent"。
app:layout_constraintVertical_bias="0.93"。
app:layout_constraintWidth_percent="0.05"。
app:srcCompat="@drawable/square"/span> />
<ImageView
android:id="@ id/square6"
android:layout_width="0dp"。
android:layout_height="0dp"/span>
android:layout_marginStart="116dp"。
app:layout_constraintBottom_toBottomOf="father"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.09"。
app:layout_constraintHorizontal_bias="0.020"。
app:layout_constraintStart_toStartOf="father"/span>
app:layout_constraintTop_toTopOf="parent"。
app:layout_constraintVertical_bias="0.810"/span>
app:layout_constraintWidth_percent="0.05"。
app:srcCompat="@drawable/square"/span> />
<ImageView
android:id="@ id/square7"
android:layout_width="0dp"。
android:layout_height="0dp"/span>
android:layout_marginStart="116dp"。
app:layout_constraintBottom_toBottomOf="father"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.09"。
app:layout_constraintHorizontal_bias="0.188"/span>
app:layout_constraintStart_toStartOf="father"
app:layout_constraintTop_toTopOf="parent"。
app:layout_constraintVertical_bias="0.812"/span>
app:layout_constraintWidth_percent="0.05"。
app:srcCompat="@drawable/square"/span> />
<ImageView
android:id="@ id/square8"
android:layout_width="0dp"。
android:layout_height="0dp"/span>
android:layout_marginStart="116dp"。
app:layout_constraintBottom_toBottomOf="father"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.09"。
app:layout_constraintHorizontal_bias="0.358"/span>
app:layout_constraintStart_toStartOf="father"
app:layout_constraintTop_toTopOf="parent"。
app:layout_constraintVertical_bias="0.812"/span>
app:layout_constraintWidth_percent="0.05"。
app:srcCompat="@drawable/square"/span> />
<ImageView
android:id="@ id/square9"
android:layout_width="0dp"。
android:layout_height="0dp"/span>
android:layout_marginStart="116dp"。
app:layout_constraintBottom_toBottomOf="father"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.09"。
app:layout_constraintHorizontal_bias="0.527"。
app:layout_constraintStart_toStartOf="father"
app:layout_constraintTop_toTopOf="parent"。
app:layout_constraintVertical_bias="0.812"/span>
app:layout_constraintWidth_percent="0.05"。
app:srcCompat="@drawable/square"/span> />
<ImageView
android:id="@ id/square10"
android:layout_width="0dp"。
android:layout_height="0dp"/span>
android:layout_marginStart="116dp"。
app:layout_constraintBottom_toBottomOf="father"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.09"。
app:layout_constraintHorizontal_bias="0.690"。
app:layout_constraintStart_toStartOf="father"
app:layout_constraintTop_toTopOf="parent"。
app:layout_constraintVertical_bias="0.812"。
app:layout_constraintWidth_percent="0.05"。
app:srcCompat="@drawable/square"/span> />
<ImageView
android:id="@ id/square11"
android:layout_width="0dp"。
android:layout_height="0dp"/span>
android:layout_marginStart="116dp"。
app:layout_constraintBottom_toBottomOf="father"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.09"。
app:layout_constraintHorizontal_bias="0.111"/span>
app:layout_constraintStart_toStartOf="father"
app:layout_constraintTop_toTopOf="parent"。
app:layout_constraintVertical_bias="0.692"。
app:layout_constraintWidth_percent="0.05"。
app:srcCompat="@drawable/square"/span> />
</androidx.constraintlayout.widget.ConstraintLayout>
我還沒有在Mainactivity上實作任何東西。
uj5u.com熱心網友回復:
你在正確的軌道上使用水平和垂直偏置。問題是你正在將碎片約束到父視圖(ConstraintLayout),而該父視圖將改變其大小和長寬比。只需在橫向和縱向模式之間改變方向,就可以看到事情是如何轉變的(除非是在方形設備上,也就是說。
為了解決這個問題,使布局能夠適應不同的螢屏,請按照您的想法定義棋盤布局。現在拿起棋子并將它們限制在棋盤的起點、頂部、終點和底部。這樣一來,調整棋子的偏向就可以把它移到棋盤上的任何地方。取決于你的棋盤是如何繪制的,你可能需要一些額外的余量來得到它。這也假定了方塊位置是有規律的。
下面是一個布局樣本:
。<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"/span>
android:layout_height="match_parent"/span>
tools:context=".MainActivity">
<ImageView
android:id="@ id/board"/span>
android:layout_width="wrap_content"/span>
android:layout_height="wrap_content"。
android:adjustViewBounds="true"/span>
app:layout_constraintBottom_toBottomOf="parent"。
app:layout_constraintEnd_toEndOf="parent"。
app:layout_constraintStart_toStartOf="parent"。
app:layout_constraintTop_toTopOf="parent"。
app:srcCompat="@drawable/checkerboard" />
<ImageView
android:id="@ id/checker1"/span>
android:layout_width="wrap_content"/span>
android:layout_height="wrap_content"。
android:adjustViewBounds="true"/span>
android:layout_margin="28dp"/span>
app:layout_constraintVertical_bias="0.0"。
app:layout_constraintHorizontal_bias="0.0"。
app:layout_constraintBottom_toBottomOf="@id/board"。
app:layout_constraintEnd_toEndOf="@id/board"。
app:layout_constraintStart_toStartOf="@id/board"。
app:layout_constraintTop_toTopOf="@id/board"。
app:srcCompat="@drawable/checker" />
<ImageView
android:id="@ id/checker2"/span>
android:layout_width="wrap_content"/span>
android:layout_height="wrap_content"。
android:adjustViewBounds="true"/span>
android:layout_margin="28dp"/span>
app:layout_constraintVertical_bias="0.14"/span>
app:layout_constraintHorizontal_bias="0.14"。
app:layout_constraintBottom_toBottomOf="@id/board"。
app:layout_constraintEnd_toEndOf="@id/board"。
app:layout_constraintStart_toStartOf="@id/board"。
app:layout_constraintTop_toTopOf="@id/board"。
app:srcCompat="@drawable/checker" />
<ImageView
android:id="@ id/checker3"/span>
android:layout_width="wrap_content"/span>
android:layout_height="wrap_content"。
android:adjustViewBounds="true"/span>
android:layout_margin="28dp"/span>
app:layout_constraintVertical_bias="0.28"。
app:layout_constraintHorizontal_bias="0.28"。
app:layout_constraintBottom_toBottomOf="@id/board"。
app:layout_constraintEnd_toEndOf="@id/board"。
app:layout_constraintStart_toStartOf="@id/board"。
app:layout_constraintTop_toTopOf="@id/board"。
app:srcCompat="@drawable/checker" />
<ImageView
android:id="@ id/checker4"/span>
android:layout_width="wrap_content"/span>
android:layout_height="wrap_content"。
android:adjustViewBounds="true"/span>
android:layout_margin="28dp"/span>
app:layout_constraintVertical_bias="0.28"。
app:layout_constraintHorizontal_bias="0.43"。
app:layout_constraintBottom_toBottomOf="@id/board"。
app:layout_constraintEnd_toEndOf="@id/board"。
app:layout_constraintStart_toStartOf="@id/board"。
app:layout_constraintTop_toTopOf="@id/board"。
app:srcCompat="@drawable/checker" />
<ImageView
android:id="@ id/checker5"/span>
android:layout_width="wrap_content"/span>
android:layout_height="wrap_content"/span>
android:layout_margin="28dp"/span>
app:layout_constraintVertical_bias="0.43"。
app:layout_constraintHorizontal_bias="0.57"。
app:layout_constraintBottom_toBottomOf="@id/board"。
app:layout_constraintEnd_toEndOf="@id/board"。
app:layout_constraintStart_toStartOf="@id/board"。
app:layout_constraintTop_toTopOf="@id/board"。
app:srcCompat="@drawable/checker" />
</androidx.constraintlayout.widget.ConstraintLayout>
這看起來像下面的內容:
現在是Android Studio設計器,我將抓住第一塊,并改變垂直和水平的偏向,以在螢屏上移動它。
根據你的設計,我將抓取第一件作品,并改變其垂直和水平偏向以在螢屏上移動。
根據你的棋盤,你可能需要做一些調整來移動棋子在棋盤中的指定位置。也許你的棋盤不是上下/左右對稱的。在最壞的情況下,你可以在一個陣列中為每個方塊定義偏置量并使用它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/313084.html
標籤:
下一篇:將影像與文本基線在一行中對齊

