2013-03-17 14 views
7

Jak ustawić powiększanie i pomniejszanie po kliknięciu na zdjęcie? Chcę, aby mój program reagował, gdy użytkownik kliknął na obrazie, musi się w pewnym stopniu powiększyć i może przenosić widok obrazu ten ekran i czasami zmniejsza rozmiar wraz z przesunięciem dotykiem w dowolnym miejscu na ekranie. gdy klikniesz ponownie, wróć do oryginalnego rozmiaru, co mam zrobić?Animacja do powiększania i pomniejszania w Androidzie do podglądu obrazu

Odpowiedz

14

O ile wiem, istnieją dwa sposoby.

Pierwszy sposób:

Utwórz nowy folder w OZE zwanych 'anim'. Następnie należy utworzyć plik xml, na przykład zoomin.xml. Następnie umieść następujący kod w środku.

<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> 

Zrób kolejny, aby pomniejszyć, ale z odwróconymi wartościami.

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

Możesz zmienić wartości według swoich potrzeb. Myślę, że są one oczywiste.

A teraz w twoim kodzie java.

ImageView imageView = (imageView)findViewById(R.id.yourImageViewId); 

Animation zoomin = AnimationUtils.loadAnimation(this, R.anim.zoomin); 
Animation zoomout = AnimationUtils.loadAnimation(this, R.anim.zoomout); 
imageView.setAnimation(zoomin); 
imageView.setAnimation(zoomout); 

Teraz wystarczy tylko śledzić bieżący stan. I za każdym stanie wykonać tej linii kodu:

imageView.startAnimation(zoomin); 

i

imageView.startAnimation(zoomout); 

Na przykład:

imageView.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) { 
       if(!pressed) { 
        v.startAnimation(zoomin); 
        pressed = !pressed; 
       } else { 
        v.startAnimation(zoomout); 
        pressed = !pressed; 
       } 
      } 
     }); 

Drugi sposób opisany jest tutaj: http://developer.android.com/training/animation/zoom.html.

+0

Dziękuję bardzo –

Powiązane problemy