2012-04-18 4 views
11

Mam zamiar obrócić obraz w Mojej aplikacji. Wszystko działa dobrze z obrotem. Ale gdy animacja rotacji zostanie zakończona, obraz powróci do poprzedniej pozycji. Chcę, aby ten obraz pozostał w tym obróconym stanie i nie przywracał go do swojego prawdziwego stanu.Android: Po zakończeniu animacji animację obrócić do stanu rzeczywistego?

Jak to zrobić? Aby obrócić obraz używam poniżej kodu:

<?xml version="1.0" encoding="utf-8"?> 

<rotate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:fromDegrees="0" 
    android:toDegrees="30" 
    android:duration="2000"> 

</rotate> 

i stosując ją do ImgeView jak:

myImageView.startAnimation(rotateRight); 

Tak, pomóż mi w odniesieniu do tego.

Odpowiedz

24

Zobacz How can I animate a view in Android and have it stay in the new position/size?

wewnątrz znacznika <set użyć

android:fillAfter="true" 
android:fillEnabled="true" 

Ogólnie Animacja nie zmienia rzeczywiste właściwości widzenia, to tylko ożywia go. Jeśli chcesz zmienić rzeczywiste właściwości, użyj AnimationListener i nasłuchuj na onAnimationEnd i dokonaj zmian samodzielnie.

+0

OK, pozwól mi spróbować. –

+0

Myślę, że to działa. –

+1

Ten atrybut nie jest potrzebny: android: fillEnabled = "true". Jest to wymagane dla tego atrybutu: android: fillBefore. Spójrz na to: https://developer.android.com/reference/android/view/animation/Animation.html#attr_android:fillAfter. – Arash

2

Pierwszy uzyskać instancję animacji za pomocą

Animation anim = AnimationUtils.loadAnimation(context, R.anim.animation); 

„R.anim.animation” odnosi się do tego, co jest animacja.

umieścić detektor animacji w tej animacji za pomocą.

anim.setAnimationListener 

Umożliwia wyświetlanie widoku w metodzie onAnimationCompleted() obiektu AnimationListener.

To powinno zadziałać.

2

setFillAfter i setFillEnable to odpowiedź, której potrzebujesz.