2015-09-04 41 views
1

我用下面的类在我的应用程序中发挥动画。当视图树很简单时,这很有效。而当我在一个复杂的片段中使用它时(即可能透视图),它会卡住。有什么办法来优化效率?我听说过使用表面视图并控制我Activity的重绘区域,但我需要一些示例。非常感谢。ValueAnimator滞后设定时保证金改变

这是我的代码

private ValueAnimator performAnim(final View target1, final int start, final int end, final int duration) { 
    ValueAnimator valueAnimator = ValueAnimator.ofInt(0, duration); 

    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 

     private IntEvaluator mEvaluator = new IntEvaluator(); 

     @Override 
     public void onAnimationUpdate(ValueAnimator animator) { 
      Integer currentValue = (Integer) animator.getAnimatedValue(); 
      float rate = currentValue/((float)duration); 
      Log.d("zcc", "currentValue" + currentValue); 
      int value = mEvaluator.evaluate(rate, start, end); 
      Log.d("zcc", "+" + value + "start : "+ start + " end : "+ end + " duration : " + duration); 
      ((LayoutParams) target1.getLayoutParams()).leftMargin = value; 
      target1.requestLayout(); 
     } 
    }); 

    valueAnimator.setDuration(duration); 
    return valueAnimator; 
} 
+0

你为什么不动画“translationX” /“X”目标1的财产? – pskink

+0

有没有效率差异?我会尝试你的建议。 – zccneil

+0

其实,我想要的是规模的目标, – zccneil

回答

0

requestLayout()方法将测量和布局的意见。因此,效率很低。我现在使用的invalid()方法将只重绘我改变的视图。希望这可以帮助别人