Relative Übersetzung in der Eigenschaftsanimation in xml

9

Momentan habe ich ein ImageView , das die Länge des Geräts verlängert und um 3 skaliert. Offensichtlich werden die Seiten außerhalb des Bildschirms abgeschnitten. Ich möchte, dass die Animation mit der linken Seite des Bilds auf der linken Seite des Geräts beginnt, und dann so lange verschieben, bis die rechte Seite des Bilds auf der rechten Seite des Geräts angezeigt wird.

Ich kann sie erreichen, indem ich das Bild auf seine anfängliche Basis aufsetze, und mache das im Grunde folgendermaßen:

%Vor%

Das funktioniert jedoch nur, weil ich die genaue Größe des Bildes und die genaue Größe meines Motorola Xoom kenne. Natürlich möchte ich, dass dies auf jedem Gerät funktioniert, also brauche ich etwas weniger fest codiertes. Mit Tween-Animationen funktioniert es gut, da Sie etwas basierend auf einem Prozentsatz seiner Größe übersetzen können. Es war nicht perfekt, aber es funktionierte gut genug für diesen Effekt. Immobilienanimationen scheinen das nicht zu haben. Die Eigenschaften translationX und X müssen Einheiten haben.

Gibt es eine einfache Möglichkeit, eine Ansicht mit Eigenschaftsanimationen basierend auf der relativen Position zu übersetzen? Muss ich für jede Dimension eine separate Animationsdatei erstellen? Gibt es eine andere Möglichkeit, diesen Effekt zu erzielen? Ich würde es vorziehen, meine eigene Animation nicht zu machen.

    
DeeV 14.12.2011, 19:23
quelle

2 Antworten

0

Könnten Sie Code für separate Gerätegrößen erstellen, die Sie unterstützen möchten (z. B. Tablet, Telefonlandschaft usw.), die bekannte dpi-Breiten haben. Dann könntest du das unten verwenden, um das Bild zu skalieren (wobei 384 für eine bestimmte Geräte-Bucket-Breite 384 dpi ist) und etwas ähnliches für den Wert tun, den du brauchst.

%Vor%

Dies ist der Weg, um absolute Pixel in dp Pixel zu konvertieren. Ich weiß nicht, wie man diese für das, was du machst, benutzt, aber es ist zumindest ein Anfang.

    
samleighton87 20.06.2013 13:14
quelle
0

Sie sollten die Animation zur Laufzeit erstellen, indem Sie die Bildschirmgröße des aktuellen Gerätebildschirms übergeben. Ermitteln Sie zuerst die Bildschirmgröße (HINWEIS: Die Metriken (Breite, Höhe) ändern sich je nach Drehung des Geräts) :

%Vor%

und dann erstellen Sie Ihren ObjectAnimator:

%Vor%     
user3687642 29.05.2014 13:20
quelle