2012-01-19 12 views
7

Ho un'attività il cui layout contiene solo una visualizzazione video. Ecco il xml:RelativeLayout fa sì che l'animazione non funzioni?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 


    <VideoView 
android:id="@+id/videoplayer" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_alignParentRight="true" 
android:layout_alignParentLeft="true" 
android:layout_alignParentTop="true" 
android:layout_alignParentBottom="true" 
> 
</VideoView> 

sto cercando di applicare questa animazione al VideoView dopo che smette di suonare:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromYDelta="0%" android:toYDelta="-100%" android:duration="500"/> 
    <scale 
    android:fromXScale="1.0" 
    android:toXScale="0" 
    android:fromYScale="1.0" 
    android:toYScale="0" 
    android:duration="500" 
    android:pivotX="50%" 
    android:pivotY="0%" 
    /> 

</set> 

Questo funziona perfettamente come viene mostrato. Ma se passo da LinearLayout a RelativeLayout nel layout, l'animazione non funziona più e il video si blocca solo sull'ultimo fotogramma mostrato prima che si fermi.

Perché il tipo di layout di root nella mia attività non dovrebbe funzionare correttamente?

EDIT: Per aggiungere alla stranezza se aggiungo questo TextView

<TextView 
android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text=" "> 
</TextView> 

Per il RelativeLayout sotto il VideoView poi l'animazione funzionerà. Comunque se prendo lo spazio fuori dall'androide: elemento di testo di questo poi è tornato a non funzionare. o.O

EDIT: Ho assegnato la taglia a Beowulf Bjornson per il bel consiglio di usare il nuovo framework di animazione.

Ma sono ancora molto interessato se qualcuno riesce a capire cosa sta succedendo con le animazioni vecchio stile in questa situazione sarei più che felice di lanciare qualche punto in più per questo.

+1

Come si chiama l'animazione nel codice Java? Per favore, mettilo qui. Può essere può ottenere il punto per perché diventa congelare. –

risposta

9

Non sono sicuro che l'utilizzo di una libreria di terze parti sia una soluzione valida per te, ma consiglio vivamente NineOldAndroids, quindi puoi utilizzare le funzionalità di animazione di 3.0+ nelle versioni precedenti di Android. Rendono questo lavoro SEMPLICE più facile.

ecco il link: http://nineoldandroids.com/

Poi, su di voi attività che si può fare qualcosa di semplice come:

VideoView view = (VideoView) findViewById(R.id.videoplayer); 
animate(view).scaleX(0).scaleY(0).setDuration(500L); 

Ho provato utilizzando RelativeLayout e funziona come previsto.

EDIT: Se si desidera utilizzare l'applicazione a nido d'ape nativa, questa API specifica è 3.1+ e dovrebbe essere usato nativelly come la seguente:

view.animate().scaleX(0).scaleY(0).setDuration(500L); 

E se si desidera nativelly supporto 3.0, devi usarlo in questo modo:

AnimatorSet set = new AnimatorSet(); 
set.playTogether(
    ObjectAnimator.ofFloat(view, "scaleX", 1.0f, 0.0f), 
    ObjectAnimator.ofFloat(view, "scaleY", 1.0f, 0.0f), 
); 
set.setDuration(500).start(); 
+0

Questa è una biblioteca ordinata, e ho sicuramente intenzione di esaminarla.Ma sto già costruendo il progetto per Honeycomb quindi dovrei già avere accesso alla nuova API di animazione. Verificherò lunedì per vedere se l'utilizzo di questa nuova API risolverà il mio problema. – FoamyGuy

+0

Sicuro. Ho aggiunto alcuni esempi nativi, nel caso in cui possano aiutarti :) –

+0

Questa è una scoperta incredibile, grazie! +1 (+2 se potessi) – Rotemmiz

1

Non sono sicuro, ma nella mia app ho RelativeLayout e Animaion e anche il video funziona bene.

Se VideoView è l'unica visualizzazione del layout, inserire l'altezza relativa Larghezza e Larghezza come fill_parent e anche per VideoView e quindi provare.

Spero che funzioni. Altrimenti, fammi sapere.

Problemi correlati