Added Collapsing appbar to library tabs with an option to switch back to simple appbar

This commit is contained in:
Prathamesh More 2022-01-15 15:07:11 +05:30
parent ffd251ab62
commit b2e1ab2128
12 changed files with 159 additions and 46 deletions

View file

@ -0,0 +1,59 @@
package code.name.monkey.retromusic.views
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.appcompat.widget.Toolbar
import code.name.monkey.retromusic.databinding.CollapsingAppbarLayoutBinding
import code.name.monkey.retromusic.databinding.SimpleAppbarLayoutBinding
import code.name.monkey.retromusic.util.PreferenceUtil
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.shape.MaterialShapeDrawable
class TopAppBarLayout @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = -1,
) : AppBarLayout(context, attrs, defStyleAttr) {
private var simpleAppbarBinding: SimpleAppbarLayoutBinding? = null
private var collapsingAppbarBinding: CollapsingAppbarLayoutBinding? = null
val mode: AppBarMode = PreferenceUtil.appBarMode
init {
if (mode == AppBarMode.COLLAPSING) {
collapsingAppbarBinding =
CollapsingAppbarLayoutBinding.inflate(LayoutInflater.from(context), this, true)
} else {
simpleAppbarBinding =
SimpleAppbarLayoutBinding.inflate(LayoutInflater.from(context), this, true)
statusBarForeground = MaterialShapeDrawable.createWithElevationOverlay(context)
}
}
val toolbar: Toolbar
get() = if (mode == AppBarMode.COLLAPSING) {
collapsingAppbarBinding?.toolbar!!
} else {
simpleAppbarBinding?.toolbar!!
}
var title: String
get() = if (mode == AppBarMode.COLLAPSING) {
collapsingAppbarBinding?.collapsingToolbarLayout?.title.toString()
} else {
simpleAppbarBinding?.appNameText?.text.toString()
}
set(value) {
if (mode == AppBarMode.COLLAPSING) {
collapsingAppbarBinding?.collapsingToolbarLayout?.title = value
} else {
simpleAppbarBinding?.appNameText?.text = value
}
}
enum class AppBarMode {
COLLAPSING,
SIMPLE
}
}