AnimationDrawable在listview中的播放item小喇叭—最优方式

开发中遇到多重嵌套的recyclerview中的item要播放语音,要求对小喇叭做一个图标切换的补间动画。
废话不多说了直接上代码:

mFirstVoicePlayItem//第一级列表的喇叭动画初始位置
mSecondVoicePlayItem//第二级列表的喇叭动画初始位置
position//当前列表的位置
iconPlayIV//喇叭显示控件


                     mSecondVoicePlayItem = -1;
                            if (mAnimationDrawable != null) {
                                mAnimationDrawable.stop();
                                mAnimationDrawable.selectDrawable(0);
                                mAnimationDrawable = null;

                                if (mFirstVoicePlayItem != position) {
                                    mFirstVoicePlayItem = position;
                                    iconPlayIV.setImageResource(R.drawable.icon_play_animation);
                                    mAnimationDrawable = (AnimationDrawable) iconPlayIV.getDrawable();
                                    mAnimationDrawable.start();
                                }

                            } else {
                                mFirstVoicePlayItem = position;
                                iconPlayIV.setImageResource(R.drawable.icon_play_animation);
                                mAnimationDrawable = (AnimationDrawable) iconPlayIV.getDrawable();
                                mAnimationDrawable.start();
                            }

这里不上全部代码,因为这一类的AnimationDrawable动画效果加载的资源很小,不同于我上一篇转载文章针对于大的资源动画出现的问题,不需要Handler。这里主要的代码很简单,但是逻辑要理清,因为多重的嵌套item的位置positon是可重复的,所以要给最外层的recyclerview的item设置一直标识,不同的recyclerview点击事件都要先去把其他的recyclerview的item标识重置掉,避免不同列表的item点击需要点击2下动画播放问题。思路是这个动画开始结束都在控件触发事件是进行,同时用MediaPlayer播放,在MediaPlayer播放的监听中都要处理好关于这个动画的关闭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值