Wie animiert man das Layout von oben auf 300dp Bildschirm umgekehrt in Android?

8

Anforderung

Ich kann die Layout-Basis in toYDelta="100% oder toYDelta="50% etc übersetzen.

Aber ich möchte das Layout nur in 300dp Height animieren.

slide_down.xml

%Vor%

slide_up.xml

%Vor%

Java-Code (Animation)

%Vor%

Mockup

Problem

Wie funktioniert das auf 300dp Höhe?

Bitte helfen Sie mir für dieses Problem.

Danke.

    
Darshak 28.04.2014, 12:34
quelle

1 Antwort

25

Animation anzeigen

Überraschenderweise scheint es keine Möglichkeit zu geben, eine 300-dpi-Translationsanimation in XML anzugeben. Die Übersetzungs-Animation XML-Syntax akzeptiert drei verschiedene Abstandsangaben:

  • Absolute Pixel relativ zur normalen Position (z. B. android:toYDelta="10" )
  • Prozentsatz relativ zur Elementbreite / -höhe (z. B. android:toYDelta="10%" )
  • Prozentsatz relativ zur übergeordneten Breite / Höhe (z. B. android:toYDelta="10%p" )

Sie werden auch auf die gleichen Spezifikationen beschränkt, wenn Sie eine TranslateAnimation via Java . In Java können Sie jedoch den äquivalenten absoluten Pixelwert (für ein bestimmtes Gerät) berechnen und diesen als Pixelabstand angeben.

Um 300dp zu erhalten, können Sie entweder einen Dimen-Wert von 300dp definieren in XML oder einfach die Berechnung im Code durchführen.

Innerhalb dimens.xml :

%Vor%

Innerhalb Ihrer Aktivität / Ihres Fragments / etc:

%Vor%

ODER

Innerhalb Ihrer Aktivität / Ihres Fragments / etc:

%Vor%

Dann brauchst du nur diese Entfernung zu verwenden, wenn du dein TranslateAnimation :

erstellst %Vor%

Eigenschaftsanimation

Wenn Sie Android 3.0 und höher verwenden, können Sie die neue Property-Animation Framework, um die gleiche Animation eleganter auszudrücken:

%Vor%

Wenn Sie Android 2.x weiterhin verwenden, können Sie NineOldAndroids verwenden, um rückwärtskompatible Animationssyntax zu erhalten. Es wird automatisch die neuen Eigenschaftsanimationen für Geräte verwenden, die es unterstützen.

%Vor%     
antonyt 30.04.2014, 14:06
quelle

Tags und Links