Parcourir la source

MaterialFastScroll updates

arkon il y a 4 ans
Parent
commit
d86d861e4b

+ 7 - 3
app/src/main/java/eu/kanade/tachiyomi/ui/library/MaterialFastScroll.kt

@@ -5,7 +5,7 @@ import android.util.AttributeSet
 import android.view.MotionEvent
 import eu.davidea.fastscroller.FastScroller
 import eu.kanade.tachiyomi.R
-import eu.kanade.tachiyomi.util.system.dpToPx
+import eu.kanade.tachiyomi.util.system.dpToPxEnd
 
 class MaterialFastScroll @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
     FastScroller(context, attrs) {
@@ -14,6 +14,8 @@ class MaterialFastScroll @JvmOverloads constructor(context: Context, attrs: Attr
         setViewsToUse(
             R.layout.material_fastscroll, R.id.fast_scroller_bubble, R.id.fast_scroller_handle
         )
+        autoHideEnabled = true
+        ignoreTouchesOutsideHandle = true
     }
 
     override fun onTouchEvent(event: MotionEvent): Boolean {
@@ -23,7 +25,9 @@ class MaterialFastScroll @JvmOverloads constructor(context: Context, attrs: Attr
 
     override fun setBubbleAndHandlePosition(y: Float) {
         super.setBubbleAndHandlePosition(y)
-        bubble.y = handle.y - bubble.height / 2f + handle.height / 2f
-        bubble.translationX = (-45).dpToPx.toFloat()
+        if (bubbleEnabled) {
+            bubble.y = handle.y - bubble.height / 2f + handle.height / 2f
+            bubble.translationX = (-45f).dpToPxEnd
+        }
     }
 }

+ 13 - 0
app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt

@@ -13,6 +13,7 @@ import android.graphics.Color
 import android.net.ConnectivityManager
 import android.net.Uri
 import android.os.PowerManager
+import android.view.View
 import android.widget.Toast
 import androidx.annotation.AttrRes
 import androidx.annotation.ColorInt
@@ -129,6 +130,18 @@ val Int.pxToDp: Int
 val Int.dpToPx: Int
     get() = (this * Resources.getSystem().displayMetrics.density).toInt()
 
+/**
+ * Converts to px and takes into account LTR/RTL layout.
+ */
+val Float.dpToPxEnd: Float
+    get() = (
+        this * Resources.getSystem().displayMetrics.density *
+            if (Resources.getSystem().isLTR) 1 else -1
+        )
+
+val Resources.isLTR
+    get() = configuration.layoutDirection == View.LAYOUT_DIRECTION_LTR
+
 /**
  * Property to get the notification manager from the context.
  */

+ 1 - 1
app/src/main/res/drawable/material_bubble_drawable.xml

@@ -2,7 +2,7 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
     <corners android:radius="38dp" />
-    <solid android:color="?colorPrimaryVariant" />
+    <solid android:color="?attr/colorPrimaryVariant" />
     <size
         android:width="30dp"
         android:height="30dp" />

+ 1 - 2
app/src/main/res/layout/chapters_controller.xml

@@ -39,8 +39,7 @@
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
         android:layout_centerHorizontal="true"
-        android:layout_gravity="right"
-        android:layoutDirection="ltr"
+        android:layout_gravity="end"
         app:fastScrollerBubbleEnabled="false"
         tools:visibility="visible" />
 

+ 1 - 2
app/src/main/res/layout/extension_controller.xml

@@ -22,8 +22,7 @@
         android:id="@+id/fast_scroller"
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
-        android:layout_gravity="right"
-        android:layoutDirection="ltr"
+        android:layout_gravity="end"
         app:fastScrollerBubbleEnabled="false"
         tools:visibility="visible" />
 

+ 1 - 2
app/src/main/res/layout/library_category.xml

@@ -15,8 +15,7 @@
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
         android:layout_centerHorizontal="true"
-        android:layout_gravity="right"
-        android:layoutDirection="ltr"
+        android:layout_gravity="end"
         app:fastScrollerBubbleEnabled="false"
         tools:visibility="visible" />
 

+ 2 - 11
app/src/main/res/layout/material_fastscroll.xml

@@ -9,7 +9,7 @@
         android:layout_width="7dp"
         android:layout_height="match_parent"
         android:layout_gravity="end"
-        android:background="@android:color/transparent" />
+        android:background="@null" />
 
     <RelativeLayout
         android:layout_width="wrap_content"
@@ -19,19 +19,10 @@
         <!-- No margin, use padding at the handle -->
         <com.google.android.material.textview.MaterialTextView
             android:id="@+id/fast_scroller_bubble"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            style="@style/FloatingTextView"
             android:layout_gravity="end|center_vertical"
             android:layout_toStartOf="@+id/fast_scroller_handle"
-            android:background="@drawable/material_bubble_drawable"
-            android:elevation="10dp"
             android:gravity="center"
-            android:paddingStart="12dp"
-            android:paddingTop="8dp"
-            android:paddingEnd="12dp"
-            android:paddingBottom="8dp"
-            android:textColor="?attr/colorOnPrimary"
-            android:textSize="15sp"
             android:visibility="gone"
             tools:text="A"
             tools:visibility="visible" />

+ 1 - 2
app/src/main/res/layout/source_main_controller.xml

@@ -15,8 +15,7 @@
         android:id="@+id/fast_scroller"
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
-        android:layout_gravity="right"
-        android:layoutDirection="ltr"
+        android:layout_gravity="end"
         app:fastScrollerBubbleEnabled="false"
         tools:visibility="visible" />
 

+ 17 - 0
app/src/main/res/values/styles.xml

@@ -287,6 +287,23 @@
     </style>
 
 
+    <!--============-->
+    <!--FastScroller-->
+    <!--============-->
+    <style name="FloatingTextView" parent="TextAppearance.AppCompat">
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:background">@drawable/material_bubble_drawable</item>
+        <item name="android:elevation">5dp</item>
+        <item name="android:paddingStart">12dp</item>
+        <item name="android:paddingEnd">12dp</item>
+        <item name="android:paddingTop">8dp</item>
+        <item name="android:paddingBottom">8dp</item>
+        <item name="android:textColor">?attr/colorOnPrimary</item>
+        <item name="android:textSize">15sp</item>
+    </style>
+
+
     <!--===-->
     <!--OLD-->
     <!--===-->