Autore Topic: Rotazione Casuale  (Letto 811 volte)

Offline Vlad

  • Utente normale
  • ***
  • Post: 271
  • Respect: +16
    • Github
    • Google+
    • vmihalachi
    • vmihalachi
    • Mostra profilo
    • vmihalachi.com
  • Dispositivo Android:
    Samsung galaxy s2 | Samsung galaxy tab 7
  • Play Store ID:
    Vlad Mihalachi
  • Sistema operativo:
    Windows 8
Rotazione Casuale
« il: 21 Agosto 2011, 17:31:01 CEST »
0
Salve ! :-) :-)
Ho un app dove al click di un button ce l'immagine che ruota centralmente a step volevo chiedervi se ce un modo per far si che questi ultimi siano casuali cioe che la rotazione abbia a volte ampiezza maggiore e  altre vote faccia una rotazione minore
posto il codice
Codice (Java): [Seleziona]
public class bla extends Activity {
        // Valore minimo per il livello
        private final static int MIN_LEVEL = 0;
        // Massimo Valore per il livello
        private final static int MAX_LEVEL = 99999999;
       

        // Step per l'incremento del lively
        private final static int STEP = 400;

        private int level = 0;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                // Otteniamo il riferimento al ScaleDrawable
                final ScaleDrawable scaleDrawable = (ScaleDrawable) getResources()
                                .getDrawable(R.drawable.scale);
                // Riferimento al bottone
                Button levelButton = (Button) findViewById(R.id.levelButton);
                // Riferimento al LinearLayout contenitore delle View
        LinearLayout linearLayout = (LinearLayout)findViewById(R.id.linearLayout);             
        // Impostiamo lo ScaleDrawable come Background della View
        linearLayout.setBackgroundDrawable(scaleDrawable);
        // Gestiamo gli eventi di pressione del button aumentando
        // il valore del livello
        levelButton.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                                level += STEP;
                                if (level > MAX_LEVEL) {
                                        level = MIN_LEVEL+200;
                                } else if (level < MIN_LEVEL) {
                                        level = MIN_LEVEL;
                                }
                                Log.i("RotateScaleDrawableTestActivity", "Level: " + level);
                                scaleDrawable.setLevel(level);
                        }

                });
        }
}
O:-)

Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
Re:Rotazione Casuale
« Risposta #1 il: 22 Agosto 2011, 02:50:55 CEST »
0
La prima cosa che mi viene in mente è creare un oggetto Random (java.util.Random) per poi utilizzarlo ogni volta che ti serve uno STEP, in questo modo

Codice (Java): [Seleziona]
public class bla extends Activity {
        // Valore minimo per il livello
        private final static int MIN_LEVEL = 0;
        // Massimo Valore per il livello
        private final static int MAX_LEVEL = 99999999;

        private final Random rand = new Random(System.currentTimeMillis());

        private final static int OFFSET = 50; // può essere un valore qualsiasi a tua discrezione

        private int level = 0;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);

                  /*  BLA BLA BLA*/

         levelButton.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                               
                                /* Genera un numero casuale compreso tra OFFSET e MAX_LEVEL */
                                int STEP = rand.nextInt(MAX_LEVEL+1-OFFSET) + OFFSET;

                                level += STEP;
                                if (level > MAX_LEVEL) {
                                        level = MIN_LEVEL+200;
                                } else if (level < MIN_LEVEL) {
                                        level = MIN_LEVEL;
                                }
                                Log.i("RotateScaleDrawableTestActivity", "Level: " + level);
                                scaleDrawable.setLevel(level);
                        }

                });
       
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker

Offline Vlad

  • Utente normale
  • ***
  • Post: 271
  • Respect: +16
    • Github
    • Google+
    • vmihalachi
    • vmihalachi
    • Mostra profilo
    • vmihalachi.com
  • Dispositivo Android:
    Samsung galaxy s2 | Samsung galaxy tab 7
  • Play Store ID:
    Vlad Mihalachi
  • Sistema operativo:
    Windows 8
Re:Rotazione Casuale
« Risposta #2 il: 22 Agosto 2011, 21:33:12 CEST »
0
ok grazie fammi capire in basse a cosa cambia il valore e metto topic risolto e un bel thanks !  :-P

Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
R: Rotazione Casuale
« Risposta #3 il: 23 Agosto 2011, 17:02:11 CEST »
0
Sinceramente non ho capito bene la domanda... Se intendevi "come funziona l'algoritmo" trovi un'esaustiva spiegazione qui: http://www.javamex.com/tutorials/random_numbers/java_util_random_algorithm.shtml

Inviato dal mio Gingerbread on Sapphire usando Tapatalk
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker

Offline Giovanni D'Addabbo

  • Utente normale
  • ***
  • Post: 163
  • Respect: +8
    • Google+
    • giovannid
    • giovanni.daddabbo
    • magoscuro
    • Mostra profilo
    • Rhubbit.it - Sviluppo app Android/iOs
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Rhubbit srl
  • Sistema operativo:
    Windows/Mac/Linux
Re:Rotazione Casuale
« Risposta #4 il: 23 Agosto 2011, 17:47:23 CEST »
0
se ho capito bene....
puoi crearti un'animation al volo, generare i gradi di quanto deve girare a random ed associare tale valore all'animation, poi dipende da quanti giri gli vuoi far fare... ;)
byeeeeeeeee

Offline Vlad

  • Utente normale
  • ***
  • Post: 271
  • Respect: +16
    • Github
    • Google+
    • vmihalachi
    • vmihalachi
    • Mostra profilo
    • vmihalachi.com
  • Dispositivo Android:
    Samsung galaxy s2 | Samsung galaxy tab 7
  • Play Store ID:
    Vlad Mihalachi
  • Sistema operativo:
    Windows 8
Re:Rotazione Casuale
« Risposta #5 il: 23 Agosto 2011, 19:20:21 CEST »
0
ok allora :
se per animazione intenti una drawable con rotate lo fatto
:D
non ho capito il resto dove devo mettere random e dove associo ;)

Offline Giovanni D'Addabbo

  • Utente normale
  • ***
  • Post: 163
  • Respect: +8
    • Google+
    • giovannid
    • giovanni.daddabbo
    • magoscuro
    • Mostra profilo
    • Rhubbit.it - Sviluppo app Android/iOs
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Rhubbit srl
  • Sistema operativo:
    Windows/Mac/Linux
Re:Rotazione Casuale
« Risposta #6 il: 24 Agosto 2011, 14:22:40 CEST »
0
dopo che fai l'animazione associa l'immagine ad una matrice ed imposta un valore random per una ulteriore rotazione di soli X gradi
e vedrai che va ;)