В настоящее время у меня есть пользовательский интерфейс, созданный с изображениями, проблема в том, что они не могут пересекаться или быть слоистыми. (Или, если они могут, я не знаю, как) Я бы хотел сделать 3 слоя, нижний слой - доска,
Следующий слой - это куски, Следующий слой - это выбранная часть с действительными ходами ,Слоистые изображения в Android Studio?
Моя идея состоит в том, что у меня будут слушатели только на верхнем слое.
Я просто ищу лучшую структуру данных для этого, приложение - игра в шахматы, в которой я работаю над разработкой.
Если есть другой подход, который может быть лучше, я все уши.
Спасибо!
В соответствии с просьбой код:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Game Activity"
android:id="@+id/textView5"
android:layout_gravity="center_horizontal"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView22"
android:src="@drawable/ni_whitesquare"
android:layout_below="@+id/textView5"
android:layout_alignRight="@+id/textView5"
android:layout_alignEnd="@+id/textView5"
android:layout_marginRight="15dp"
android:layout_marginEnd="15dp"
android:layout_marginTop="76dp"
android:contentDescription="whitesquare"
android:clickable="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView32"
android:src="@drawable/ni_blacksquare"
android:layout_alignTop="@+id/imageView22"
android:layout_alignLeft="@+id/imageView22"
android:layout_alignStart="@+id/imageView22"
android:layout_marginLeft="23dp"
android:layout_marginStart="23dp"
android:contentDescription="blacksquare"
android:clickable="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView12"
android:src="@drawable/ni_blacksquare"
android:contentDescription="blacksquare"
android:clickable="true"
android:layout_alignTop="@+id/imageView22"
android:layout_toLeftOf="@+id/imageView22"
android:layout_toStartOf="@+id/imageView22" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView21"
android:src="@drawable/ni_blacksquare"
android:contentDescription="blacksquare"
android:clickable="true"
android:layout_below="@+id/imageView22"
android:layout_toRightOf="@+id/imageView12"
android:layout_toEndOf="@+id/imageView12" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView23"
android:src="@drawable/ni_blacksquare"
android:contentDescription="blacksquare"
android:clickable="true"
android:layout_above="@+id/imageView12"
android:layout_toLeftOf="@+id/imageView33"
android:layout_toStartOf="@+id/imageView33" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView31"
android:src="@drawable/ni_whitesquare"
android:contentDescription="whitesquare"
android:clickable="true"
android:layout_alignBottom="@+id/imageView21"
android:layout_alignLeft="@+id/imageView32"
android:layout_alignStart="@+id/imageView32" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView11"
android:src="@drawable/ni_whitesquare"
android:contentDescription="whitesquare"
android:clickable="true"
android:layout_alignTop="@+id/imageView21"
android:layout_toLeftOf="@+id/imageView21"
android:layout_toStartOf="@+id/imageView21" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView13"
android:src="@drawable/ni_whitesquare"
android:contentDescription="whitesquare"
android:clickable="true"
android:layout_alignTop="@+id/imageView23"
android:layout_alignLeft="@+id/imageView12"
android:layout_alignStart="@+id/imageView12" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView33"
android:src="@drawable/ni_whitesquare"
android:contentDescription="whitesquare"
android:clickable="true"
android:layout_alignTop="@+id/imageView23"
android:layout_alignLeft="@+id/imageView32"
android:layout_alignStart="@+id/imageView32" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/directions"
android:id="@+id/directionsstring"
android:layout_marginTop="30dp"
android:layout_below="@+id/imageView21"
android:layout_alignLeft="@+id/textView5"
android:layout_alignStart="@+id/textView5" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Startingpoint"
android:src="@drawable/ni_pawn"
android:layout_above="@+id/imageView11"
android:layout_toLeftOf="@+id/imageView12"
android:layout_toStartOf="@+id/imageView12" />
</RelativeLayout>
активность:
public class GameActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
final ImageView mStarting = (ImageView) findViewById(R.id.Startingpoint);
final ImageView mCenterSq = (ImageView) findViewById(R.id.imageView22);
final ImageView m12 = (ImageView)findViewById(R.id.imageView12);
mCenterSq.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
m12.setImageResource(R.drawable.ni_blacksquare);
mCenterSq.setImageResource(R.drawable.ni_portal);
//center square turns into a portal when clicked.
if (mStarting.getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.ni_whitesquare).getConstantState()) &&
mCenterSq.getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.ni_portal).getConstantState()))
{
mCenterSq.setOnClickListener(null);
return;
}
mStarting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
//Pawn selected
mStarting.setImageResource(R.drawable.ni_whitesquare);
m12.setImageResource(R.drawable.ni_greensquare);
mCenterSq.setImageResource(R.drawable.ni_greensquare);
if (mStarting.getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.ni_whitesquare).getConstantState()))
{
mStarting.setOnClickListener(null);
}
m12.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
if (m12.getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.ni_greensquare).getConstantState()))
{
m12.setImageResource(R.drawable.ni_pawn);
mCenterSq.setImageResource(R.drawable.ni_portal);
}
}
});
}
});
};
});
}
}
Можете ли вы разместить здесь код? Существует много подходов к планировкам слоев, но я не уверен, что вы пытаетесь сделать это неправильно. Вы настраиваете свои представления программно или используете XML? – ethan123
.xml, и я опубликую активность, которая идет с ним здесь через секунду. – hellyale
Итак, весь этот код позволяет мне переместить пешку на два пространства в портал, где он затем исчезает. Однако одновременно отображается только одно изображение, а зеленые поля для действительных ходов не показывают, какие части (если есть) в настоящее время находятся на квадрате. Я собирался сменить коробки на зеленую рамку, чтобы вы все еще могли видеть, какие штуки находятся на площади. – hellyale