+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Problema posizione Random ImageView

  1. #1
    L'avatar di devildragon
    devildragon non è in linea Scolaretto
    Luogo
    Sarzana (SP)
    Post
    103

    Question Problema posizione Random ImageView

    Buongiorno,
    nuovo quesito che sono a sbatterci da un paio di giorni,
    sempre per il discorso della splash screen con mini game per intrattenere l'utente.
    Poichè posizionare in maniera statica per un numero non meglio definito di combinazioni sarebbe un lavoro lungo e credo anche inutile visto che spero che la splash screen venga caricata per il minor tempo possibile, ho optato per un posizionamento pseudo-random delle imageView ma spesso vengono posizionati al di fuori dello shermo ma purtroppo non riesco a identificare il codice migliore per evitarlo, qualcuno ha un consifglio?

    Questo il codice da me utilizzato che crea il problema.

    codice:
    DisplayMetrics metrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay()
                    .getMetrics(metrics);
            int width = metrics.widthPixels;
            int height = metrics.heightPixels;
    
            /*Random Number01*/
            Random rand01 = new Random();
            int numb01 = rand01.nextInt(10)+1; // Gives n such that 0 <= n < 10
            Random randomX01 = new Random();
            int X01 = randomX01.nextInt(width)+1;
            Random randomY01 = new Random();
            int Y01 = randomY01.nextInt(height)+1;
            if (X01 > metrics.widthPixels /2 ) {
                X01 = X01 - ((ImageView)findViewById(R.id.coin01)).getMeasuredWidth ();
            }
            if (Y01 > metrics.heightPixels /2 ) {
                Y01 = Y01 - ((ImageView)findViewById(R.id.coin01)).getMeasuredHeight ();
            }
            ((ImageView)findViewById(R.id.coin01)).setX ( X01 );
            ((ImageView)findViewById(R.id.coin01)).setY ( Y01 );
            if (numb01 == 1) {
                ((ImageView)findViewById(R.id.coin01)).setImageResource(R.drawable.mon001souls);
                accumulator01 =  1;
            } else if (numb01 == 2) {
                ((ImageView)findViewById(R.id.coin01)).setImageResource(R.drawable.mon002souls);
                accumulator01 =  2;
            } else if (numb01 == 3) {
                ((ImageView)findViewById(R.id.coin01)).setImageResource(R.drawable.mon005souls);
                accumulator01 =  5;
            } else if (numb01 == 4) {
                ((ImageView)findViewById(R.id.coin01)).setImageResource(R.drawable.mon010souls);
                accumulator01 =  10;
            } else if (numb01 == 5) {
                ((ImageView)findViewById(R.id.coin01)).setImageResource(R.drawable.mon020souls);
                accumulator01 =  20;
            } else if (numb01 == 6) {
                ((ImageView)findViewById(R.id.coin01)).setImageResource(R.drawable.mon050souls);
                accumulator01 =  50;
            } else if (numb01 == 7) {
                ((ImageView)findViewById(R.id.coin01)).setImageResource(R.drawable.mon100souls);
                accumulator01 =  100;
            } else if (numb01 == 8) {
                ((ImageView)findViewById(R.id.coin01)).setImageResource(R.drawable.mon200souls);
                accumulator01 =  200;
            } else if (numb01 == 9) {
                ((ImageView)findViewById(R.id.coin01)).setImageResource(R.drawable.mon500souls);
                accumulator01 =  500;
            }
    In attesa di un vostro gentile aiuto,

    Grazie

  2. #2
    L'avatar di devildragon
    devildragon non è in linea Scolaretto
    Luogo
    Sarzana (SP)
    Post
    103

    Thumbs up

    Risolto,
    tutto il problema nasceva dalla selezione della constrain dell'imageview al layout.
    Conseguentemente il punto 0,0 dell'immagine corrispondeva alla posizione fissata nella pagina di design del layout (erroneamente pensavo che lo zero corrispondesse a prescindere al margine alto sinistro) e l'immagine si spostava al di fuori dello schermo.

    Alla prossima

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi