0

J'utilise la version Android 2.3.3 et de faire un jeu de tic tac toe dessus. J'ai un problème avec un placement d'objets lors de la conception de la mise en page, et il y a aussi quelque chose qui ne va pas avec un état de jeu du jeu. Toute aide serait géniale!Ma mise en page Android n'est pas sur le même emplacement lors de l'exécution sur l'émulateur, et montre leur position incorrecte

Regardez ci-dessous l'image de ma mise en page enter image description here

Voici mon code xml:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    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" 
    tools:context="com.sherzod.ion.tictactoeandroid.MainActivity"> 

    <GridLayout 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_marginBottom="46dp" 
     android:layout_marginEnd="1dp" 
     android:layout_marginLeft="1dp" 
     android:layout_marginRight="1dp" 
     android:layout_marginStart="1dp" 
     android:layout_marginTop="46dp" 
     android:background="@drawable/board" 
     android:columnCount="3" 
     android:rowCount="3" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintHorizontal_bias="0.0" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintVertical_bias="0.0" 
     tools:layout_constraintBottom_creator="1" 
     tools:layout_constraintLeft_creator="1" 
     tools:layout_constraintRight_creator="1" 
     tools:layout_constraintTop_creator="1"> 

     <ImageView 
      android:id="@+id/imageView" 
      android:layout_width="90dp" 
      android:layout_height="90dp" 
      android:layout_column="0" 
      android:layout_marginBottom="10dp" 
      android:layout_marginLeft="10dp" 
      android:layout_marginRight="10dp" 
      android:layout_marginTop="10dp" 
      android:layout_row="0" 
      android:onClick="dropIn" 
      android:tag="0" /> 

     <ImageView 
      android:id="@+id/imageView5" 
      android:layout_width="90dp" 
      android:layout_height="90dp" 
      android:layout_column="1" 
      android:layout_marginBottom="10dp" 
      android:layout_marginLeft="20dp" 
      android:layout_marginRight="10dp" 
      android:layout_marginTop="10dp" 
      android:layout_row="0" 
      android:onClick="dropIn" 
      android:tag="1"/> 

     <ImageView 
      android:id="@+id/imageView6" 
      android:layout_width="90dp" 
      android:layout_height="90dp" 
      android:layout_column="2" 
      android:layout_marginLeft="20dp" 
      android:layout_marginTop="10dp" 
      android:layout_row="0" 
      android:onClick="dropIn" 
      android:tag="2"/> 

     <ImageView 
      android:id="@+id/imageView9" 
      android:layout_width="90dp" 
      android:layout_height="90dp" 
      android:layout_column="0" 
      android:layout_marginBottom="10dp" 
      android:layout_marginLeft="10dp" 
      android:layout_marginTop="40dp" 
      android:layout_row="1" 
      android:onClick="dropIn" 
      android:tag="3"/> 

     <ImageView 
      android:id="@+id/imageView10" 
      android:layout_width="90dp" 
      android:layout_height="90dp" 
      android:layout_column="1" 
      android:layout_marginBottom="10dp" 
      android:layout_marginLeft="20dp" 
      android:layout_marginRight="10dp" 
      android:layout_marginTop="40dp" 
      android:layout_row="1" 
      android:onClick="dropIn" 
      android:tag="4" 
      tools:ignore="RtlHardcoded" /> 

     <ImageView 
      android:id="@+id/imageView11" 
      android:layout_width="90dp" 
      android:layout_height="90dp" 
      android:layout_column="2" 
      android:layout_marginLeft="20dp" 
      android:layout_marginTop="40dp" 
      android:layout_row="1" 
      android:onClick="dropIn" 
      android:tag="5" /> 

     <ImageView 
      android:id="@+id/imageView12" 
      android:layout_width="90dp" 
      android:layout_height="90dp" 
      android:layout_column="0" 
      android:layout_marginLeft="10dp" 
      android:layout_marginTop="50dp" 
      android:layout_row="2" 
      android:onClick="dropIn" 
      android:tag="6"/> 

     <ImageView 
      android:id="@+id/imageView14" 
      android:layout_width="90dp" 
      android:layout_height="90dp" 
      android:layout_column="2" 
      android:layout_marginLeft="20dp" 
      android:layout_marginTop="50dp" 
      android:layout_row="2" 
      android:onClick="dropIn" 
      android:tag="7"/> 

     <ImageView 
      android:id="@+id/imageView13" 
      android:layout_width="90dp" 
      android:layout_height="90dp" 
      android:layout_column="1" 
      android:layout_marginLeft="20dp" 
      android:layout_marginTop="50dp" 
      android:layout_row="2" 
      android:onClick="dropIn" 
      android:tag="8"/> 

    </GridLayout> 
