2016-06-05 3 views
0

Я стараюсь сделать легкое приложение, как головоломка. Я хочу разделить изображение в четыре, девять, шестнадцать ... но когда я кладу куски в imageView, он выглядит беспорядочным и разного размера, а некоторые не отображаются в макете. Кроме того, куски появляются в первом ряду, и мне нужно, чтобы куски меняли строку.Макет для Android-игры-головоломки

Мой код:

активность:

package com.example.jessi.moopooh; 

import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Color; 
import android.graphics.Point; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Display; 
import android.widget.GridLayout; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 

import java.util.ArrayList; 
import java.util.Collection; 
import java.util.Collections; 

public class prueba_dividir_imagen2 extends Activity { 

    private int tamano = 3; 
    private GridLayout layoutPuzle; 
    private LinearLayout base; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_prueba_dividir_imagen2); 
     base = (LinearLayout) findViewById(R.id.rl); 
     base.setBackgroundColor(Color.CYAN); 
     layoutPuzle = new GridLayout(this); 
     layoutPuzle.setColumnCount(tamano); 
     layoutPuzle.setBackgroundColor(Color.RED); 
     layoutPuzle.setUseDefaultMargins(true); 

     Display display = getWindowManager().getDefaultDisplay(); 
     Point size = new Point(); 
     display.getSize(size); 


//  Drawable imagenPuzle = ResourcesCompat.getDrawable(getResources(),R.drawable.cow,null); 
     Bitmap imagenPuzle = BitmapFactory.decodeResource(getResources(), R.drawable.cow); 

     //TODO Antes de hacer esto habria que recibir las filas y columnas 
     //TRATAMIENTO DE LA IMAGEN 


     imagenPuzle = Bitmap.createScaledBitmap(imagenPuzle,size.x,size.y,false); 

     int ancho = imagenPuzle.getWidth(); 
     int alto = imagenPuzle.getHeight(); 

     int anchoPieza = ancho/tamano; 
     int altoPieza = alto/tamano; 

     ArrayList<Bitmap> piezasPuzle = new ArrayList<Bitmap>(); 

     for(int i = 0; i < tamano;i++){ 
      for (int j = 0; j < tamano;j++){ 
       Log.d("Density:",Integer.toString(getResources().getDisplayMetrics().densityDpi)); 
       Bitmap pieza = Bitmap.createBitmap(imagenPuzle,j*anchoPieza,i*altoPieza,anchoPieza,altoPieza); 
       int tamanoX = anchoPieza * (getResources().getDisplayMetrics().densityDpi/480); 
       int tamanoY = altoPieza * (getResources().getDisplayMetrics().densityDpi/480); 
       Log.d("Tamapo:",Integer.toString(getResources().getDisplayMetrics().densityDpi)); 
       piezasPuzle.add(Bitmap.createScaledBitmap(pieza,tamanoX,tamanoY,false)); 
      } 
     } 
     Collections.shuffle(piezasPuzle); 
     for(int i = 0; i < Math.pow(tamano,2);i=i+tamano){ 
      for(int j = i;j < i+tamano;j++){ 
       ImageView pieza = new ImageView(this); 
       pieza.setImageBitmap(piezasPuzle.get(j)); 
       pieza.setMaxHeight(1); 
       pieza.setMaxWidth(1); 

       layoutPuzle.addView(pieza); 
      } 
     } 
     base.addView(layoutPuzle); 

//   pieza.setLayoutParams(new android.view.ViewGroup.LayoutParams(80,60)); 
//   pieza.setMaxHeight(10); 
//   pieza.setMaxWidth(10); 
    } 
} 

XML файл:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.jessi.moopooh.prueba_dividir_imagen" 
    android:id="@+id/rl" 
    android:orientation="horizontal"> 

</LinearLayout> 
+0

http://stackoverflow.com/questions/12418618/split-image-into-clickable-regions – Hosseini

+0

Вы можете использовать GridView –

+0

Я использую GridView но я не получаю изображение не превышает границы. Я дал скриншот: https://gyazo.com/2a0ca9b2a79fd3623e3afd3159cfb010 –

ответ