Smooth Automatic Scrolling for Webtoon (#777)
(cherry picked from commit 82f0e5bc01e93baa1cd81f9c898d15d51e3faa1b)
This commit is contained in:
parent
c7433287c6
commit
43b3abf43b
@ -807,12 +807,22 @@ class ReaderActivity : BaseActivity() {
|
||||
repeatOnLifecycle(Lifecycle.State.STARTED) {
|
||||
val interval = parsed.seconds
|
||||
while (true) {
|
||||
delay(interval)
|
||||
viewer.let { v ->
|
||||
when (v) {
|
||||
is PagerViewer -> v.moveToNext()
|
||||
is WebtoonViewer -> v.scrollDown()
|
||||
if (!binding.readerMenu.isVisible) {
|
||||
viewer.let { v ->
|
||||
when (v) {
|
||||
is PagerViewer -> v.moveToNext()
|
||||
is WebtoonViewer -> {
|
||||
if (readerPreferences.smoothAutoScroll().get()) {
|
||||
v.linearScroll(interval)
|
||||
} else {
|
||||
v.scrollDown()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
delay(interval)
|
||||
} else {
|
||||
delay(100)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -133,6 +133,8 @@ class ReaderPreferences(
|
||||
|
||||
fun autoscrollInterval() = preferenceStore.getFloat("eh_util_autoscroll_interval", 3f)
|
||||
|
||||
fun smoothAutoScroll() = preferenceStore.getBoolean("smooth_auto_scroll", true)
|
||||
|
||||
fun preserveReadingPosition() = preferenceStore.getBoolean("eh_preserve_reading_position", false)
|
||||
|
||||
fun preloadSize() = preferenceStore.getInt("eh_preload_size", 10)
|
||||
|
@ -134,6 +134,7 @@ class ReaderReadingModeSettings @JvmOverloads constructor(context: Context, attr
|
||||
// SY -->
|
||||
binding.webtoonPrefsGroup.zoomOutWebtoon.bindToPreference(readerPreferences.webtoonEnableZoomOut())
|
||||
binding.webtoonPrefsGroup.cropBordersContinuousVertical.bindToPreference(readerPreferences.cropBordersContinuousVertical())
|
||||
binding.webtoonPrefsGroup.smoothScrollWebtoon.bindToPreference(readerPreferences.smoothAutoScroll())
|
||||
binding.webtoonPrefsGroup.pageTransitionsWebtoon.bindToPreference(readerPreferences.pageTransitionsWebtoon())
|
||||
// SY <--
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import android.view.MotionEvent
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
|
||||
import android.view.animation.LinearInterpolator
|
||||
import androidx.core.app.ActivityCompat
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isVisible
|
||||
@ -29,6 +30,7 @@ import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
import kotlin.time.Duration
|
||||
|
||||
/**
|
||||
* Implementation of a [BaseViewer] to display pages with a [RecyclerView].
|
||||
@ -300,6 +302,13 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scrolls one screen over a period of time
|
||||
*/
|
||||
fun linearScroll(duration: Duration) {
|
||||
recycler.smoothScrollBy(0, activity.resources.displayMetrics.heightPixels, LinearInterpolator(), duration.inWholeMilliseconds.toInt())
|
||||
}
|
||||
|
||||
/**
|
||||
* Scrolls down by [scrollDistance].
|
||||
*/
|
||||
|
@ -46,6 +46,15 @@
|
||||
android:text="@string/pref_crop_borders"
|
||||
android:textColor="?android:attr/textColorSecondary" />
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/smooth_scroll_webtoon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingHorizontal="16dp"
|
||||
android:paddingVertical="16dp"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:text="@string/pref_smooth_scroll"/>
|
||||
|
||||
<com.google.android.material.materialswitch.MaterialSwitch
|
||||
android:id="@+id/page_transitions_webtoon"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -253,6 +253,7 @@
|
||||
<string name="pref_left_handed_vertical_seekbar_summary">Switches which side the seekbar is on</string>
|
||||
<string name="pref_force_horz_seekbar">Force horizontal seekbar</string>
|
||||
<string name="pref_force_horz_seekbar_summary">Removes vertical seekbar entirely in favour of horizontal</string>
|
||||
<string name="pref_smooth_scroll">Smooth Auto Scroll</string>
|
||||
|
||||
<!-- Reader -->
|
||||
<!-- Reader Actions -->
|
||||
|
Loading…
x
Reference in New Issue
Block a user