失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android开发RecyclerView刷新后item里面控件动画

Android开发RecyclerView刷新后item里面控件动画

时间:2024-01-21 11:01:26

相关推荐

Android开发RecyclerView刷新后item里面控件动画

项目中有个列表的item中有点赞动画,之前我用的列表框架是继承listview的,动画用起来一点问题都没有,现在列表框架是继承用的recyclerView,动画就卡主,百思不得其姐。

解决方法:

1.动画要放新线程中,最好加点延时操作。

2.我以为把1操作就解决问题,动画是能正常出来了,但测试来搞事情了,在动画出来的一瞬间,如果去滑动一下列表,动画有卡住了。

好了,接下来又的解决新的问题。

经过多次调试,发现动画onAnimationStart一定会执行,onAnimationEnd不执行。首先我是个显示隐藏动画。

然后我在想能在onAnimationStart做所有操作得了,结果验证还是可行的。

下面参考代码:

notifyDataSetChanged();//需要在其他线程执行,最好加点延迟操作new Handler().postDelayed(new Runnable() {@Overridepublic void run() {btnLikeAnimation(animView);}}, 300);/*** +1动画** @param plus_img*/private void btnLikeAnimation(final ImageView plus_img) {plus_img.clearAnimation();AnimationSet animationSet = new AnimationSet(true);TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, -150);AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f, 0.0f);animationSet.addAnimation(translateAnimation);animationSet.addAnimation(alphaAnimation);animationSet.setDuration(1200);animationSet.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {plus_img.setVisibility(View.VISIBLE);new Handler().postDelayed(new Runnable() {@Overridepublic void run() {plus_img.setVisibility(View.GONE);}}, 1200);}@Overridepublic void onAnimationEnd(Animation animation) {plus_img.setVisibility(View.GONE);}@Overridepublic void onAnimationRepeat(Animation animation) {}});plus_img.startAnimation(animationSet);}

好像有点投机取巧做法,如果你们有发现有其他方法记得评论

注:上面方法还是有缺陷,因为notifyDataSetChanged()不确定是否300毫秒就刷新完成了,如果没有刷新完,还是会造成控件错乱。

最最终的解决方案是:先动画完成后再去adapter更新数据

比如:

public void onAnimationEnd(Animation animation) {plus_img.setVisibility(View.GONE);iView.setMoodLike(moodId, !moodLike);}

如果觉得《Android开发RecyclerView刷新后item里面控件动画》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。