0

私はandroid app、 のカスタムビューで作業していました。アニメーションを追加したところ、emulatorsでは滑らかでしたが、カスタムビューのアニメーションはエミュレータ上では滑らかですが、実際のデバイスでは不安定です

Emulator Animation

Device Animation

それはGIFをのように明確ではないですが、エミュレータは非常に滑らかです。使用されたデバイスは、それが役立つ場合はGalaxy Note 5でした。

public void animateLayout(){ 
    ValueAnimator valueAnimator = ValueAnimator.ofInt(25,displayHeight -initHeight); 
    valueAnimator.setDuration(1000); 
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
     @Override 
     public void onAnimationUpdate(ValueAnimator animation) { 
      layoutParams = new RelativeLayout.LayoutParams(getWidth(), initHeight + (int) animation.getAnimatedValue()); 
      setLayoutParams(layoutParams); 
     } 
    }); 
    valueAnimator.addListener(new Animator.AnimatorListener() { 
     @Override 
     public void onAnimationStart(Animator animation) { 

     } 

     @Override 
     public void onAnimationEnd(Animator animation) { 
      gameViewVisible = true; 
      animateArc(); 
     } 

     @Override 
     public void onAnimationCancel(Animator animation) { 

     } 

     @Override 
     public void onAnimationRepeat(Animator animation) { 

     } 
    }); 
    if(gameViewVisible == false) { 
     valueAnimator.start(); 
    } 


} 

public void animateArc(){ 
    ValueAnimator valueAnimator = ValueAnimator.ofInt(0,achievmentProgress); 
    valueAnimator.setDuration(achievmentProgress*(int)4.7); 
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
     @Override 
     public void onAnimationUpdate(ValueAnimator animation) { 
      achievmentDegrees = (int)animation.getAnimatedValue(); 
      invalidate(); 


     } 
    }); 
    valueAnimator.start(); 
} 

これらは私が使用するアニメーションです。

答えて

0

誰かがこれを理解しようとしている場合、ここで私が問題を解決するために行ったことがあります。すべてのビットマップ割り当てをonSizeChangedメソッドに移動しました。今では、これらのアニメーションで無効化を呼び出すたびに、大きなビットマップを再描画する必要がなくなり、すべてがよりスムーズになります。

0

アニメーションの再生時間を調整してみてください。アニメーションの時間を長くしてみてください。実際のデバイスでのレンダリングはエミュレータより高速です。

+0

試してみたところ、うまくいかなかった –