2011-09-17 10 views
9

Próbuję wykonać proste powiększanie obrazu i przesuwanie za pomocą Androida, a ja mam dwa proste pytania. Po pierwsze, gdy wywołuję animację za pomocą skali, powiększam ją, używając górnego lewego rogu obrazu jako punktu początkowego, ale chciałbym, aby powiększał od środka obrazu. Drugie pytanie, po wykonaniu animacji, resetuje obraz do pierwotnego stanu i chciałbym, aby pozostało w stanie ostatecznym.Animacja powiększenia za pomocą środka obrazu w systemie Android za pomocą xml

Oto xml Mam dla skali:

<scale android:fromXScale="1.0" 
    android:fromYScale="1.0" 
    android:toXScale="2.0" 
    android:toYScale="2.0" 
    android:detachWallpaper="true" 
    android:duration="3000"></scale> 

iw moim kodu:

a = AnimationUtils.loadAnimation(this, R.anim.set); 
a.reset(); 
ImageView iv = (ImageView) findViewById(R.id.imageView1); 
iv.clearAnimation(); 
iv.startAnimation(a); 

Każda pomoc będzie mile widziana! :-)

Odpowiedz

25

do skalowania obrazu z centrum trzeba ustawić pivotX i pivotY

spróbuj tego kodu do skalowania od centrum i zachowując stan po skalowaniu,

<scale xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromXScale="1" 
    android:toXScale="5" 
    android:fromYScale="1" 
    android:toYScale="5" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:duration="1000" 
    android:fillAfter="true"> 
</scale> 

Dzięki ...

+0

Dzięki! To naprawiło zoom z centrum! – Mlove

+0

Faktycznie dowiedziałem się, że pole fillAfter wykonuje to, co chcę. Nie działało, gdy dodałem go do xml z jakiegoś powodu, ale kiedy zrobiłem to ręcznie w kodzie, działało dobrze. – Mlove

+0

@Mlove Czy możesz przesłać swój kod, jak korzystać z Fillafter ręcznie hav został walenie głową na wiele godzin – surhidamatya

Powiązane problemy