2013-08-14 9 views
11

ImageViewをズームアンドアウトする方法はありますか?私は、以下のコードを使用してみましたが、ズーム機能の1つだけが動作しています。Android ImageViewズームインとズームアウトを継続的に

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アニメーションが正常に動作しているようです。 zoominzoomoutアニメーションを連続的に実装する方法はありますか?

おかげ

答えて

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

私はアンドロイドを追加することをお勧めします:repeatCount = "1" android:repeatMode = "reverse" zoominとzoomoutでパラメータを拡大すると非常に美しいです:) – Arash

0

Sanketが

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

      } 
     }); 
関連する問題