Autore Topic: Problema ZoomFragment -> GridView  (Letto 128 volte)

Offline SpartanV00

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S8
  • Sistema operativo:
    Windows 8.1
Problema ZoomFragment -> GridView
« il: 05 Gennaio 2018, 16:50:34 CET »
0
Salve, sono nuovo nel mondo Android. Scrivo qui perchè dopo giorni e giorni non riesco assolutamente a trovare una soluzione al mio problema.
In pratica ho riprodotto una app che simula il Prato Fiorito (Campo Minato).
Posto subito le parti di codice che fanno riferimento alla creazione della tabella per poi parlare del problema.
Questo è il BoardAdapter.
Codice (Java): [Seleziona]
public class BoardAdapter extends BaseAdapter{

    private Context context;
    private Cell[] cellArray;

    public BoardAdapter(Context c, Board board) {
        context = c;
        ArrayList<Cell> cells = new ArrayList<Cell>();
        for (Cell[] row : board.getCells()){
            for (Cell cell : row){
                cells.add(cell);
            }
        }
        this.cellArray = new Cell[cells.size()];
        cells.toArray(this.cellArray);

    }

    @Override
    public int getCount() {
        return cellArray.length;
    }

    @Override
    public Object getItem(int position) {
        return cellArray[position];
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView = new SquareImageView(context);

        int resId = getImageResourceForCell(cellArray[position]);
        imageView.setImageResource(resId);

        return imageView;
    }
   
    private int getImageResourceForCell(Cell cell) {
        if (cell.isRevealed()){
            if (cell.isBomb()) return R.drawable.bomba_campo10;
            if (cell.hasBombNeighbor()) {

                switch (cell.nOfNeighborIsBomb()) {
                    case 1:
                        return R.drawable.cella1;
                    case 2:
                        return R.drawable.cella2;
                    case 3:
                        return R.drawable.cella3;
                    case 4:
                        return R.drawable.cella4;
                    case 5:
                        return R.drawable.cella5;
                    case 6:
                        return R.drawable.cella6;
                    case 7:
                        return R.drawable.cella7;
                    case 8:
                        return R.drawable.cella8;
                    default:
                        return R.drawable.cella0;
                }

            }
            return R.drawable.cella0;
        }
        if (cell.hasWarningFlag()) {
            return R.drawable.bandiera11;
        }

        return R.drawable.cella;
    }

}

SquadraImageView
Codice (Java): [Seleziona]
public class SquareImageView extends ImageView{

    public SquareImageView(Context context) {
        super(context);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, widthMeasureSpec);
    }
}

Invece questa è la funzione situata nel GameFragment che inizializza il tutto
Codice (Java): [Seleziona]
   
private void attachGameToGridView() {
        GridView boardGridView = (GridView) getView().findViewById(R.id.gridView);
        boardGridView.setNumColumns(game.getBoard().getCells()[0].length);
        boardGridView.setAdapter(new BoardAdapter(getActivity(), game.getBoard()));
    }

Infine lascio di seguito il codice XML del fragment con all'interno la GridView.
Perchè in pratica ho un Activity(GameActivity) con dentro un Fragment(GameFragment)
Codice (XML): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical">

        <GridView
           android:id="@+id/gridView"
           android:layout_width="wrap_content"
           android:layout_height="match_parent"
           android:isScrollContainer="false"
           android:scrollbarAlwaysDrawHorizontalTrack="false"
           android:scrollbarAlwaysDrawVerticalTrack="false" />
</LinearLayout>

Il problema in poche parole è che se aumento la difficoltà, ovvero il numero di celle, esse diventano troppo piccole.
Le soluzioni a cui avevo pensato erano queste, ma non sono riuscito a venirne a capo in nessuno dei due modi.
- lasciando alle celle una dimensione SEMPRE fissa con la possibilità di scrollare per vedere tutto il campo
- oppure creare un bottone che dia la possibilià di zoommare e muoversi liberamente all'interno della GridView

Lascio di seguito anche due immagini di come appare il Campo Minato con poche celle e con tante celle per aiutare a far capire il problema.
Spero sia qualcosa di non troppo complessso, probabilmente è più facile risolvere il problema che spiegarlo, ringrazio anticipatamente chiunque mi aiuti.

Visualizzazione a difficoltà semplice con celle della giusta dimensione


Visualizzazione a difficoltà difficile con celle troppo piccole


*Non riesco a inserire le immagini più piccole  :-X
Sembra che si vedano grandi anche a difficolta maggiore ma vi assicuro che nello schermo di un telefono sono piccolissime
« Ultima modifica: 05 Gennaio 2018, 16:55:18 CET da SpartanV00 »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 782
  • Respect: +162
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 10 x64
Re:Problema ZoomFragment -> GridView
« Risposta #1 il: 08 Gennaio 2018, 10:21:27 CET »
0
Puoi usare il "pinch" per zoomare/restringere utilizzando due dita: https://developer.android.com/training/gestures/scale.html#scale
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline Thanenut

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Re:Problema ZoomFragment -> GridView
« Risposta #2 il: 09 Gennaio 2018, 09:26:12 CET »
0
I have the same problem. I do not know what to do. I want to repair it.