2013-08-14 3 views
11

Есть ли способ масштабирования и масштабирования ImageView постоянно в Android. Я попытался использовать приведенный ниже код, но работает только одна из функций Zoom.Android ImageView Zoom-in and Zoom-out Непрерывно

zoomin.xml

<?xml version="1.0" encoding="utf-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fillAfter="true" > 
    <scale 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:duration="20000" 
     android:fromXScale="1" 
     android:fromYScale="1" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:toXScale="3" 
     android:toYScale="3" > 
    </scale> 

</set> 

zoomout.xml

<?xml version="1.0" encoding="utf-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fillAfter="true" > 
    <scale 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:duration="20000" 
     android:fromXScale="1.0" 
     android:fromYScale="1.0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:toXScale="0.5" 
     android:toYScale="0.5" > 
    </scale> 

</set> 

И Activity класс, который я имею:

Animation zoomin, zoomout; //declared as public 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    // animation 
    zoomin = AnimationUtils.loadAnimation(this, R.anim.zoomin); 
    zoomout = AnimationUtils.loadAnimation(this, R.anim.zoomout); 
    bgImage.setAnimation(zoomin); 
    bgImage.setAnimation(zoomout); 
    Thread t = new Thread(new Zoom()); 
    t.start(); 
} 
private class Zoom implements Runnable { 
    @Override 
    public void run() { 
     while (true) {    
      bgImage.startAnimation(zoomin); 
      try { 
       Thread.sleep(8000); 
      } catch (InterruptedException e) { 
            e.printStackTrace(); 
      }    
      bgImage.startAnimation(zoomout); 
     } 
    } 
} 

Здесь zoomin анимация, кажется, работает хорошо. Есть ли способ реализовать анимацию zoomin и zoomout?

Благодаря

ответ

15

использовать это вместо нити

zoomin.setAnimationListener(new AnimationListener() { 

     @Override 
     public void onAnimationStart(Animation arg0) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onAnimationRepeat(Animation arg0) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onAnimationEnd(Animation arg0) { 
      bgImage.startAnimation(zoomout); 

     } 
    }); 

и

zoomout.setAnimationListener(new AnimationListener() { 

     @Override 
     public void onAnimationStart(Animation arg0) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onAnimationRepeat(Animation arg0) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onAnimationEnd(Animation arg0) { 
      bgImage.startAnimation(zoomin); 

     } 
    }); 
+1

удивительным! Большое спасибо :)) (Y) – sree127

+3

Я предлагаю добавить android: repeatCount = "1" и android: repeatMode = "reverse" для масштабирования параметров в масштабировании и масштабировании, и это работает очень красиво :) – Arash

0

Вы можете использовать что-то вроде ниже и как Санкет упоминалось

Zommin.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fillAfter="true" > 
    <scale 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:duration="5000" 
     android:fromXScale="1" 
     android:fromYScale="1" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:toXScale="1.5" 
     android:toYScale="1.5" 
     > 
    </scale> 

</set> 

Zoomout.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fillAfter="true" > 
    <scale 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:duration="5000" 
     android:fromXScale="1.5" 
     android:fromYScale="1.5" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:toXScale="1" 
     android:toYScale="1" > 
    </scale> 

</set> 

И код:

zoomin.setAnimationListener(new Animation.AnimationListener() { 

      @Override 
      public void onAnimationStart(Animation arg0) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onAnimationRepeat(Animation arg0) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onAnimationEnd(Animation arg0) { 
       imageView.startAnimation(zoomout); 

      } 
     });