From 369fdd24efc60795bfc9ba718e26ac105d50be6f Mon Sep 17 00:00:00 2001 From: juntao Date: Wed, 28 Jul 2021 15:28:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=86=85=E5=AE=B9=E5=8F=8A?= =?UTF-8?q?=E8=AF=84=E8=AE=BA=E6=8A=95=E8=AF=89=E5=BC=B9=E7=AA=97=E4=BA=A4?= =?UTF-8?q?=E4=BA=92=20https://git.ghzs.com/pm/halo-app-issues/-/issues/13?= =?UTF-8?q?73?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/util/BbsReportHelper.kt | 89 +++++++++++++++---- .../java/com/gh/common/util/CommentHelper.kt | 23 +---- 2 files changed, 77 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/BbsReportHelper.kt b/app/src/main/java/com/gh/common/util/BbsReportHelper.kt index eb6e70b4be..7e03c524a4 100644 --- a/app/src/main/java/com/gh/common/util/BbsReportHelper.kt +++ b/app/src/main/java/com/gh/common/util/BbsReportHelper.kt @@ -2,19 +2,28 @@ package com.gh.common.util import android.annotation.SuppressLint import android.app.Dialog +import android.content.Context import android.graphics.Color +import android.graphics.drawable.ColorDrawable import android.preference.PreferenceManager +import android.view.LayoutInflater +import android.view.View import android.view.Window +import android.widget.EditText import android.widget.LinearLayout import android.widget.TextView +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.content.ContextCompat import com.gh.base.CurrentActivityHolder import com.gh.common.json.json +import com.gh.common.util.ToastUtils.showToast import com.gh.gamecenter.R import com.gh.gamecenter.SuggestionActivity import com.gh.gamecenter.entity.SettingsEntity import com.gh.gamecenter.retrofit.BiResponse import com.gh.gamecenter.retrofit.RetrofitManager import com.halo.assistant.HaloApp +import com.lightgame.utils.Util_System_Keyboard import com.lightgame.utils.Utils import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers @@ -32,31 +41,79 @@ object BbsReportHelper { if (this.isFinishing) return@apply val dialog = Dialog(this) - val container = LinearLayout(this) - container.orientation = LinearLayout.VERTICAL - container.setBackgroundColor(Color.WHITE) - container.setPadding(0, 12F.dip2px(), 0, 12F.dip2px()) - for (s in reportList) { + + val view = LayoutInflater.from(this).inflate(R.layout.dialog_video_complaint, null, false) + val complaintContainer = view.findViewById(R.id.complaintContainer) + val otherComplaintContainer: ConstraintLayout = view.findViewById(R.id.otherComplaintContainer) + val complaintCommentEt = view.findViewById(R.id.complaintCommentEt) + val backTv = view.findViewById(R.id.backTv) + val commitTv = view.findViewById(R.id.commitTv) + val finalContext: Context = this + //添加透明阴影,实现类似 clipPadding=false 效果 + complaintCommentEt.setShadowLayer(complaintCommentEt.extendedPaddingBottom.toFloat(), 0f, 0f, Color.TRANSPARENT) + + complaintCommentEt.setTextChangedListener { s: CharSequence, _: Int?, _: Int?, _: Int? -> + commitTv.setTextColor(ContextCompat.getColor(finalContext, if (s.toString().trim { it <= ' ' }.isEmpty()) R.color.text_999999 else R.color.theme_font)) + } + + for (option in reportList) { val reportTv = TextView(this) - reportTv.text = s - reportTv.textSize = 17F + reportTv.text = option + reportTv.textSize = 16F reportTv.setTextColor(R.color.title.toColor()) reportTv.setBackgroundResource(R.drawable.textview_white_style) - val widthPixels: Int = resources.displayMetrics.widthPixels - reportTv.layoutParams = LinearLayout.LayoutParams(widthPixels * 9 / 10, + reportTv.layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) - reportTv.setPadding(20F.dip2px(), 12F.dip2px(), 20F.dip2px(), 12F.dip2px()) - container.addView(reportTv) + reportTv.setPadding(20F.dip2px(), 17F.dip2px(), 20F.dip2px(), 17F.dip2px()) + if (option.contains("其它")) { + val drawable = R.drawable.ic_complaint_arrow_right.toDrawable() + drawable!!.setBounds(0, 0, 6F.dip2px(), 10F.dip2px()) + reportTv.setCompoundDrawables(null, null, drawable, null) + } + complaintContainer.addView(reportTv) reportTv.setOnClickListener { - postReport(contentId, json { - "reason" to s - }) - dialog.cancel() + if (option.contains("其它")) { + complaintContainer.visibility = View.GONE + otherComplaintContainer.visibility = View.VISIBLE + complaintCommentEt.requestFocus() + Util_System_Keyboard.showSoftKeyboard(finalContext, complaintCommentEt) + } else { + postReport(contentId, json { + "reason" to reportTv.text.toString() + }) + dialog.cancel() + } } } + + backTv.setOnClickListener { + Util_System_Keyboard.hideSoftKeyboard(finalContext, complaintCommentEt) + complaintContainer.visibility = View.VISIBLE + otherComplaintContainer.visibility = View.GONE + } + commitTv.setOnClickListener { + if (complaintCommentEt.text.toString().isEmpty()) { + showToast("请先输入说明~") + return@setOnClickListener + } + postReport(contentId, json { + "reason" to "其它" + "description" to complaintCommentEt.text.toString() + }) + + dialog.cancel() + } + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE) - dialog.setContentView(container) + dialog.setContentView(view) dialog.show() + val window = dialog.window + if (window != null) { + window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + val params = window.attributes + params.width = resources.displayMetrics.widthPixels - 40F.dip2px() + window.attributes = params + } } } diff --git a/app/src/main/java/com/gh/common/util/CommentHelper.kt b/app/src/main/java/com/gh/common/util/CommentHelper.kt index 4d5be769d8..317bbe7ed9 100644 --- a/app/src/main/java/com/gh/common/util/CommentHelper.kt +++ b/app/src/main/java/com/gh/common/util/CommentHelper.kt @@ -21,7 +21,6 @@ import com.lightgame.utils.Utils import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers import okhttp3.ResponseBody -import org.json.JSONException import org.json.JSONObject import retrofit2.HttpException @@ -160,8 +159,7 @@ object CommentHelper { "投诉" -> { context.ifLogin("回答详情-评论-投诉") { - showReportTypeDialog(context, !videoId.isNullOrEmpty()) { reportType -> - + showReportTypeDialog(context) { reportType -> val commentListener = object : PostCommentUtils.PostCommentListener { override fun postSuccess(response: JSONObject?) { Utils.toast(context, "感谢您的投诉") @@ -385,23 +383,10 @@ object CommentHelper { } } - private fun showReportTypeDialog(context: Context, isVideoComment: Boolean, reportCallback: (reportType: String) -> Unit) { + private fun showReportTypeDialog(context: Context, reportCallback: (reportType: String) -> Unit) { val reportTypes = arrayListOf("垃圾广告营销", "恶意攻击谩骂", "淫秽色情信息", "违法有害信息", "其它") - - if (!isVideoComment) { - DialogUtils.showListDialog(context, reportTypes, null) { text -> - val jsonObject = JSONObject() - try { - jsonObject.put("reason", text) - reportCallback.invoke(jsonObject.toString()) - } catch (e: JSONException) { - e.printStackTrace() - } - } - } else { - DialogUtils.showVideoComplaintDialog(context, reportTypes, null) { text -> - reportCallback.invoke(text) - } + DialogUtils.showVideoComplaintDialog(context, reportTypes, null) { text -> + reportCallback.invoke(text) } }