增加震动
This commit is contained in:
@@ -19,6 +19,7 @@ import io.legato.kazusa.model.ReadBook
|
||||
import io.legato.kazusa.model.ReadManga
|
||||
import io.legato.kazusa.ui.browser.WebViewActivity
|
||||
import io.legato.kazusa.utils.ConstraintModify
|
||||
import io.legato.kazusa.utils.VibrationUtils
|
||||
import io.legato.kazusa.utils.activity
|
||||
import io.legato.kazusa.utils.applyNavigationBarPadding
|
||||
import io.legato.kazusa.utils.gone
|
||||
@@ -220,12 +221,14 @@ class MangaMenu @JvmOverloads constructor(
|
||||
|
||||
seekReadPage.addOnChangeListener { slider, value, fromUser ->
|
||||
if (fromUser) {
|
||||
VibrationUtils.vibrate(context, 12)
|
||||
callBack.skipToPage(value.toInt() - 1)
|
||||
}
|
||||
}
|
||||
|
||||
seekReadPage.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
||||
override fun onStartTrackingTouch(slider: Slider) {
|
||||
VibrationUtils.vibrate(context, 16)
|
||||
vwMenuBg.setOnClickListener(null)
|
||||
}
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ import io.legato.kazusa.model.ReadBook
|
||||
import io.legato.kazusa.ui.browser.WebViewActivity
|
||||
import io.legato.kazusa.ui.widget.seekbar.SeekBarChangeListener
|
||||
import io.legato.kazusa.utils.ConstraintModify
|
||||
import io.legato.kazusa.utils.VibrationUtils
|
||||
import io.legato.kazusa.utils.activity
|
||||
import io.legato.kazusa.utils.applyNavigationBarPadding
|
||||
import io.legato.kazusa.utils.dpToPx
|
||||
@@ -415,10 +416,19 @@ class ReadMenu @JvmOverloads constructor(
|
||||
AppConfig.brightnessVwPos = !AppConfig.brightnessVwPos
|
||||
upBrightnessVwPos()
|
||||
}
|
||||
seekReadPage.addOnChangeListener { slider, value, fromUser ->
|
||||
if (fromUser) {
|
||||
VibrationUtils.vibrate(context, 12)
|
||||
if (AppConfig.progressBarBehavior == "page") ReadBook.skipToPage(slider.value.toInt() - 1)
|
||||
ReadBook.skipToPage(slider.value.toInt() - 1)
|
||||
}
|
||||
}
|
||||
|
||||
//阅读进度
|
||||
seekReadPage.addOnSliderTouchListener(object : Slider.OnSliderTouchListener {
|
||||
override fun onStartTrackingTouch(slider: Slider) {
|
||||
vwMenuBg.setOnClickListener(null)
|
||||
VibrationUtils.vibrate(context, 16)
|
||||
}
|
||||
|
||||
override fun onStopTrackingTouch(slider: Slider) {
|
||||
|
||||
@@ -90,6 +90,11 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
|
||||
getNavigationBarView().getOrCreateBadge(R.id.menu_bookshelf)
|
||||
}
|
||||
|
||||
override fun onConfigurationChanged(newConfig: Configuration) {
|
||||
super.onConfigurationChanged(newConfig)
|
||||
recreate()
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package io.legato.kazusa.utils
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Build
|
||||
import android.os.VibrationEffect
|
||||
import android.os.Vibrator
|
||||
import android.os.VibratorManager
|
||||
|
||||
object VibrationUtils {
|
||||
|
||||
/**
|
||||
* 触发单次震动
|
||||
* @param context 上下文
|
||||
* @param milliseconds 震动时长(毫秒)
|
||||
*/
|
||||
fun vibrate(context: Context, milliseconds: Long) {
|
||||
val vibrator = getVibrator(context)
|
||||
vibrator.vibrate(
|
||||
VibrationEffect.createOneShot(
|
||||
milliseconds,
|
||||
VibrationEffect.DEFAULT_AMPLITUDE
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* 触发带模式的震动
|
||||
* @param context 上下文
|
||||
* @param pattern 震动模式数组(如 longArrayOf(0, 200, 100, 300))
|
||||
* @param repeat 重复次数(-1 为不重复)
|
||||
*/
|
||||
fun vibratePattern(context: Context, pattern: LongArray, repeat: Int = -1) {
|
||||
val vibrator = getVibrator(context)
|
||||
vibrator.vibrate(VibrationEffect.createWaveform(pattern, repeat))
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 Vibrator 实例(兼容 Android 12+)
|
||||
*/
|
||||
private fun getVibrator(context: Context): Vibrator {
|
||||
return if (Build.VERSION.SDK_INT >= 31) {
|
||||
val vibratorManager =
|
||||
context.getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
|
||||
vibratorManager.defaultVibrator
|
||||
} else {
|
||||
@Suppress("DEPRECATION")
|
||||
context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user