Add animation for "Open OsmAnd" button

This commit is contained in:
Alex Sytnyk 2018-08-06 13:10:47 +03:00
parent 37fa051bb9
commit 0456998a99

View file

@ -10,8 +10,8 @@ import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.animation.LinearInterpolator
import android.widget.ArrayAdapter
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import net.osmand.Location
@ -47,6 +47,8 @@ class LiveNowTabFragment : Fragment(), TelegramListener, TelegramIncomingMessage
private lateinit var adapter: LiveNowListAdapter
private lateinit var locationViewCache: UpdateLocationViewCache
private lateinit var openOsmAndBtn: View
private var location: Location? = null
private var heading: Float? = null
private var locationUiUpdateAllowed: Boolean = true
@ -66,15 +68,21 @@ class LiveNowTabFragment : Fragment(), TelegramListener, TelegramIncomingMessage
override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
locationUiUpdateAllowed = newState == RecyclerView.SCROLL_STATE_IDLE
when (newState) {
RecyclerView.SCROLL_STATE_DRAGGING -> animateOpenOsmAndBtn(false)
RecyclerView.SCROLL_STATE_IDLE -> animateOpenOsmAndBtn(true)
}
}
})
}
mainView.findViewById<Button>(R.id.open_osmand_btn).setOnClickListener {
val intent = activity?.packageManager?.getLaunchIntentForPackage(OsmandAidlHelper.OSMAND_PACKAGE_NAME)
if (intent != null) {
openOsmAndBtn = mainView.findViewById<View>(R.id.open_osmand_btn).apply {
setOnClickListener {
activity?.packageManager?.getLaunchIntentForPackage(OsmandAidlHelper.OSMAND_PACKAGE_NAME)
?.also { intent ->
startActivity(intent)
}
}
}
return mainView
}
@ -230,6 +238,16 @@ class LiveNowTabFragment : Fragment(), TelegramListener, TelegramIncomingMessage
}
}
private fun animateOpenOsmAndBtn(show: Boolean) {
val scale = if (show) 1f else 0f
openOsmAndBtn.animate()
.scaleX(scale)
.scaleY(scale)
.setDuration(200)
.setInterpolator(LinearInterpolator())
.start()
}
inner class LiveNowListAdapter : RecyclerView.Adapter<BaseViewHolder>() {
private val menuList =