0

私のAndroidアプリケーションでは、すべての画像がアニメーション化されているいずれかをクリックすると、5つの画像ビューがあります。すべての画像にズームアウトとズームインのアニメーションを設定しました。アニメーションが終了すると、選択したイメージ ビューは非表示になります。画像が見えなくなった後、その画像ビューの場所をクリックすると、アニメーションが再び開始され、画像が見えなくなります。

ズームイン アニメーション:

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

縮小アニメーション

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

 zoomin =AnimationUtils.loadAnimation(this, R.anim.zoom);
 zoomout=AnimationUtils.loadAnimation(this,  R.anim.zoomout);

 ImageView v2 = (ImageView) findViewById(R.id.image2);

     v2.setOnClickListener(new View.OnClickListener() 
    {
       @Override public void onClick(View v) 
       {

          v2.setAnimation(zoomin);
          v2.startAnimation(zoomin);
          v2.setAnimation(zoomout);
          v2.startAnimation(zoomout);
          v2.clearAnimation();
      }
   });
4

6 に答える 6

3

この問題は、両方のアニメーション XML ファイルに android:fillAfter="true" を追加したために発生しています。

両方の XML から "android:fillAfter="true" を削除するか、両方のファイルで " android:fillAfter="false" を保持してください。

于 2013-11-12T07:59:05.610 に答える
1

レイヤーの透明度を変更するだけです。

v2.setAlpha(0f);
于 2016-01-17T09:57:17.507 に答える
0

透明な画像を使用する必要があるの は、アニメーションが終了したときに、透明な画像をその画像の背景/画面として設定して、前の画像を置き換えることだけです。

ビューの可視性を変更しても問題は解決しません

 v2.setVisibility(View.GONE);
 v2.setVisibility(View.INVISIBLE);

上記の両方により、ビューがクリック不可になり、再度クリックできなくなります。

于 2013-11-12T06:04:29.227 に答える
0

そのアニメーションのアニメーション リスナーを処理する必要があります。

zoomin.setAnimationListener(new AnimationListener() 
    {

        @Override
        public void onAnimationStart(Animation animation) { }

        @Override
        public void onAnimationRepeat(Animation animation) { }

        @Override
        public void onAnimationEnd(Animation animation) 
        {               
            v2.setVisibility(View.GONE);
        }
    });
于 2013-11-12T06:02:19.880 に答える