0

android app, 에 대한 사용자 지정보기에서 작업했습니다. 애니메이션을 추가했는데 실제 전화에서 볼 때 부드럽고 emulators에서 거친 것으로 나타났습니다.사용자 지정보기 애니메이션은 에뮬레이터에서 부드럽지만 실제 장치에서는 고르지 않습니다

Emulator Animation

Device Animation

그것은 GIF를 같이 명확하지 않지만 에뮬레이터가 훨씬 부드럽게이다. 이 장치가 도움이된다면 갤럭시 노트 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

시도해 보았습니다. 작동하지 않았습니다. –