我正在尝试同时为多个图像视图应用多个动画。以下是代码段。
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中的任何替代方案。
提前致谢。
答案 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());
}
});
}