2014-11-26 6 views
8

So habe ich ein programmatisch PopupWindow hinzugefügt, die wie folgt aussieht:Programmatically Animationseffekt eine Zugabe (programmatisch hinzugefügt) 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) 

Was ich tun möchte, ist eine Art Animationseffekt haben, wie es direkt von der Taste erscheint, die ich drücke, so erscheint das Popup. (Dies ist nur ein Beispiel, ich möchte nur irgendeine Art von Animation).

Dokumentation wäre auch in Ordnung, solange es nicht XML-basiert ist (ich fand diese schon - nicht wirklich hilfreich).

Wenn andere Details benötigt werden, werde ich die Frage kommentieren oder bearbeiten.

Antwort

14

So gelang es mir, mit diesem Problem fertig zu werden.

Es gibt drei einfache Schritte, um den Animationseffekt zu erzielen.

Erstens: Machen Sie zwei XMLs, die die Animation sind. In meinem Fall waren die beiden folgenden hier. 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" /> 

Zweitens:

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

Drittens:

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); 

Wenn jemand Hilfe bei diesem muss, lassen comment.I werde antworten so schnell ich kann.

9

Hier ist Code zum Einstellen des Animationsstils. Stellen Sie sicher, dass Sie die Methode setAnimationStyle aufrufen, bevor Sie showAtLocation aufrufen.

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

Hoffe, das hilft.

Referenz: setAnimationStyle

+0

Nun, tut mir leid, aber es hat mir nicht wirklich geholfen. Was ich brauchte, war die XML-Logik. ANyways, fand ich heraus. Ich werde später die Antwort posten, da ich jetzt gerade ein anderes Problem habe. – Vlad

+0

@Vlad können Sie mir sagen, warum? Hat es nicht funktioniert? – SLee

+0

Nein, ist nicht, dass es nicht funktioniert hat, ist nur, dass Ihre Antwort nicht das ist, wonach ich gesucht habe. Ich brauchte das XML-Zeug. Um mehr auf den Punkt zu bringen: zwei Animationen xmls machen (eine ist der Fade-In-Effekt und die andere ist der Fade-Out-Effekt) und ich musste einen Stil (in Werten -> Stile) mit diesen beiden XMLs erstellen. Das ist was ich brauchte. Obwohl ich dir ein UP geben werde, da du prompt geantwortet hast und ich bin mir ziemlich sicher, dass du mir geholfen hättest, wenn ich in den Kommentaren danach gefragt hätte. – Vlad