2012-01-26 13 views
6

Więc to jest moja animacja XMLUżywam animacji Android obrócić ImageView, ale ruch jest bardzo niepewny

<?xml version="1.0" encoding="utf-8"?> 
<rotate 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromDegrees="0" 
    android:toDegrees="360" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:duration="3000" 
    android:repeatCount="infinite" 
    android:interpolator="@android:anim/linear_interpolator" /> 

jestem stosowania tego do ImageView jako środki do obracania obrazu. Ale ruch jest bardzo niepewny. Za każdym razem, gdy obraz obraca się, wydaje się, że przeskakuje w dwóch punktach obrotu, które są oddalone o 180 stopni od siebie. Nie widzę żadnego powodu, dlaczego tak się dzieje, czy ktoś napotkał na tę trudność i znalazł rozwiązanie?

+0

Spróbuj przejść od 0 do 359 stopni. – Noah

+0

Nie robiło to żadnej różnicy:/ –

+1

Próbujesz w emulatorze lub na prawdziwym urządzeniu? Powinien być gładki na urządzeniu o średniej i wysokiej jakości. –

Odpowiedz

0

Spróbuj ustawić inny interpolator. FYI, domyślny interpolator używany podczas tworzenia animacji w systemie Android nie jest interpolatorem liniowym, ale zamiast niego AccelerateDecelerateInterpolator.

+0

Potrzebuję płynnego obrotu liniowego. Animuję zwrotnicę –

+0

Aha i zapomniałem powiedzieć, próbowałem tego i to nie działało albo –

+0

czy może zastosowałeś efekt obracania razem z innym efektem? (np. efekt ruchu lub coś takiego, bo to z pewnością może być problem). – asenovm

0

Nie wiem, dlaczego nie uzyskano prawidłowego wyniku. Działa to dla mnie

Można użyć wbudowanego w android.R.anim.linear_interpolator z pliku XML animacji z

android:interpolator="@android:anim/linear_interpolator". 

Albo można stworzyć swój własny plik XML interpolacji w projekcie, na przykład nazwij go

res/anim/linear_interpolator.xml:

<?xml version="1.0" encoding="utf-8"?> 
<linearInterpolator xmlns:android="http://schemas.android.com/apk/res/android" /> 

i dodać do swojej animacji XML:

android:interpolator="@anim/linear_interpolator" 

i używać

android:toDegrees="360" 

do

android:toDegrees="359" 

jako 360 i 0 stopni są takie same

+0

Czy rozwiązałeś swój problem? – Sameer

-1

spróbować to zrobić plik xml w odkształcalne i umieścić tam swoje rozciągliwej kod jest poniżej, nazwa tego pliku my_progress_indeterminate.xml:

<?xml version="1.0" encoding="utf-8"?><animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" 
android:drawable="@drawable/your_rotating_image" 
android:pivotX="50%" 
android:pivotY="50%" /> 

Niestety, ale trzeba umieścić go w pasku postępu, jak to jest proste, jeżeli obraz jest taki sam statyczny jak widok obrazu nie trzeba robić żadnych inny kodowanie na to po prostu napisać jak to w układzie pliku xML:

<ProgressBar android:indeterminateDrawable="@drawable/my_progress_indeterminate" android:layout_height="100dp" android:layout_width="100dp"></ProgressBar> 
+0

co zrobić, jeśli potrzebujesz widoku obrazu lub po prostu animacji, aby wyświetlać swoje poglądy? – desgraci

0

emulator jest zawsze niepewny . Spróbuj debugować go w urządzeniu. Przyspiesz rotację, jeśli nie.

0

Jeśli ten obrót jest tak ważny, wydaje mi się, że jest to bardzo ważna część twojego interfejsu użytkownika.

W takiej sytuacji powinieneś zainteresować się prostą implementacją OpenGL, która pomoże ci rozwiązać problem.

Proponuję użyć http://www.andengine.org/ - prosty i łatwy do wdrożenia.

Na AndEngineExamples można znaleźć drobną próbkę kodu, która jest nawet za dużo!