</android.support.constraint.ConstraintLayout> 

Voici mon fichier Activité principale:

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageView; 

public class MainActivity extends AppCompatActivity { 

    // 0 = yellow ; 1 = red; 
    int activePlayer = 0; 

    // ** 2 means unplayed 
    int[] gameState = {2, 2, 2, 2, 2, 2, 2, 2, 2}; 


    public void dropIn(View view) { 

     ImageView counter = (ImageView) view; 

     System.out.println(counter.getTag().toString()); 

     int tappedCounter = Integer.parseInt(counter.getTag().toString()); 


     if(gameState[tappedCounter] == 2) { 
      gameState[tappedCounter] = activePlayer; 
     } 

     counter.setTranslationY(-1000f); 

     if(activePlayer == 0) { 
      counter.setImageResource(R.drawable.yellow); 
      activePlayer = 1; 

     }else { 
      counter.setImageResource(R.drawable.red); 
      activePlayer = 0; 
     } 



     counter.animate().translationYBy(1000f).rotation(360).setDuration(200); 

    } 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

Répondre

0

J'ai fait quelques changements votre disposition:

  • Ajouté columnWeight et rowWeight à chaque élément de grille
  • Ajouté layout_gravityfill à chaque élément de grille

Vérifiez le dessous xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
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"> 

<GridLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/board" 
    android:layout_marginBottom="46dp" 
    android:layout_marginEnd="1dp" 
    android:layout_marginLeft="1dp" 
    android:layout_marginRight="1dp" 
    android:layout_marginStart="1dp" 
    android:layout_marginTop="46dp" 
    android:columnCount="3" 
    android:rowCount="3" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.0" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintVertical_bias="0.0" 
    tools:layout_constraintBottom_creator="1" 
    tools:layout_constraintLeft_creator="1" 
    tools:layout_constraintRight_creator="1" 
    tools:layout_constraintTop_creator="1"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginTop="10dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="0" /> 

    <ImageView 
     android:id="@+id/imageView5" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginTop="10dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="1" /> 

    <ImageView 
     android:id="@+id/imageView6" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginLeft="20dp" 
     android:layout_marginTop="10dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="2" /> 

    <ImageView 
     android:id="@+id/imageView9" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="10dp" 
     android:layout_marginTop="40dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="3" /> 

    <ImageView 
     android:id="@+id/imageView10" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginBottom="10dp" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginTop="40dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="4" 
     tools:ignore="RtlHardcoded" /> 

    <ImageView 
     android:id="@+id/imageView11" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginLeft="20dp" 
     android:layout_marginTop="40dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="5" /> 

    <ImageView 
     android:id="@+id/imageView12" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginLeft="10dp" 
     android:layout_marginTop="50dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="6" /> 

    <ImageView 
     android:id="@+id/imageView14" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginLeft="20dp" 
     android:layout_marginTop="50dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="7" /> 

    <ImageView 
     android:id="@+id/imageView13" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:layout_gravity="fill" 
     android:layout_marginLeft="20dp" 
     android:layout_marginTop="50dp" 
     android:onClick="dropIn" 
     android:src="@mipmap/ic_launcher" 
     android:tag="8" /> 

</GridLayout> 
</android.support.constraint.ConstraintLayout> 
+0

désolé, mais quand je le lance sur l'émulateur, il est tout foiré ! – Sherzod

+0

J'ai aussi vérifié sur l'émulateur, mais je l'ai fait sans l'arrière-plan 'GridLayout'. Pouvez-vous vérifier sans l'arrière-plan 'GridLayout'? –

+0

Savez-vous pourquoi la fonctionnalité de glisser-déposer ne correspond pas aux éléments de position, ou dois-je créer une configuration pour que l'affichage de la disposition soit identique lors de son exécution sur l'émulateur? – Sherzod