1.实战(音乐播放器)
(1)读取本地音乐文件。
(2)数据写入recycleView,并采用glide加载对应的图片。
(3)点击recycleView的item,跳转音乐播放器。
(4)通过service管理对应音乐的播放,seekBar处理拖动音乐进度条。
(5)加入播放暂停轮盘动画,使用fresco加载封面图。
(6)使用ViewPager2+fragment,处理左右滑切换音乐。
(7)使用notification,每次播放器状态更新的时候,发送一条通知覆盖原有通知。
(8)通知点击事件,使用广播形式,更新对应的内容,布局对remoteView进行布局。
2.实战(弹幕实现)
(1)滑动弹幕
弹幕属性:出现事件,颜色。
(2)悬停弹幕
展示一段时间后消失。
(3)容器View
轨道数量,add,remove。
(4)弹幕调度
抽象的洗牌算法,解决弹幕分布不均匀。
(5)弹幕缓存池
离屏弹幕缓存,优先复用缓存池的内容。判断对象是否在池子里,采用ConcurrentHashMap存储,通过key索引到对应的对象。
LinkedList实现对象的释放,只存储对应的key值,新来对象push到尾部,保证按照时间加入,处理对应O(1)操作。
(6)动画处理
canvas绘画,弹幕对应的px超出屏幕丢入复用池。