2014-08-29 7 views
6

Ho un ImageView che si trova in una pagina di un ViewPager e supponiamo che mi piacerebbe animarlo per ridimensionare + volare da qualche parte fuori dallo schermo, mentre il la vista originale è ancora presente nel cercapersone, non trattato.Come animare una versione "duplicata" di Android esistente

Qual è il modo migliore per creare questo tipo di animazione su Android 4.0.3+? Vorrei usare il nuovo framework di animazione, non quello vecchio.

Un modo ho pensato che è quello di utilizzare il DecorView attività: creare un clone del ImageView lì e fare un'animazione, ma mi sento come questo è un po 'hacky - la vista arredamento sembra più simile a una caratteristica nascosta e un dettaglio di implementazione .

C'è un modo migliore forse?

risposta

2

penso che si può andare in giro con un DecorView impostando setClipChildren() false su tutti i genitori del ImageView. Questo ti permette di animare un View dal tuo layout anche al di fuori del suo genitore (e anche Activity). Io uso soprattutto un metodo di supporto per fare questo:

public static void setClipView(View view, boolean clip) { 
    if (view != null) { 
     ViewParent parent = view.getParent(); 
     if(parent instanceof ViewGroup) { 
      ViewGroup viewGroup = (ViewGroup) view.getParent(); 
      viewGroup.setClipChildren(clip); 
      setClipView(viewGroup, clip); 
     } 
    } 
} 

Quindi, solo utilizzare questo metodo sul tuo ImageView come questo:

LayoutHelper.setClipView(imageView, false); 

Ad animare la View in sé è necessario utilizzare la nuova API di animazione introdotto con Android 3.0 (Honeycomb - API livello 11).

This DevBytes video è anche un po 'correlato a questo. Si occupa delle animazioni personalizzate Activity e creano un duplicato ImageView per animare la transizione da uno Activity al successivo. Questa è fondamentalmente la stessa cosa che stai cercando di fare, solo in due diversi Activities.

+0

Grazie, ma sembra che la mia domanda non sia chiara. Voglio che una vista originale appaia intatta. Cioè una vista è ancora presente nel cercapersone, mentre la copia sta volando fuori dallo schermo. Regolerà la domanda per menzionarlo esplicitamente. – dimsuz

+0

Devi solo costruire di nuovo lo stesso 'View', ad esempio se si tratta di un' ImageView' aggiungi un secondo 'ImageView' al layout con la stessa immagine, dimensione e posizione e quindi solo animalo. Il loro non è un modo più semplice di quello. –

+0

[** Questo video DevBytes **] (https://www.youtube.com/watch?v=CPxkoe2MraA) è in qualche modo correlato a questo, si occupa di animazioni 'Activity' personalizzate e creano un' ImageView' duplicato per animare la transizione da una 'Attività' alla successiva. Questa è fondamentalmente la stessa cosa che stai cercando di fare, solo in due diverse "Attività". –

Problemi correlati