diff --git a/MainModule/src/main/AndroidManifest.xml b/MainModule/src/main/AndroidManifest.xml
index a67567df..cfd654f6 100644
--- a/MainModule/src/main/AndroidManifest.xml
+++ b/MainModule/src/main/AndroidManifest.xml
@@ -5,6 +5,8 @@
+
+
+ if (!isClick) {
+ ToastUtil.show( "稍等,点击太快了!",false,Gravity.CENTER)
+ return@setOnItemClickListener
+ }
+
+ VibrationUtils().vibrate(view.context, 200)
onItemClickListener?.onItemClick(adapter.data[position]!!.toString())
}
mBinding.tvRecharge.setOnClickListener {
@@ -46,6 +55,14 @@ class DialogMentorShip(context: Context) : BaseDialog, mSignPitBean: RoomPitBean?, walletBean: WalletBean?, onItemClickListener: OnItemClickListener?) {
+ if (isShowing){
+ mBinding.tvName.text = mSignPitBean?.nickname
+ mBinding.tvWallet.text = walletBean?.coin
+ ImageUtils.loadHeadCC(mSignPitBean?.avatar, mBinding.ivHead)
+ this.onItemClickListener = onItemClickListener
+ adapter?.setNewData(list)
+ return
+ }
super.show()
mBinding.tvName.text = mSignPitBean?.nickname
mBinding.tvWallet.text = walletBean?.coin
@@ -54,11 +71,17 @@ class DialogMentorShip(context: Context) : BaseDialog) :
BaseQuickAdapter(idx, data) {
override fun convert(helper: BaseViewHolder, item: String?) {
helper.setText(R.id.tv_glod, item)
+ // 触发轻微震动
+ helper.itemView.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_PRESS)
}
}
diff --git a/MainModule/src/main/java/com/xscm/modulemain/utils/VibrationUtils.kt b/MainModule/src/main/java/com/xscm/modulemain/utils/VibrationUtils.kt
new file mode 100644
index 00000000..b1668b39
--- /dev/null
+++ b/MainModule/src/main/java/com/xscm/modulemain/utils/VibrationUtils.kt
@@ -0,0 +1,69 @@
+package com.xscm.modulemain.utils
+
+import android.Manifest
+import android.content.Context
+import android.content.pm.PackageManager
+import android.os.Vibrator
+import android.os.VibrationEffect
+import android.os.Build
+import android.os.VibratorManager
+import androidx.core.content.ContextCompat
+import com.blankj.utilcode.util.LogUtils
+
+class VibrationUtils {
+
+ /**
+ * 简单震动
+ * @param durationMillis 震动时长(毫秒)
+ */
+ fun vibrate(context: Context, durationMillis: Long) {
+ val vibrator = getVibrator(context)
+
+ // 检查权限
+ if (ContextCompat.checkSelfPermission(context, Manifest.permission.VIBRATE)
+ != PackageManager.PERMISSION_GRANTED) {
+ LogUtils.e("Vibration", "缺少震动权限")
+ return
+ }
+
+ // 检查设备支持
+ if (!vibrator.hasVibrator()) {
+ LogUtils.e("Vibration", "设备不支持震动")
+ return
+ }
+
+ try {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ // API 26+ 推荐方式
+ val effect = VibrationEffect.createOneShot(
+ durationMillis,
+ VibrationEffect.DEFAULT_AMPLITUDE
+ )
+ vibrator.vibrate(effect)
+ } else {
+ // 旧版本方式
+ @Suppress("DEPRECATION")
+ vibrator.vibrate(durationMillis)
+ }
+ LogUtils.d("Vibration", "震动成功: ${durationMillis}ms")
+ } catch (e: Exception) {
+ LogUtils.e("Vibration", "震动失败", e)
+ }
+ }
+
+ /**
+ * 获取 Vibrator 实例
+ */
+ private fun getVibrator(context: Context): Vibrator {
+ return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ // API 31+ 推荐方式
+ val vibratorManager = context.getSystemService(Context.VIBRATOR_MANAGER_SERVICE)
+ as VibratorManager
+ vibratorManager.defaultVibrator
+ } else {
+ // 旧版本
+ @Suppress("DEPRECATION")
+ context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
+ }
+ }
+}
\ No newline at end of file