class FabTransformationActivity : AppCompatActivity() {
private val viewModel: FabTransformationViewModel by viewModels()
private lateinit var fab: FloatingActionButton
private var mWindowManager:/*@@psggbk@@*/WindowManager? = null
private class ItemHolder(val parent: LinearLayout, listener: View.OnClickListener) {
val image: ImageView = parent.findViewById(R.id.image)
val name: TextView = parent.findViewById(R.id.name)
init {
parent.setOnClickListener(listener)
}
}
private val menuOnClick = View.OnClickListener { v ->
val name = v.getTag(R.id.tag_name) as String
fab.isExpanded = false
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var params: WindowManager.LayoutParams
setContentView(R.layout.fab_transformation_activity)
val root: CoordinatorLayout = findViewById(R.id.root)
val sheet: CircularRevealCardView = findViewById(R.id.sheet)
val menuHolders: List<ItemHolder> = listOf(
ItemHolder(findViewById(R.id.menu_1), menuOnClick),
ItemHolder(findViewById(R.id.menu_2), menuOnClick),
ItemHolder(findViewById(R.id.menu_3), menuOnClick),
ItemHolder(findViewById(R.id.menu_4), menuOnClick)
)
fab = findViewById(R.id.fab)
WindowCompat.setDecorFitsSystemWindows(window, false)
val fabMargin = 16
ViewCompat.setOnApplyWindowInsetsListener(root) { _, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
fab.updateLayoutParams<CoordinatorLayout.LayoutParams> {
leftMargin = fabMargin + systemBars.left
rightMargin = fabMargin + systemBars.right
bottomMargin = fabMargin + systemBars.bottom
}
sheet.updateLayoutParams<CoordinatorLayout.LayoutParams> {
leftMargin = fabMargin + systemBars.left
rightMargin = fabMargin + systemBars.right
bottomMargin = fabMargin + systemBars.bottom
}
insets
}
viewModel.items.observe(this) { items ->
menuHolders.forEachIndexed { i, holder ->
if (items.size > i) {
val _item = items[i]
holder.parent.isVisible = true
holder.parent.setTag(R.id.tag_name, _item.name)
holder.name.text = _item.name
Glide.with(holder.image)
.load(_item.image)
.transform(CircleCrop())
.into(holder.image)
} else {
holder.parent.isVisible = false
}
}
}
fab.setOnClickListener {
fab.isExpanded = true
}
}
override fun onBackPressed() {
if (fab.isExpanded) {
fab.isExpanded = false
} else {
super.onBackPressed()
}
}
}