2014-11-26 9 views
8

Così, ho un livello di codice aggiunti PopupWindow che assomiglia a questo:programmazione aggiungendo effetto di animazione a un (a livello di codice aggiunto) PopupWindow in Android

 dialog = new PopupWindow(context); 
     dialog.setContentView(ll); 
     dialog.showAtLocation(view, Gravity.LEFT | Gravity.TOP, -70, 0); 
     dialog.setWidth(w); 
     dialog.setHeight(h - 50); 
     dialog.setOutsideTouchable(true); 
     //The dialog.update is somewhere else, I didn't bother adding it too as it is not important for this matter (I guess) 

Quello che voglio fare è di avere una sorta di effetto di animazione, come si apre proprio dal pulsante che premo per far apparire il popup. (questo è solo un esempio, voglio solo qualsiasi tipo di animazione).

Anche la documentazione va bene, a patto che non sia basata su XML (ho trovato quelli che già non mi aiutano davvero).

Se altri dettagli sono necessari, commenterò o modificherò la domanda.

risposta

14

Così, sono riuscito a far fronte a questo problema.

Ci sono tre semplici passaggi per ottenere l'effetto di animazione.

Primo: Creare due XML che sono l'animazione. Nel mio caso c'erano quelli che seguivano quaggiù. animation_on.xml

<scale xmlns:android="http://schemas.android.com/apk/res/android" 
    android:toXScale="1.0"    
    android:fromXScale="0.0"    

    android:toYScale="1.0" 
    android:fromYScale="0.0" 

    android:pivotX="0%" 
    android:pivotY="50%" 


    android:startOffset="100" 
    android:duration="300" /> 

animation_off.xml

<scale xmlns:android="http://schemas.android.com/apk/res/android" 
    android:toXScale="0.0"    
    android:fromXScale="1.0"    

    android:toYScale="0.0" 
    android:fromYScale="1.0" 

    android:pivotX="0%" 
    android:pivotY="50%" 


    android:startOffset="100" 
    android:duration="300" /> 

Secondo:

<style name="animationName" parent="android:Animation"> 
    <item name="android:windowEnterAnimation">@anim/animation_on</item> 
    <item name="android:windowExitAnimation">@anim/animation_off</item> 
</style> 

Terzo:

dialog = new PopupWindow(context); 
// ....other code, whatever you want to do with your popupWindow (named dialog in our case here) 
dialog.setAnimationStyle(R.style.animationName); 

Se qualcuno ha bisogno di aiuto con questo, lasciare comment.I risponderà il più velocemente possibile.

9

Questo è il codice per impostare lo stile di animazione. Assicurati di chiamare il metodo setAnimationStyle prima di chiamare showAtLocation.

dialog = new PopupWindow(context); 
dialog.setAnimationStyle(android.R.style.Animation_Dialog); 

Spero che questo aiuti.

Riferimento: setAnimationStyle

+0

Beh, mi dispiace ma non mi è stato di grande aiuto. Ciò di cui avevo bisogno erano le logiche XML. Comunque, ho capito. Gonna pubblica la risposta più tardi, in questo momento sono una specie di cagna con un altro problema. – Vlad

+0

@Vlad potresti dirmi perché? Non ha funzionato? – SLee

+0

No, non è che non ha funzionato, è solo che la tua risposta non è quello che stavo cercando. Avevo bisogno del materiale XML. Per essere più preciso: creare due animazioni xml (una è l'effetto fade-in e l'altra è l'effetto fade-out) e avevo bisogno di creare uno stile (in valori -> stili) con questi due XML. Questo è ciò di cui avevo bisogno. Anche se ti darò un UP, come hai risposto prontamente e sono abbastanza sicuro che mi avresti aiutato, se avessi chiesto nei commenti. – Vlad

Problemi correlati