저는 지난 몇 시간 동안 애니메이션에서 몇 개의 드롭 된 프레임을 수정하려고했습니다. 애니메이션을 처음 실행하면 ~ 5 프레임 (동일한보기의 후속 애니메이션은 매우 매끄럽습니다). 나는 애니메이션을 사용하는 동안 하드웨어 레이어를 사용하려고 시도했지만 작동하지 않았다 (애니메이션에는 차이가 없음). 소프트웨어 레이어를 사용하면 프레임이 떨어지는 문제를 해결할 수 있습니다.애니메이션보기를 사용하는 동안 하드웨어 레이어 사용
그러나 소프트웨어 레이어를 사용하면 애니메이션이 하드웨어 레이어를 사용하는 것만 큼 부드럽지 않고 레이어가없는 느낌 (과학적 테스트는없고 내 머리 속에있을 수도 있음)을 얻습니다. 첫 번째 것은 물론 뒤쳐져있다.)
그래서이 문제를 어떻게 해결할 수 있을지 궁금합니다. 처음으로 소프트웨어 레이어를 사용하여 애니메이션을 렌더링하고 이후 애니메이션에서 레이어를 사용하지 못하게 할 수 있지만 그럴 수는 없습니다.
final View v = .....;
v.setLayerType(View.LAYER_TYPE_HARDWARE, null);
v.buildLayer();
ValueAnimator anim = ValueAnimator.ofFloat(0, 180);
anim.setInterpolator(new AccelerateDecelerateInterpolator());
anim.setDuration(250);
anim.addUpdateListener(new AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
Float animatedValue = (Float) animation.getAnimatedValue();
v.setRotation(animatedValue);
}
});
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
v.setLayerType(View.LAYER_TYPE_NONE, null);
}
});
anim.start();
몇 가지 추가 정보 뷰 가시성이 View.INVISIBLE 인 경우 레이어를 생성합니다. 대신 v.setAlpha (0)을 사용하면 애니메이션에서 지연이 더 이상 발생하지 않습니다. –