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