【问题标题】:Custom View animations are smooth on emulators but choppy on real devices自定义视图动画在模拟器上流畅,但在真实设备上不稳定
【发布时间】:2017-12-27 09:52:32
【问题描述】:

我一直在为android app 开发自定义视图, 我添加了动画,发现在emulators上很流畅,但在真机上却很粗糙;

在 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();
}

这些是我使用的动画,感谢任何帮助。

【问题讨论】:

    标签: java android android-layout android-animation android-custom-view


    【解决方案1】:

    尝试调整动画持续时间。尝试增加动画持续时间。因为在真机上渲染比模拟器快。

    【讨论】:

      【解决方案2】:

      因此,如果有人试图解决这个问题,这就是我为解决问题所做的工作。我将所有位图分配移至 onSizeChanged 方法。现在每次我在这些动画中调用 invalidate 时,它​​都不必重新绘制大的位图,并且周围更平滑。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        • 2013-07-11
        • 2016-05-29
        • 1970-01-01
        • 2016-02-14
        • 1970-01-01
        • 2014-09-03
        相关资源
        最近更新 更多