Remove up/down animation for FAB, add list padding (#2456)
This commit is contained in:
		
							parent
							
								
									6025b44e5b
								
							
						
					
					
						commit
						e411f54236
					
				| @ -1,35 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.widget | ||||
| 
 | ||||
| import androidx.coordinatorlayout.widget.CoordinatorLayout | ||||
| import com.google.android.material.floatingactionbutton.FloatingActionButton | ||||
| import androidx.core.view.ViewCompat | ||||
| import android.view.View | ||||
| 
 | ||||
| abstract class FABAnimationBase : FloatingActionButton.Behavior() { | ||||
| 
 | ||||
|     var isAnimatingOut = false | ||||
| 
 | ||||
|     override fun onStartNestedScroll(coordinatorLayout: CoordinatorLayout, child: FloatingActionButton, | ||||
|                                      directTargetChild: View, target: View, axes: Int, type: Int): Boolean { | ||||
|         // Ensure we react to vertical scrolling | ||||
|         return axes == ViewCompat.SCROLL_AXIS_VERTICAL || | ||||
|                 super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, axes, type) | ||||
|     } | ||||
| 
 | ||||
|     override fun onNestedScroll(coordinatorLayout: CoordinatorLayout, child: FloatingActionButton, | ||||
|                                 target: View, dxConsumed: Int, dyConsumed: Int, dxUnconsumed: Int, | ||||
|                                 dyUnconsumed: Int, type: Int) { | ||||
|         super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, type) | ||||
| 
 | ||||
|         if (dyConsumed > 0 && !isAnimatingOut && child.visibility == View.VISIBLE) { | ||||
|             // User scrolled down and the FAB is currently visible -> hide the FAB | ||||
|             animateOut(child) | ||||
|         } else if (dyConsumed < 0 && child.visibility != View.VISIBLE) { | ||||
|             // User scrolled up and the FAB is currently not visible -> show the FAB | ||||
|             animateIn(child) | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     abstract fun animateOut(button: FloatingActionButton) | ||||
|     abstract fun animateIn(button: FloatingActionButton) | ||||
| } | ||||
| @ -1,51 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.widget | ||||
| 
 | ||||
| import android.content.Context | ||||
| import com.google.android.material.floatingactionbutton.FloatingActionButton | ||||
| import androidx.interpolator.view.animation.FastOutSlowInInterpolator | ||||
| import android.util.AttributeSet | ||||
| import android.view.View | ||||
| import android.view.animation.Animation | ||||
| import android.view.animation.AnimationUtils | ||||
| import eu.kanade.tachiyomi.R | ||||
| 
 | ||||
| @Suppress("unused", "UNUSED_PARAMETER") | ||||
| class FABAnimationUpDown @JvmOverloads constructor(ctx: Context, attrs: AttributeSet? = null) : FABAnimationBase() { | ||||
| 
 | ||||
|     private val INTERPOLATOR = FastOutSlowInInterpolator() | ||||
| 
 | ||||
|     private val outAnimation by lazy { | ||||
|         AnimationUtils.loadAnimation(ctx, R.anim.fab_hide_to_bottom).apply { | ||||
|             duration = 200 | ||||
|             interpolator = INTERPOLATOR | ||||
|         } | ||||
|     } | ||||
|     private val inAnimation by lazy { | ||||
|         AnimationUtils.loadAnimation(ctx, R.anim.fab_show_from_bottom).apply { | ||||
|             duration = 200 | ||||
|             interpolator = INTERPOLATOR | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     override fun animateOut(button: FloatingActionButton) { | ||||
|         outAnimation.setAnimationListener(object : Animation.AnimationListener { | ||||
|             override fun onAnimationStart(animation: Animation) { | ||||
|                 isAnimatingOut = true | ||||
|             } | ||||
| 
 | ||||
|             override fun onAnimationEnd(animation: Animation) { | ||||
|                 isAnimatingOut = false | ||||
|                 button.visibility = View.INVISIBLE | ||||
|             } | ||||
| 
 | ||||
|             override fun onAnimationRepeat(animation: Animation) { | ||||
|             } | ||||
|         }) | ||||
|         button.startAnimation(outAnimation) | ||||
|     } | ||||
| 
 | ||||
|     override fun animateIn(button: FloatingActionButton) { | ||||
|         button.visibility = View.VISIBLE | ||||
|         button.startAnimation(inAnimation) | ||||
|     } | ||||
| } | ||||
| @ -6,12 +6,13 @@ | ||||
|              android:layout_height="match_parent"> | ||||
| 
 | ||||
|     <androidx.recyclerview.widget.RecyclerView | ||||
|         android:id="@+id/recycler" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="match_parent" | ||||
|         android:id="@+id/recycler" | ||||
|         android:choiceMode="multipleChoice" | ||||
|         tools:listitem="@layout/categories_item" | ||||
|         /> | ||||
|         android:paddingBottom="@dimen/fab_list_padding" | ||||
|         android:clipToPadding="false" | ||||
|         tools:listitem="@layout/categories_item" /> | ||||
| 
 | ||||
|     <com.google.android.material.floatingactionbutton.FloatingActionButton | ||||
|         android:id="@+id/fab" | ||||
|  | ||||
| @ -28,6 +28,8 @@ | ||||
|             android:layout_height="match_parent" | ||||
|             android:layout_marginLeft="16dp" | ||||
|             android:layout_marginRight="16dp" | ||||
|             android:paddingBottom="@dimen/fab_list_padding" | ||||
|             android:clipToPadding="false" | ||||
|             android:descendantFocusability="blocksDescendants" | ||||
|             tools:listitem="@layout/chapters_item"> | ||||
| 
 | ||||
|  | ||||
| @ -6,9 +6,11 @@ | ||||
|     <dimen name="margin_bottom">16dp</dimen> | ||||
|     <dimen name="margin_left">16dp</dimen> | ||||
|     <dimen name="margin_right">16dp</dimen> | ||||
|     <dimen name="fab_margin">16dp</dimen> | ||||
|     <dimen name="space_between_cards">4dp</dimen> | ||||
| 
 | ||||
|     <dimen name="fab_size">56dp</dimen> | ||||
|     <dimen name="fab_margin">16dp</dimen> | ||||
|     <dimen name="fab_list_padding">88dp</dimen> | ||||
| 
 | ||||
|     <dimen name="dialog_content_padding">24dp</dimen> | ||||
|     <dimen name="dialog_margin_top_content">20dp</dimen> | ||||
|  | ||||
| @ -145,7 +145,6 @@ | ||||
|         <item name="android:scaleType">fitCenter</item> | ||||
|         <item name="layout_anchorGravity">bottom|right|end</item> | ||||
|         <item name="android:tint">@color/md_white_1000</item> | ||||
|         <item name="layout_behavior">eu.kanade.tachiyomi.widget.FABAnimationUpDown</item> | ||||
|     </style> | ||||
| 
 | ||||
|     <style name="Theme.Widget.CardView" parent="CardView"> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 arkon
						arkon