Guest User

Untitled

a guest
May 22nd, 2018
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.64 KB | None | 0 0
  1. class SickDrawerActionBarOnNavigatedListener(
  2. private val activity: AppCompatActivity,
  3. private val drawerLayout: DrawerLayout?,
  4. private val menuItems: Menu
  5. ) :
  6. NavController.OnNavigatedListener {
  7.  
  8. private var arrowDrawable: DrawerArrowDrawable? = null
  9.  
  10. private var animator: ObjectAnimator? = null
  11.  
  12. override fun onNavigated(controller: NavController, destination: NavDestination) {
  13. var isFromMenu = false
  14.  
  15. for (i in 0 until menuItems.size()) {
  16. if (menuItems.getItem(i).itemId == destination.id)
  17. isFromMenu = true
  18. }
  19.  
  20. activity.supportActionBar?.setDisplayHomeAsUpEnabled(drawerLayout != null || !isFromMenu)
  21. setActionBarUpIndicator(drawerLayout != null && isFromMenu)
  22. }
  23.  
  24. private fun setActionBarUpIndicator(showAsDrawerIndicator: Boolean) {
  25. val delegate = activity.drawerToggleDelegate
  26. var animate = true
  27. if (arrowDrawable == null) {
  28. arrowDrawable = DrawerArrowDrawable(delegate?.actionBarThemedContext).also {
  29. delegate?.setActionBarUpIndicator(it, 0)
  30. }
  31. delegate?.setActionBarUpIndicator(arrowDrawable, 0)
  32. animate = false
  33. }
  34.  
  35. arrowDrawable?.let {
  36. val endValue = if (showAsDrawerIndicator) 0f else 1f
  37. if (animate) {
  38. val startValue = it.progress
  39. animator?.cancel()
  40. animator = ObjectAnimator.ofFloat(
  41. it, "progress",
  42. startValue, endValue
  43. ).apply { start() }
  44. } else {
  45. it.progress == endValue
  46. }
  47. }
  48. }
  49. }
Add Comment
Please, Sign In to add comment