Aggiunta icona app.

Fixato bug su WaterfallToolbar.
This commit is contained in:
2019-02-06 17:18:19 +01:00
parent 80625d5bc1
commit ddd2d6b803
9 changed files with 2192 additions and 26 deletions

View File

@@ -8,6 +8,7 @@ import androidx.annotation.RequiresApi
import androidx.core.widget.NestedScrollView
import android.util.AttributeSet
import android.view.View
import android.view.ViewTreeObserver
import android.widget.ScrollView
import androidx.recyclerview.widget.RecyclerView
@@ -33,6 +34,15 @@ open class WaterfallToolbar : androidx.cardview.widget.CardView {
addRecyclerViewScrollListener()
}
var recyclerViewScrollListener : RecyclerView.OnScrollListener = object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
// real position must always get updated
realPosition.value = realPosition.value + dy
mutualScrollListenerAction()
}
}
/**
* The scroll view whose scroll is going to be listened
*/
@@ -42,15 +52,27 @@ open class WaterfallToolbar : androidx.cardview.widget.CardView {
addScrollViewScrollListener()
}
var scrollViewScrollListener : ViewTreeObserver.OnScrollChangedListener = ViewTreeObserver.OnScrollChangedListener {
// real position must always get updated
realPosition.value = scrollView!!.scrollY
mutualScrollListenerAction()
}
/**
* The scroll view whose scroll is going to be listened
*/
var nestedScrollView: NestedScrollView? = null
set(value) {
field = value
addNestedScrollViewScrollListener()
if (value != null) addNestedScrollViewScrollListener()
}
var nestedScrollViewScrollListener : ViewTreeObserver.OnScrollChangedListener = ViewTreeObserver.OnScrollChangedListener {
// real position must always get updated
realPosition.value = nestedScrollView!!.scrollY
mutualScrollListenerAction()
}
/**
* The three variables ahead are null safe, since they are always set
* at least once in init() and a null value can't be assigned to them
@@ -144,11 +166,24 @@ open class WaterfallToolbar : androidx.cardview.widget.CardView {
init(context, attrs)
}
public fun resetElevation() {
fun resetElevation() {
realPosition = Px(0)
cardElevation = 0f
}
fun resetAll() {
resetElevation()
removeNestedScrollViewScrollListener()
nestedScrollView = null
removeRecyclerViewScrollListener()
recyclerView = null
removeScrollViewScrollListener()
scrollView = null
}
private fun init(context: Context?, attrs: AttributeSet?) {
// leave card corners square
radius = 0f
@@ -183,29 +218,27 @@ open class WaterfallToolbar : androidx.cardview.widget.CardView {
}
private fun addRecyclerViewScrollListener() {
recyclerView?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
// real position must always get updated
realPosition.value = realPosition.value + dy
mutualScrollListenerAction()
}
})
recyclerView?.addOnScrollListener(recyclerViewScrollListener)
}
private fun removeRecyclerViewScrollListener() {
recyclerView?.removeOnScrollListener(recyclerViewScrollListener)
}
private fun addScrollViewScrollListener() {
scrollView?.viewTreeObserver?.addOnScrollChangedListener {
// real position must always get updated
realPosition.value = scrollView!!.scrollY
mutualScrollListenerAction()
}
scrollView?.viewTreeObserver?.addOnScrollChangedListener(scrollViewScrollListener)
}
private fun removeScrollViewScrollListener() {
scrollView?.viewTreeObserver?.removeOnScrollChangedListener(scrollViewScrollListener)
}
private fun addNestedScrollViewScrollListener() {
nestedScrollView?.viewTreeObserver?.addOnScrollChangedListener {
realPosition.value = nestedScrollView!!.scrollY
mutualScrollListenerAction()
}
nestedScrollView?.viewTreeObserver?.addOnScrollChangedListener(nestedScrollViewScrollListener)
}
private fun removeNestedScrollViewScrollListener() {
nestedScrollView?.viewTreeObserver?.removeOnScrollChangedListener(nestedScrollViewScrollListener)
}
/**