Autore Topic: Animazione swipe  (Letto 1188 volte)

Offline fisherman

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung i8150
  • Sistema operativo:
    Windows 7
Animazione swipe
« il: 13 Gennaio 2012, 13:24:22 CET »
0
Codice (Java): [Seleziona]
private static final int SWIPE_MIN_DISTANCE = 160;
        // Distanza massima consentita sull'asse Y
        private static final int SWIPE_MAX_OFF_PATH = 400;
        // Velocità minima richiesta sull'asse X
        private static final int SWIPE_THRESHOLD_VELOCITY = 150;

        private GestureDetector gestureDetector;
        View.OnTouchListener gestureListener;
   @Override
       public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.act3);
       

       gestureDetector = new GestureDetector(new MyGestureDetector());
       gestureListener = new View.OnTouchListener() {
               public boolean onTouch(View v, MotionEvent event) {
                       if (gestureDetector.onTouchEvent(event)) {
                               return true;
                       }
                       return false;
               }
       };
}

class MyGestureDetector extends SimpleOnGestureListener {
       @Override
       public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
               try {
                       if (Math.abs(e1.getY() - e2.getY()) > dp2px(SWIPE_MAX_OFF_PATH))
                               return false;
                       // Swipe da destra a sinistra
                       
                       if (e2.getX() - e1.getX() > dp2px(SWIPE_MIN_DISTANCE)
                                       && Math.abs(velocityX) > dp2px(SWIPE_THRESHOLD_VELOCITY)){
                           
                                 Context context = getBaseContext();
                                 Intent myIntent = new Intent(context, NonciclopediaActivity.class);
                                 startActivityForResult(myIntent, 0);
                       }
               } catch (Exception e) {
                       // nothing
               }
               return false;
       }
}

@Override
public boolean onTouchEvent(MotionEvent event) {
       if (gestureDetector.onTouchEvent(event))
               return true;
       else
               return false;
}

public float dp2px(int dip) {
       float scale = getResources().getDisplayMetrics().density;
       return dip * scale + 0.5f;
}

}
   

Questo è il mio codice, serve solo a swipe verso dx, però per abbellirlo volevo fare in modo che comparisse un'animazione, o che non fosse cosi "rigido", aiutatemi plese!.  :-)

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Animazione swipe
« Risposta #1 il: 13 Gennaio 2012, 13:26:46 CET »
0
Eh ok, ma cosa vuoi animare?

Offline fisherman

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung i8150
  • Sistema operativo:
    Windows 7
Re:Animazione swipe
« Risposta #2 il: 13 Gennaio 2012, 15:46:19 CET »
0
L'unica cosa che vorrei fare è allungare il tempo della chiusura della finestra tramite swipe, nel senso che vorrei fare in modo che non cambi direttamente da un'activity ad un'altra di colpo ma che sia "progressivo" so che non mi sono spiegato tanto bene ma non saprei come fare altrimenti  ;-)

Offline fisherman

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung i8150
  • Sistema operativo:
    Windows 7
Re:Animazione swipe
« Risposta #3 il: 15 Gennaio 2012, 10:31:37 CET »
0
Niente?  :-(

Offline E.Musso

  • Utente junior
  • **
  • Post: 82
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy GT-S5660
  • Play Store ID:
    Emiliano Musso
  • Sistema operativo:
    Windows 7
Re:Animazione swipe
« Risposta #4 il: 15 Gennaio 2012, 14:22:08 CET »
0
Uhm...il tuo swipe lancia un'Activity, e non credo possa essere eseguita al di fuori dello schermo per poi spostarla. Hai considerato una modifica al layout, magari utilizzando un HorizontalScrollview che contenga tutto quello che ti serve?
Bollettazione Interventi - Un taglio ai costi di tipografia per professionisti!
--
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato

Offline Verandi

  • Utente normale
  • ***
  • Post: 378
  • Respect: +75
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Animazione swipe
« Risposta #5 il: 21 Gennaio 2012, 00:01:50 CET »
+1
Potresti settare le animazioni di transizione dell'activity uscente ed entrante usando il metodo overridependingtransition(). Per creare il ritardo usi la classe Handler.
In alternativa, un trucchetto che mi è venuto in mente al momento (quindi che non ho mai provato) è usare un frameLayout:
- Racchiudi il layout dell'activity in un frameLayout.
- Aggiungi come ultima child del frameLayout una view qualsiasi a schermo intero con un colore di sfondo e la rendi invisibile.
- A swipe avvenuto fai partire un'animazione di fadeIn sulla view colorata.
- Setti un animationListener e nell'onAnimationEnd termini l'activity.
Ovviamente, se vuoi un fadeIn/fadeOut è più veloce usare il primo metodo, ma questo secondo metodo può permetterti di creare qualcosa di ancora più elaborato.  ;-)

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Animazione swipe
« Risposta #6 il: 21 Gennaio 2012, 00:11:44 CET »
+2