Autore Topic: Piccolo problema con TranslateAnimation  (Letto 547 volte)

Offline Alessio_roma™

  • Utente junior
  • **
  • Post: 50
  • Respect: 0
    • Mostra profilo
    • www.blogarm.tk
  • Dispositivo Android:
    LG Nexus 4
  • Sistema operativo:
    Windows 7 ultimate x64, Ubuntu 14.04
Piccolo problema con TranslateAnimation
« il: 16 Marzo 2013, 18:54:49 CET »
0
Nella mia MainActivity sto utilizzando un RelativeLayout per disporre alcune ImageView,al momento sto provando a far si che qualora una delle ImageView venisse toccata,automaticamente deve spostarsi di un certo numero di punti sull'asse y,nel caso venisse ritoccata invece deve ritornare al suo posto di origine.Il problema che ho si verifica nel secondo caso,quando tento di riportare l'ImageView nella posizione originale,praticamente questo avviene,però l'immagine invece che fermarsi al punto 0 dell'asse y,sale di poco ancora,e quindi mi taglia 4-5 pixel.Vi posto il codice dell'animazione che scaturisce dall'evento touch nel metodo onStart()

Codice (Java): [Seleziona]
protected void onStart(){
                super.onStart();
                carta.setOnTouchListener(new View.OnTouchListener() {
                int flag=0; // utilizzato per rendere reversibile l'animazione 
                        @Override
                        public boolean onTouch(View v, MotionEvent event) {
                                // TODO Auto-generated method stub
                                int action = event.getAction();
                                switch(action){
                                case MotionEvent.ACTION_DOWN:
                                if(v == carta_scelta){ // se al tocco la carta selezionata è quella richiesta
                                        TranslateAnimation animation = new TranslateAnimation(0, 0, 0, 30); //sposta di 30 punti in avanti sull'asse y l'ImageView sulla quale viene utilizzata
                                        TranslateAnimation animation_rev = new TranslateAnimation(0,0,0,-30); // sposta di 30 punti indietro sull'asse y ...
                                       
                                        animation.setFillAfter(true); //rende permanente l'effetto dell'animazione animation
                                        animation_rev.setFillAfter(true); // rende permanente l'effetto dell'animazione animation_rev
                                        switch(flag){
                                        case 0:
                                        carta.startAnimation(animation);
                                        flag=1;
                                        break;
                                        case 1:
                                                carta.startAnimation(animation_rev);   
                                                flag=0;
                                                break;
                                        }
                                        return true;
                                }
                                }
                                return false;
                        }
                });
        }

se non capite il problema ditemelo che vi posto gli screenshot delle varie fasi,così magari è più facile risolvere.

P.S: le ImageView all'inizio sono tutte sull'asse y = 0


Post unito: 16 Marzo 2013, 19:45:24 CET
Tutto risolto,in pratica sbagliavo nell'impostare le coordinate dell'y sulla seconda animazione,anche se non ho ancora capito come vengono interpretate le coordinate sul RelativeLayoute (Se relativamente all'ImageView,se Relative al Layout o se in modo assoluto),in breve invece da y=0 a y=-30,mi è bastato mettere da y=30 a y=0,quindi:

Codice (Java): [Seleziona]
TranslateAnimation animation_rev = new TranslateAnimation(0,0,30,0);
« Ultima modifica: 16 Marzo 2013, 19:45:24 CET da Alessio_roma™, Reason: Merged DoublePost »
I MIEI SITI:
RPG & Fantasy -> La Fucina di Harad
Pagina personale -> Il Web di Alessio_roma™