Android图片视图动画很慢

时间:2016-02-10 04:17:04

标签: java android performance android-animation

我正在尝试同时为多个图像视图应用多个动画。以下是代码段。

    final AnimatorSet animationSet = new AnimatorSet();
            for(int i=0;i<frame.getChildCount();i++){
                final ImageView vw = (ImageView) frame.getChildAt(i);

                animationSet.playTogether(
                        ObjectAnimator.ofFloat(vw, "rotationY", 60),
                        ObjectAnimator.ofFloat(vw, "scaleY", 0.8f),
                        ObjectAnimator.ofFloat(vw, "x", 0)
                );
                animationSet.setDuration(600);
                animationSet.setInterpolator(new DecelerateInterpolator(1.5f));
                animationSet.start();

这会在滑动时应用于每个项目。

当我在屏幕上滑动时,图像会生成动画。当图像数量增加时,此动画非常慢。我试过提供以下

1.添加图层类型并在动画结束时设置为空

2.Tried在Manifest中设置hardwareaccelerated aattribute

3.在清单

中设置大堆属性

4.为项目添加动画缓存。

5.使用高RAM设备运行。

是否有任何选项可以改善动画性能或android中的任何替代方案。

提前致谢。

1 个答案:

答案 0 :(得分:2)

使用ViewPropertyAnimator。 它可能是动画视图最简单的方法,通常非常流畅。对于你的例子,它将是这样的:

vw.animate()
    .rotationY(60)
    .scaleY(0.8f)
    .setDuration(600)
    .setInterpolator(new DecelerateInterpolator());

检查所有可用方法的documentation

编辑: 如果多个动画同时滞后,请尝试使用Handler它将为您处理线程,并应使其更顺畅。 像这样:

private Handler mHandler = new Handler();

for(int i=0;i<frame.getChildCount();i++){
    final ImageView vw = (ImageView) frame.getChildAt(i);

     mHandler.post(new Runnable() {
       @Override
       public void run () {
           vw.animate()
                .rotationY(60)
                .scaleY(0.8f)
                .setDuration(600)
                .setInterpolator(new DecelerateInterpolator());

           }
       });
    }