Autore Topic: Errore di animazione con TranslateAnimation  (Letto 359 volte)

Offline E3ddy

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    s4
Errore di animazione con TranslateAnimation
« il: 07 Settembre 2013, 22:55:40 CEST »
0
Ciao a tutti,

ho un problema con questa istruzione TranslateAnimation,
in pratica quando esegue l'animazione per far tornare indietro il frame taglia il frame nella parte destra, quella che fino al rilascio del touch era fuori dallo schermo...
e invece quando eseguo l'animazione per far scomparire tutto il frame.. esempio:

trascino il ditino fino a metà dello schermo e in fine rilascio.. parte l'animazione e il frame scompare.. DIFETTO:
se premo nuovamente in un punto a caso da metà fino alla fine dello schermo l'animazione riparte dal punto dove ho premuto

il mio codice:
Codice (Java): [Seleziona]
RelativeLayout.LayoutParams params = null;
int x;
int offset;
int tmp= 0;
int avviato = 0;
        @Override
        public boolean onTouch(View v, android.view.MotionEvent event) {
                // TODO Auto-generated method stub
               
                FrameLayout frame = (FrameLayout) this.findViewById(R.id.frame1);
                if(v == findViewById(R.id.frame1)){
                if(event.getAction() == android.view.MotionEvent.ACTION_MOVE){
                        x= (int) event.getRawX();
        if (tmp==0){
                offset = x;
                tmp = 1;
        }
       
        if(offset < (x - larghezza /5) || offset > (x + larghezza /5) || avviato ==1)
        {
                params = new RelativeLayout.LayoutParams((int) (larghezza), (int) (altezza));
                params.leftMargin = x;
                params.topMargin = (int) (0);
                frame.setLayoutParams(params);
                avviato = 1;
        }
                                                       
                        }//fine get action
                if(event.getAction() == android.view.MotionEvent.ACTION_UP){
                        tmp = 0;
                        avviato = 0;
       
                        x= (int) event.getRawX();
                        if(x > (larghezza /3))
                        {

                        Animation  animation= new TranslateAnimation(x - x, larghezza, 0, 0);
                        animation.setDuration(1000);
                        animation.setFillAfter(true);
                        frame.startAnimation(animation);
                       
                       
                        }
                        if(x < (larghezza /3))
                        {
                                Log.i("xxXxxanommmm", toString().valueOf(x));
                                Animation animation= new TranslateAnimation(x-x,0 -x, 0, 0);
                                animation.setDuration(1000);
                                animation.setFillAfter(true);
                                frame.startAnimation(animation);

                        }
                }
                return true;
                }//fine if v
               
                return false;
        }//fine touch

Post unito: 08 Settembre 2013, 18:03:50 CEST
ok rega ho risolto in parte .. il problema che quando finiva l'animazione il frame rimaneva nella facciata principale ma invisibile quindi non potevo schiacciare i tasti che erano rimasti sotto una volta rilasciato il dito..

semplicemente implementando un listener all'animazione e con public void onAnimationEnd(Animation animation) gli dico di minimizzare il frame a 0 sia in x che in y..

però non ho ancora capito come risolvere il problema del frame che quando esegue l'animazione per tornare indietro diminuisce in larghezza e si vede quello che sta sotto.......
nella parte destra dello schermo,

ho provato ad effettuare un resize del frame però rientra alla sinistra dello schermo rendendo effettivamente il frame per metà non visibile
e rimane tale anche se provo a settrare nuovamente il margin left

qualcuno può darmi una mano?
« Ultima modifica: 08 Settembre 2013, 18:03:50 CEST da E3ddy, Reason: Merged DoublePost »