From 22a1f420ea9fadc362099e064a5a4f88ea3e7178 Mon Sep 17 00:00:00 2001 From: lzl <1239365383@qq.com> Date: Wed, 3 Dec 2025 20:16:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=9C=87=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MainModule/src/main/AndroidManifest.xml | 2 + .../room/fragment/RoomMentorShipFragment.kt | 5 +- .../modulemain/dialog/DialogMentorShip.kt | 25 ++++++- .../xscm/modulemain/utils/VibrationUtils.kt | 69 +++++++++++++++++++ 4 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 MainModule/src/main/java/com/xscm/modulemain/utils/VibrationUtils.kt 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