标签:animation android-imageview android
我正在尝试创建类似于instagram双击动画的动画,其中,心脏在淡入时从中心放大,然后保持一点点可见,然后在淡出时从中心缩小.
我正在使用此动画:
public void animateHeart(final ImageView view) {
AnimationSet animation = new AnimationSet(true);
animation.addAnimation(new AlphaAnimation(0.0f, 1.0f));
animation.addAnimation(new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f));
animation.setDuration(700);
animation.setRepeatMode(Animation.REVERSE);
view.startAnimation(animation);
}
它对于出现的动画效果很好,但是动画不会反转.
另外,我只希望它动画一次.
有人可以告诉我我在做什么错吗?
提前致谢.
解决方法:
您只用代码开始一个Scale和Alpha动画.
这行:
animation.setRepeatMode(Animation.REVERSE);
显然在AnimationSet中效果不佳,因此您必须将其分别应用于每个Animation.我会推荐这样的东西:
public void animateHeart(final ImageView view) {
ScaleAnimation scaleAnimation = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
prepareAnimation(scaleAnimation);
AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);
prepareAnimation(alphaAnimation);
AnimationSet animation = new AnimationSet(true);
animation.addAnimation(alphaAnimation);
animation.addAnimation(scaleAnimation);
animation.setDuration(700);
animation.setFillAfter(true);
view.startAnimation(animation);
}
private Animation prepareAnimation(Animation animation){
animation.setRepeatCount(1);
animation.setRepeatMode(Animation.REVERSE);
return animation;
}
不要忘记
animation.setFillAfter(true);
否则,当动画结束时,您的心会再次出现.
标签:animation,android-imageview,android 来源: https://codeday.me/bug/20191027/1944459.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。