歌单是用一个Activity来显示
预览
new add

歌单这页实现功能有两个点分享
共享元素过渡动画
kotlin
1 | itemView.apply { |
取色
跳进不同专辑歌单,StatusBar背景色动态改变采用Palette
取色修正,加载Image是用了coil
kotlin
1 | val request = ImageRequest.Builder(this@PlayListActivity) |
起先这里我是使用了模糊效果,但效果不太好看,还是取色更贴近
弧线
由图片可以看到底部的弧线,我是通过重写了AppCompatImageView
再通过Xfermode
来剪切来实现的,有了主要想法那就好说了
首先要有一个弧度轮廓来填装图片,通过Path画出来
kotlin
1 | override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { |
然后就是通过PorterDuff.Mode.SRC_IN
剪切交集部分留下Src
完成图片就剪切
kotlin
1 | private val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply { |
补:滚动时恢复原图片
kotlin
1 | appBar.addOnOffsetChangedListener(object : AppBarStateChangeListener() { |
参考
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2016/0816/6543.html
https://developer.android.com/guide/topics/renderscript/compute.html
https://github.com/coil-kt/coil
https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.java