登录

去注册 忘记密码?

登录

注册

去登录

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

注册

解锁回答区域

  • 扫码关注公众号
  • 发送“我爱安卓

若你登陆,将永久解锁;
若未登录,仅本机解锁。

解锁回答区域

获取注册验证码

  • 扫码关注公众号
  • 发送“我爱安卓
  • 即可获取验证码

Jetpack Compose网抑云

sskEvan   2024-01-22 22:26   收藏

NCMusic

小明平时喜欢听歌,听歌喜欢用网易云,因为觉得网易云用户体验good good good,俺也觉得。
然后今年年初在公司项目尝试接入Compose。为了更加熟悉Compose,俺就寻思着撸个小项目练练手,既然网易云用户体验good good good,那就仿写几个网易云的页面试试水吧。接着就发现有一些页面的交互效果实现起来并没有很简单,例如我的页面列表滑动时和TabLayout的联动以及下拉到顶部后无缝过渡到个人中心页面、歌曲播放页面切歌的效果等。
项目采用单Activity+ComposeNavigation进行路由跳转,接口数据来源于Binaryify
大佬的NeteaseCloudMusicApi;
使用MVVM开发模式,封装了页面状态组件ViewStateComponent;
Compose版本为1.3.0,升级Compose版本为1.3.0后,发现官方支持瀑布流了,把云村的视频列表改成瀑布流样式,发现以前网上抄的上拉分页方式在瀑布流列表中不能很好的工作,决定重新自定义一个RefreshLayout组件来支持Compose的下拉刷新、上拉加载更多。并结合paging3封装ViewStateListPagingComponent(列表样式)、ViewStateStaggeredGridPagingComponent(瀑布流样式),统一处理列表页首次加载页面状态的切换,以及触发下拉刷新/上拉加载更多动作时header/footer各种状态的切换。使用伪代码如下:


ViewStateListPagingComponent(key = "your key",
loadDataBlock = { // 获取列表数据源 }) { itemDatas ->
itemsIndexed(itemDatas) { index, item ->
// 具体列表item样式
}
}

支持主题切换
...

主要开源框架

APK下载地址

https://www.pgyer.com/ku0P

效果图

img
img

项目地址:https://github.com/sskEvan/NCMusic