我用了属性动画,但是在内存低的手机上跑了一下感觉卡卡的,但是贵金属的就不卡
,属性动画和补间动画相比效率上比较差吗,
这是我的代码
private void setFirstAnimation() {
if (firstAnimationState == 0) {
firstAnimationState = 1;
ObjectAnimator anim1 = ObjectAnimator.ofFloat(iv_first_calculator,
"x", PhoneParameterUtils.getScreenWidth() / 2f - 200f - 323f,
(PhoneParameterUtils.getScreenWidth() / 2f) - AppTools.dip2px(100)).setDuration(400);
anim1.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
AnimatorSet set = new AnimatorSet();
ObjectAnimator anim2 = ObjectAnimator.ofFloat(iv_first_ball,
"x", PhoneParameterUtils.getScreenWidth() / 2,
PhoneParameterUtils.getScreenWidth() / 2 + AppTools.dip2px(40)).setDuration(400);
ObjectAnimator anim3 = ObjectAnimator.ofFloat(iv_first_ball,
"y", PhoneParameterUtils.getScreenHeight() / 2 - AppTools.dip2px(120),
PhoneParameterUtils.getScreenHeight() / 2 - AppTools.dip2px(150)).setDuration(400);
set.playTogether(anim2, anim3);
set.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
iv_first_ball.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animator animator) {
AnimatorSet set = new AnimatorSet();
ObjectAnimator anim4 = ObjectAnimator.ofFloat(iv_first_man,
"x", PhoneParameterUtils.getScreenWidth(),
PhoneParameterUtils.getScreenWidth() / 2).setDuration(500);
ObjectAnimator anim5 = ObjectAnimator.ofFloat(iv_first_man,
"x", PhoneParameterUtils.getScreenWidth() / 2,
PhoneParameterUtils.getScreenWidth() / 2 + 10).setDuration(20);
ObjectAnimator anim6 = ObjectAnimator.ofFloat(iv_first_man,
"x", PhoneParameterUtils.getScreenWidth() / 2 + 10,
PhoneParameterUtils.getScreenWidth() / 2).setDuration(20);
set.playSequentially(anim4, anim5, anim6);
iv_first_man.setVisibility(View.VISIBLE);
set.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
firstAnimationState = 0;
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
set.start();
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
set.start();
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
anim1.start();
}
}
理由が分かりました。大きな画像をいくつか使用して、drawable-hdpi に入れました。申し訳ありません。
おそらく短いビデオです