2015-03-07 6 views
-1

В настоящее время у меня есть пользовательский интерфейс, созданный с изображениями, проблема в том, что они не могут пересекаться или быть слоистыми. (Или, если они могут, я не знаю, как) Я бы хотел сделать 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); 
          } 


         } 

        }); 
        } 






        }); 


      }; 
     }); 

    } 
} 
+1

Можете ли вы разместить здесь код? Существует много подходов к планировкам слоев, но я не уверен, что вы пытаетесь сделать это неправильно. Вы настраиваете свои представления программно или используете XML? – ethan123

+0

.xml, и я опубликую активность, которая идет с ним здесь через секунду. – hellyale

+0

Итак, весь этот код позволяет мне переместить пешку на два пространства в портал, где он затем исчезает. Однако одновременно отображается только одно изображение, а зеленые поля для действительных ходов не показывают, какие части (если есть) в настоящее время находятся на квадрате. Я собирался сменить коробки на зеленую рамку, чтобы вы все еще могли видеть, какие штуки находятся на площади. – hellyale

ответ

1

Для иерархического представления, вы можете захотеть использовать FrameLayout увидеть этот ответ: Layout Layers? Z-Axis?

Кроме того, если вы пытаясь настроить макет, в котором у вас есть несколько последовательных представлений, которые нужно выровнять один рядом друг с другом, наиболее подходящим элементом обычно является LinearLayout. LinearLayout автоматически настроит ваши представления в последовательном порядке в том порядке, в котором вы их объявили, в соответствии с установленным для него атрибутом android: orientation.

В целом, я бы предложил посмотреть документы для каждого из них. RelativeLayout, вероятно, не способ, так как это связано с большим количеством управления позиционированием взглядов, которое просто кажется несерьезным для того, что, как я думаю, вы пытаетесь сделать. Я надеюсь, что это поможет

+0

Cool. Ссылка на ось Z выглядит так, как будто она может работать для того, чего я пытаюсь достичь. Благодаря! – hellyale

Смежные вопросы