添加震动
This commit is contained in:
@@ -5,6 +5,8 @@
|
||||
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
|
||||
<uses-permission android:name="android.permission.REORDER_TASKS" />
|
||||
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
|
||||
<application android:theme="@style/AppTheme">
|
||||
<activity
|
||||
android:name=".activity.user.activity.TotalRevenueActivity"
|
||||
|
||||
@@ -421,11 +421,12 @@ class RoomMentorShipFragment(var mRoomInfo: RoomInfoResp?) :
|
||||
if (dialogMentorShip == null) {
|
||||
dialogMentorShip = DialogMentorShip(ActivityUtils.getTopActivity())
|
||||
}
|
||||
dialogMentorShip?.setClickable(true)
|
||||
dialogMentorShip?.show(list, mSignPitBean, walletBean,
|
||||
object : DialogMentorShip.OnItemClickListener {
|
||||
override fun onItemClick(coin: String) {
|
||||
// 触发轻微震动
|
||||
view?.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY)
|
||||
dialogMentorShip?.setClickable(false)
|
||||
|
||||
|
||||
|
||||
MvpPre!!.signCoin(mSignId!!, coin)
|
||||
|
||||
@@ -2,11 +2,14 @@ package com.xscm.modulemain.dialog
|
||||
|
||||
import android.content.Context
|
||||
import android.view.Gravity
|
||||
import android.view.HapticFeedbackConstants
|
||||
import android.view.ViewGroup
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.tencent.qcloud.tuicore.util.ToastUtil
|
||||
import com.xscm.modulemain.R
|
||||
import com.xscm.modulemain.databinding.DialogMentorShipLayoutBinding
|
||||
import com.xscm.modulemain.utils.VibrationUtils
|
||||
import com.xscm.moduleutil.bean.WalletBean
|
||||
import com.xscm.moduleutil.bean.room.RoomPitBean
|
||||
import com.xscm.moduleutil.utils.ImageUtils
|
||||
@@ -23,7 +26,7 @@ class DialogMentorShip(context: Context) : BaseDialog<DialogMentorShipLayoutBind
|
||||
window?.setWindowAnimations(com.xscm.moduleutil.R.style.DialogAnimationt)
|
||||
}
|
||||
|
||||
|
||||
private var isClick = true
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.dialog_mentor_ship_layout
|
||||
@@ -38,6 +41,12 @@ class DialogMentorShip(context: Context) : BaseDialog<DialogMentorShipLayoutBind
|
||||
|
||||
override fun initData() {
|
||||
adapter?.setOnItemClickListener { adapter, view, position ->
|
||||
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<DialogMentorShipLayoutBind
|
||||
}
|
||||
|
||||
fun show(list: List<String>, 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<DialogMentorShipLayoutBind
|
||||
adapter?.setNewData(list)
|
||||
}
|
||||
|
||||
fun setClickable(b: Boolean) {
|
||||
isClick = b
|
||||
}
|
||||
|
||||
|
||||
class Adapter(idx: Int, data: MutableList<String>) :
|
||||
BaseQuickAdapter<String, BaseViewHolder>(idx, data) {
|
||||
override fun convert(helper: BaseViewHolder, item: String?) {
|
||||
helper.setText(R.id.tv_glod, item)
|
||||
// 触发轻微震动
|
||||
helper.itemView.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_PRESS)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user