2016-09-06 5 views
0

私はアンドロイドアプリを作っています。私は開発の初心者です。android - すぐにビューをアニメーション化する

私は、%O%サイズから100%サイズにスケールされ、同時に回転されるアプリアイコンを使用して、アプリの起動アニメーションを作成しました。これは大丈夫です。しかし、私はそれに問題があります。 xmlでは、ビューの可視性は最初に消えるように設定されています。コードでは、私はimage.setVisibility(View.VISIBLE)、次にimage.startAnimation(iconAnimation)を呼び出します。しかし、その結果、アニメーションを開始する前にImageViewのフラッシュが半秒程度かかっているのが見えます。あなたはgifを見ることができます。

のGIF: see the gif

あなたはこれで私を助けることができますか?前もって感謝します。

マイコード:

runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        // here 
        image.setVisibility(View.VISIBLE); 
        image.startAnimation(imageAnim); 
        //also found this somewhere, didn't help. 
        image.invalidate(); 
       } 
      }); 

レイアウトのxml:

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="35sp" 
    android:text="Kytky" 
    android:layout_centerInParent="true" 
    android:id="@+id/welcome_text" 
    android:visibility="gone"/> 
<ImageView 
    android:layout_width="200dp" 
    android:layout_height="200dp" 
    android:src="@mipmap/ic_launcher" 
    android:layout_centerInParent="true" 
    android:id="@+id/welcome_image" 
    android:visibility="gone"/> 
+0

試してください: 'android:visibility =" invisible "' – Shaishav

答えて

0

あなたが代わりに値のアニメーターを使用することができ、あなたはアニメーション

imageView.setPivotX(viewCenterX); 
    imageView.setPivotY(viewCenterY); 
    imageView.setScaleX(0); 
    imageView.setScaleY(0); 

    final FloatEvaluator scaleEvaluator = new FloatEvaluator(); 
    final FloatEvaluator rotationEvaluator = new FloatEvaluator(); 
    ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 1f); 
    valueAnimator.setDuration(TimeUnit.SECONDS.toMillis(1)); 
    valueAnimator.setInterpolator(new DecelerateInterpolator()); 
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
     @Override 
     public void onAnimationUpdate(ValueAnimator animation) { 
      float fraction = animation.getAnimatedFraction(); 
      float scale = scaleEvaluator.evaluate(fraction, 0f, 1f); 
      float rotation = rotationEvaluator.evaluate(fraction, 0f, 360f); 
      imageView.setScale(scale); 
      imageView.setRotation(rotation); 
     } 
    }); 
    valueAnimator.start(); 

スタート1人の以上アニメーターによるハッキングやロゴのアップをスライドさせ、この同じアニメーターを使用することができます。このアニメーターを使用すると、アニメーションを完全に制御できます。

1

ビューの表示を切り替えることができ、アニメーションが

imageAnim.setAnimationListener(new Animation.AnimationListener() { 
     @Override 
     public void onAnimationStart(Animation animation) { 
     image.setVisibility(View.VISIBLE); 
     } 

     @Override 
     public void onAnimationEnd(Animation animation) { 

     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 

     } 
    }); 

    image.startAnimation(imageAnim); 

を開始すると点滅は遠くから眺め視界ので起こりますアニメーションを開始するので、最初のフレームでは実際のサイズになり、その後はnimation

0

アルファを使って作業する必要があります。アルファを最小値に設定し、アルファをハンドラで徐々に最大値に設定するよりも、アルファを最小値に設定する必要があります。

関連する問題