Android 动画仅在Galaxy Mega 2手机上滞后

Android 动画仅在Galaxy Mega 2手机上滞后,android,animation,android-animation,Android,Animation,Android Animation,我创建了一个滑动抽屉动画,可以同时打开/关闭和增长/收缩。我使用的是ValueAnimator,在AnimatorUpdateListener中,我操纵视图的边距来增加或减小(增大/缩小)视图的大小。同时,ValueAnimator正在处理打开和关闭。对于Galaxy Mega 2手机来说,这个动画非常多变;一点也不顺利。所有其他的手机,不管是旧的还是新的,似乎都能正常工作。有什么办法可以解决这个问题吗 // close drawer ValueA

我创建了一个滑动抽屉动画,可以同时打开/关闭和增长/收缩。我使用的是ValueAnimator,在AnimatorUpdateListener中,我操纵视图的边距来增加或减小(增大/缩小)视图的大小。同时,ValueAnimator正在处理打开和关闭。对于Galaxy Mega 2手机来说,这个动画非常多变;一点也不顺利。所有其他的手机,不管是旧的还是新的,似乎都能正常工作。有什么办法可以解决这个问题吗

            // close drawer
            ValueAnimator animator = ValueAnimator.ofInt(0, 100);
            animator.setInterpolator(new AccelerateInterpolator());
            animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

                @Override
                public void onAnimationUpdate(ValueAnimator animation) {
                    float ratio = ((Integer) animation.getAnimatedValue() / 100);

                    // moves the drawer to the left and reduces its size by changing its margins
                    mDrawerParams.setMargins((int) (mLeftMargin * ratio), (Integer) animation.getAnimatedValue(),
                            0, (Integer) animation.getAnimatedValue());
                    rlDrawer.setLayoutParams(mDrawerParams);
}
这是我打开抽屉的方法

            // open drawer
            ValueAnimator animator = ValueAnimator.ofInt(100, 0);
            animator.setInterpolator(new AccelerateInterpolator());
            animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

                @Override
                public void onAnimationUpdate(ValueAnimator animation) {
                    float ratio = ((Integer) animation.getAnimatedValue() / 100);

                    // moves the drawer to the right and increases its size by changing its margins
                    mDrawerParams.setMargins((int) (mLeftMargin * ratio), (Integer) animation.getAnimatedValue(),
                            0, (Integer) animation.getAnimatedValue());
                    rlDrawer.setLayoutParams(mDrawerParams);
}

如果更改了layoutParams,则在名为onRequesLayout的视图中会出现延迟。您需要更改属性。更改平移、缩放、缩放属性。例如:

Animator animator = ObjectAnimator.ofFloat(drawerLayout, View.TRANSLATION_X, 0, (float) );