2011-01-11 4 views
8

Das mag albern klingen, aber ich kann nirgends finden, wie Sie den PivotXType und PivotYType einer ScaleTAnimation angeben.XML-Attribut zum Angeben von PivotXType und PivotYType in ScaleAnimation

Ich weiß, wie es programmatisch zu tun, aber ich brauche es über XML zu spezifizieren (ich brauche es für den Übergang zwischen den Aktivitäten, mit overridePendingTransition Methode)

Heres der Code, der funktioniert:

Animation animation=new ScaleAnimation(1,0,1,0,ScaleAnimation.RELATIVE_TO_SELF,(float)0.5,ScaleAnimation.RELATIVE_TO_SELF,(float)0.5); 
    animation.setDuration(1000); 

Heres die XML, ohne das XML-Attribut für

<?xml version="1.0" encoding="utf-8"?> 
<scale xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromXScale="1" 
    android:toXScale="0" 
    android:fromYScale="1" 
    android:toYScale="0" 
    android:pivotX="0.5"   
    android:pivotY="0.5" 
    android:duration="2000" 
    /> 

ich ausgecheckt in der Dokumentation unter http://developers.androidcn.com/reference/android/view/animation/ScaleAnimation.html ich suche, aber Artikel nicht jeder finden Antworten. Danke.

Antwort

19

Hoffe niemand störte sogar meine Frage zu lesen. Ich habe beim Schreiben der XML einen Fehler gemacht, hier ist der korrekte Code für den gewünschten Effekt (Skalierung der neuen Aktivität von 100% auf 0%, genau in der Mitte des Bildschirms). Korrekte Werte für pivotX und pivotY sind 50% anstelle von 0,5.

<?xml version="1.0" encoding="utf-8"?> 
<scale xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromXScale="1" 
    android:toXScale="0" 
    android:fromYScale="1" 
    android:toYScale="0" 
    android:pivotX="50%"   
    android:pivotY="50%" 
    android:duration="600" 
    /> 
+0

Bitte akzeptieren Sie dies als Ihre Antwort so die Frage effektiv geschlossen werden (die Menschen ein eher überspringen akzeptierte Antwort). Vielen Dank! – McStretch

+0

Vielen Dank! So viel ich weiß, das ist undokumentiert. – Ran

14

Ich weiß, die Antwort wurde bereits veröffentlicht, aber ich dachte, ich würde ein paar Worte der Erklärung schreiben. Pivots in XML können auf drei Arten von Werten (beispielsweise unter Verwendung von 50 Wert) eingestellt werden:

  • 50% - Prozentsatz; Entsprechend der Art der Verschwenkung Animation.RELATIVE_TO_SELF. 50% bedeutet im Grunde, dass es in der Mitte der Ansicht schwenken wird.

  • 50%p - Prozentsätze der Eltern; Entsprechend der Art der Verschwenkung Animation.RELATIVE_TO_PARENT. 50%p bedeutet, dass es sich in der Mitte der übergeordneten Ansicht dreht.

  • 50 - absolut; Entsprechend der Art der Verschwenkung Animation.ABSOLUTE. 50 Mittel an den 50 Pixel vom oberen Schwenken/links (abhängig von der Art der Dreh - y/x)

+1

Danke tolle Antwort - das ist sehr nützlich, wenn Sie die Ansicht bereits übersetzt und Sie möchten um ein neues Zentrum animieren (verkleinern Animation vergrößern zum Beispiel) - Sie müssen dann Ihre absolute Mitte der übersetzten Ansicht berechnen und um diese neue animieren Center. – benchuk

+0

saubere Antwort. Vielen Dank – iroiroys