光环助手V4.5.0-【APP合规】游戏详情页-游戏安装权限提示 https://gitlab.ghzs.com/pm/halo-app-issues/-/issues/1070
This commit is contained in:
@ -4,17 +4,21 @@ import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.gh.common.util.*
|
||||
import com.gh.gamecenter.R
|
||||
import com.gh.gamecenter.databinding.ItemGameInfoBinding
|
||||
import com.gh.gamecenter.entity.TrackableEntity
|
||||
import com.gh.gamecenter.gamedetail.dialog.GamePermissionDialogFragment
|
||||
import com.gh.gamecenter.gamedetail.entity.GameInfo
|
||||
import com.gh.gamecenter.gamedetail.entity.GameInfoItemData
|
||||
import com.gh.gamecenter.gamedetail.entity.Permission
|
||||
import com.halo.assistant.HaloApp
|
||||
|
||||
class GameDetailInfoItemAdapter(val context: Context, gameInfo: GameInfo, private val mViewModel: DescViewModel, val gameName: String) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||
class GameDetailInfoItemAdapter(val context: Context, val gameInfo: GameInfo, private val mViewModel: DescViewModel, val gameName: String) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||
var datas = ArrayList<GameInfoItemData>()
|
||||
|
||||
init {
|
||||
@ -34,6 +38,9 @@ class GameDetailInfoItemAdapter(val context: Context, gameInfo: GameInfo, privat
|
||||
if (gameInfo.manufacturer.isNotEmpty()) {
|
||||
datas.add(GameInfoItemData(title = "厂商", info = gameInfo.manufacturer))
|
||||
}
|
||||
if (gameInfo.permission != null) {
|
||||
datas.add(GameInfoItemData(title = "权限", info = "查看详情"))
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
||||
@ -52,6 +59,12 @@ class GameDetailInfoItemAdapter(val context: Context, gameInfo: GameInfo, privat
|
||||
holder.binding.actionTv.visibility = View.VISIBLE
|
||||
holder.binding.actionTv.text = gameInfoItemData.actionStr
|
||||
}
|
||||
if (gameInfoItemData.title == "权限") {
|
||||
holder.binding.infoTv.setTextColor(ContextCompat.getColor(context, R.color.theme_font))
|
||||
holder.binding.infoTv.setOnClickListener {
|
||||
GamePermissionDialogFragment.show(context as AppCompatActivity, mViewModel.game, gameInfo)
|
||||
}
|
||||
}
|
||||
holder.binding.actionTv.setOnClickListener {
|
||||
when (gameInfoItemData.actionStr) {
|
||||
"求更新" -> {
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
package com.gh.gamecenter.gamedetail.dialog
|
||||
|
||||
import android.content.Context
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.gh.base.BaseRecyclerViewHolder
|
||||
import com.gh.common.util.dip2px
|
||||
import com.gh.gamecenter.R
|
||||
import com.gh.gamecenter.databinding.GamePermissionItemBinding
|
||||
import com.gh.gamecenter.gamedetail.entity.Permission
|
||||
import com.lightgame.adapter.BaseRecyclerAdapter
|
||||
|
||||
class GamePermissionAdapter(context: Context, val permissions: List<Permission>) : BaseRecyclerAdapter<RecyclerView.ViewHolder>(context) {
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
||||
return GamePermissionViewHolder(GamePermissionItemBinding.bind(LayoutInflater.from(mContext).inflate(R.layout.game_permission_item, parent, false)))
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int = permissions.size
|
||||
|
||||
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
|
||||
if (holder is GamePermissionViewHolder) {
|
||||
val permission = permissions[position]
|
||||
holder.binding.permissionNameTV.text = permission.name
|
||||
holder.binding.permissionDetailLl.removeAllViews()
|
||||
permission.details.forEach {
|
||||
holder.binding.permissionDetailLl.addView(createDetailView(it))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun createDetailView(detail: String): View {
|
||||
return TextView(mContext).apply {
|
||||
val params = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
|
||||
params.topMargin = 12f.dip2px()
|
||||
layoutParams = params
|
||||
textSize = 13f
|
||||
setTextColor(ContextCompat.getColor(mContext, R.color.text_999999))
|
||||
setCompoundDrawablesWithIntrinsicBounds(ContextCompat.getDrawable(mContext, R.drawable.bg_circle_permission_detail), null, null, null)
|
||||
compoundDrawablePadding = 5f.dip2px()
|
||||
text = detail
|
||||
}
|
||||
}
|
||||
|
||||
class GamePermissionViewHolder(val binding: GamePermissionItemBinding) : BaseRecyclerViewHolder<Any>(binding.root)
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
package com.gh.gamecenter.gamedetail.dialog
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.gh.base.fragment.BaseDialogFragment
|
||||
import com.gh.common.util.dip2px
|
||||
import com.gh.common.view.VerticalItemDecoration
|
||||
import com.gh.gamecenter.R
|
||||
import com.gh.gamecenter.databinding.GamePermissionDialogBinding
|
||||
import com.gh.gamecenter.entity.GameEntity
|
||||
import com.gh.gamecenter.gamedetail.entity.GameInfo
|
||||
import com.gh.gamecenter.gamedetail.entity.Permission
|
||||
|
||||
class GamePermissionDialogFragment : BaseDialogFragment() {
|
||||
|
||||
lateinit var binding: GamePermissionDialogBinding
|
||||
var game: GameEntity? = null
|
||||
var gameInfo: GameInfo? = null
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
binding = GamePermissionDialogBinding.bind(inflater.inflate(R.layout.game_permission_dialog, container, false))
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
game?.let {
|
||||
binding.gameIconView.displayGameIcon(it)
|
||||
binding.gameNameTv.text = it.name
|
||||
binding.gameVersionTv.text = "版本号:${gameInfo?.version}"
|
||||
}
|
||||
gameInfo?.permission?.let {
|
||||
binding.permissionsRv.layoutManager = LinearLayoutManager(requireContext())
|
||||
binding.permissionsRv.adapter = GamePermissionAdapter(requireContext(), it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
val width = requireContext().resources.displayMetrics.widthPixels - 40F.dip2px()
|
||||
val height = ViewGroup.LayoutParams.WRAP_CONTENT
|
||||
dialog?.window?.setLayout(width, height)
|
||||
dialog?.setCanceledOnTouchOutside(true)
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun show(activity: AppCompatActivity, game: GameEntity?, gameInfo: GameInfo) {
|
||||
var permissionDialogFragment = activity.supportFragmentManager.findFragmentByTag(GamePermissionDialogFragment::class.java.simpleName) as? GamePermissionDialogFragment
|
||||
if (permissionDialogFragment == null) {
|
||||
permissionDialogFragment = GamePermissionDialogFragment()
|
||||
}
|
||||
permissionDialogFragment.game = game
|
||||
permissionDialogFragment.gameInfo = gameInfo
|
||||
|
||||
permissionDialogFragment.show(activity.supportFragmentManager, GamePermissionDialogFragment::class.java.simpleName)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -128,7 +128,8 @@ data class GameInfo(
|
||||
var updateTime: Long = 0,
|
||||
var size: String = "",
|
||||
var contact: Contact? = null,
|
||||
var manufacturer: String = ""
|
||||
var manufacturer: String = "",
|
||||
var permission: List<Permission>? = null
|
||||
)
|
||||
|
||||
@Keep
|
||||
@ -147,4 +148,10 @@ data class UpdateContent(
|
||||
var historyApkStatus: String = "",
|
||||
@SerializedName("update_des")
|
||||
val updateDes: String = ""
|
||||
)
|
||||
|
||||
@Keep
|
||||
data class Permission(
|
||||
var name: String = "",
|
||||
var details: List<String> = arrayListOf()
|
||||
)
|
||||
Reference in New Issue
Block a user