首页 > 代码库 > 给listview加动画,让动画执行结束后再刷新
给listview加动画,让动画执行结束后再刷新
问题:当给listview的条目加动画时,例如添加一个条目或者移除一个条目,动画效果会和添加删除条目的逻辑同时进行,因为动画并不是阻塞式的,这样会造成动画还没有结束,条目已经添加或者移除,从而动画作用在下面一个条目上面。
解决办法:想办法让动画执行完了之后再进行条目的添加或者移除操作(也就是刷新数据适配器),可以通过设置动画监听来实现,将要添加或者删除条目的逻辑放到动画监听的方法中,可以放到动画结束时调用的方法中,这样就保证了动画先执行,然后才刷新数据适配器
holder.iv_lock.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 添加动画效果 animationView.startAnimation(mTranslateAnimation); // 对动画执行过程做事件监听,监听到动画执行完成后,再去移除集合中的数据,操作数据库,刷新界面 mTranslateAnimation.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { // 动画开始的时候调用 } @Override public void onAnimationRepeat(Animation animation) { // 动画重复的时候调用 } @Override public void onAnimationEnd(Animation animation) { // 动画结束的时候调用 if (isLock) { // 已加锁------>未加锁 // 1.已加锁集合删除一个,未加锁集合添加一个,对象就是getItem方法获取的对象 mAppLockList.remove(appInfo); mAppUnLockList.add(appInfo); // 2.从已加锁的数据库中删除一条数据 mDao.delete(appInfo.packageName); // 3.刷新数据适配器 mLockAdapter.notifyDataSetChanged(); }else { // 未加锁------>已加锁 // 1.未加锁集合删除一个,已加锁集合添加一个,对象就是getItem方法获取的对象 mAppLockList.add(appInfo); mAppUnLockList.remove(appInfo); // 2.从已加锁的数据库中插入一条数据 mDao.insert(appInfo.packageName); // 3.刷新数据适配器 mUnLockAdapter.notifyDataSetChanged(); } } }); } });
给listview加动画,让动画执行结束后再刷新
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。