diff --git a/app/src/main/java/com/gh/common/dialog/ApplyModeratorDialogFragment.kt b/app/src/main/java/com/gh/common/dialog/ApplyModeratorDialogFragment.kt index 51281c5b22..74d8f6a41f 100644 --- a/app/src/main/java/com/gh/common/dialog/ApplyModeratorDialogFragment.kt +++ b/app/src/main/java/com/gh/common/dialog/ApplyModeratorDialogFragment.kt @@ -6,13 +6,13 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import com.gh.gamecenter.common.base.fragment.BaseDialogFragment import com.gh.common.util.DirectUtils +import com.gh.gamecenter.R +import com.gh.gamecenter.common.base.fragment.BaseDialogFragment import com.gh.gamecenter.common.constant.EntranceConsts -import com.gh.gamecenter.core.utils.SpanBuilder import com.gh.gamecenter.common.utils.dip2px import com.gh.gamecenter.common.view.CustomLinkMovementMethod -import com.gh.gamecenter.R +import com.gh.gamecenter.core.utils.SpanBuilder import com.gh.gamecenter.databinding.DialogApplyModeratorBinding @@ -45,7 +45,7 @@ class ApplyModeratorDialogFragment : BaseDialogFragment() { val startText = "版主考核群:" val text = "$startText$mGroupNumber\n感谢你对论坛建设的支持\n请加入版主考核群并联系群主进行版主资格考核" binding.desTv.text = SpanBuilder(text) - .click(startText.length, startText.length + mGroupNumber.length, R.color.theme_font,true) { + .click(requireContext(), startText.length, startText.length + mGroupNumber.length, R.color.theme_font,true) { DirectUtils.directToQqGroup( requireContext(), mGroupKey diff --git a/app/src/main/java/com/gh/common/dialog/PackageCheckDialogFragment.kt b/app/src/main/java/com/gh/common/dialog/PackageCheckDialogFragment.kt index acada2acf5..3e689884a7 100644 --- a/app/src/main/java/com/gh/common/dialog/PackageCheckDialogFragment.kt +++ b/app/src/main/java/com/gh/common/dialog/PackageCheckDialogFragment.kt @@ -15,21 +15,24 @@ import androidx.fragment.app.FragmentTransaction import androidx.lifecycle.Lifecycle import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.gh.gamecenter.common.base.BaseRecyclerViewHolder -import com.gh.gamecenter.common.constant.Constants -import com.gh.common.util.* +import com.gh.common.util.DirectUtils import com.gh.common.util.LogUtils -import com.gh.gamecenter.common.view.CustomLinkMovementMethod +import com.gh.common.util.PackageUtils import com.gh.download.DownloadManager import com.gh.gamecenter.R +import com.gh.gamecenter.common.base.BaseRecyclerViewHolder import com.gh.gamecenter.common.callback.ConfirmListener +import com.gh.gamecenter.common.constant.Constants +import com.gh.gamecenter.common.entity.LinkEntity import com.gh.gamecenter.common.utils.* -import com.gh.gamecenter.core.utils.* +import com.gh.gamecenter.common.view.CustomLinkMovementMethod +import com.gh.gamecenter.core.utils.DisplayUtils +import com.gh.gamecenter.core.utils.SPUtils +import com.gh.gamecenter.core.utils.SpanBuilder import com.gh.gamecenter.databinding.FragmentPackageCheckBinding import com.gh.gamecenter.databinding.PackageCheckItemBinding import com.gh.gamecenter.entity.DetectionObjectEntity import com.gh.gamecenter.entity.GameEntity -import com.gh.gamecenter.common.entity.LinkEntity import com.gh.gamecenter.entity.PackageDialogEntity import com.gh.gamecenter.eventbus.EBPackage import com.halo.assistant.HaloApp @@ -105,8 +108,11 @@ class PackageCheckDialogFragment : BaseDialogFragment() { val spanBuilder = SpanBuilder(it.linkHintText).build() it.links.forEachIndexed { index, link -> val linkSpan = SpanBuilder(link.title ?: "").click( - 0, (link.title - ?: "").length, R.color.theme_font, true + requireContext(), + 0, + (link.title ?: "").length, + R.color.theme_font, + true ) { LogUtils.uploadPackageCheck("pkg_check_pop_click", "点击链接", gameEntity, link.text, link.title, "", "") DirectUtils.directToLinkPage(requireContext(), link, "包名检测弹窗", "") diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index f53dee4a26..c6db1318af 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -1892,7 +1892,7 @@ public class DialogUtils { DialogPackageParseErrorBinding binding = DialogPackageParseErrorBinding.inflate(LayoutInflater.from(context), null, false); Context finalContext = context; - SpannableStringBuilder builder = new SpanBuilder("您也可以点击提交反馈跟我们联系").click(6, 10, R.color.theme_font, true, new Function0() { + SpannableStringBuilder builder = new SpanBuilder("您也可以点击提交反馈跟我们联系").click(context, 6, 10, R.color.theme_font, true, new Function0() { @Override public Unit invoke() { SimpleGameEntity entity = new SimpleGameEntity(gameId, gameName, ""); diff --git a/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java index e7bcc1ce74..bd06def8e1 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/LibaoDetailAdapter.java @@ -152,7 +152,7 @@ public class LibaoDetailAdapter extends BaseRecyclerAdapter { viewHolder.getLoading().setVisibility(View.GONE); SpannableStringBuilder builder = new SpanBuilder("此礼包有问题?点击反馈") - .click(7, 11, R.color.theme_font, false, () -> { + .click(mContext, 7, 11, R.color.theme_font, false, () -> { SuggestionActivity.startSuggestionActivity(mContext, SuggestType.normal, "libao", StringUtils.buildString(mLibaoEntity.getGame().getName(), ",", diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailAdapter.kt index 411d1ce1ea..48d22064e6 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailAdapter.kt @@ -19,19 +19,22 @@ import com.gh.common.exposure.ExposureEvent import com.gh.common.exposure.ExposureSource import com.gh.common.exposure.ExposureType import com.gh.common.exposure.IExposable -import com.gh.gamecenter.common.syncpage.SyncDataEntity -import com.gh.gamecenter.common.syncpage.SyncFieldConstants -import com.gh.gamecenter.common.syncpage.SyncPageRepository -import com.gh.common.util.* +import com.gh.common.util.CommentHelper import com.gh.common.util.DialogUtils -import com.gh.gamecenter.common.view.DrawableView -import com.gh.gamecenter.common.view.GridSpacingItemColorDecoration +import com.gh.common.util.DirectUtils +import com.gh.common.util.DownloadItemUtils import com.gh.gamecenter.GameDetailActivity import com.gh.gamecenter.R import com.gh.gamecenter.adapter.viewholder.GameViewHolder import com.gh.gamecenter.common.callback.ConfirmListener +import com.gh.gamecenter.common.syncpage.SyncDataEntity +import com.gh.gamecenter.common.syncpage.SyncFieldConstants +import com.gh.gamecenter.common.syncpage.SyncPageRepository import com.gh.gamecenter.common.utils.* -import com.gh.gamecenter.core.utils.* +import com.gh.gamecenter.common.view.DrawableView +import com.gh.gamecenter.common.view.GridSpacingItemColorDecoration +import com.gh.gamecenter.core.utils.MtaHelper +import com.gh.gamecenter.core.utils.SpanBuilder import com.gh.gamecenter.databinding.GameCollectionDetailNoneGameItemBinding import com.gh.gamecenter.databinding.GameCollectionGameItemBinding import com.gh.gamecenter.databinding.ItemArticleDetailCommentBinding @@ -47,7 +50,6 @@ import com.gh.gamecenter.qa.comment.CommentPictureAdapter import com.gh.gamecenter.qa.comment.OnCommentOptionClickListener import com.gh.gamecenter.qa.comment.base.BaseCommentAdapter import com.lightgame.download.DownloadEntity -import java.util.* open class GameCollectionDetailAdapter( context: Context, @@ -251,7 +253,7 @@ open class GameCollectionDetailAdapter( R.color.text_title ).build() val parentUserNameSpan = SpanBuilder(parentUserName) - .click(0, parentUserName.length, R.color.text_subtitleDesc) { + .click(mContext, 0, parentUserName.length, R.color.text_subtitleDesc) { DirectUtils.directToHomeActivity( binding.root.context, comment.user.id, @@ -526,13 +528,13 @@ open class GameCollectionDetailAdapter( val colon = " :" val nameSpan = - SpanBuilder(finalName).color(0, finalName.length, R.color.theme_font).build() + SpanBuilder(finalName).color(mContext, 0, finalName.length, R.color.theme_font).build() val authorSpan = if (finalAuthor.isNotEmpty()) SpanBuilder(finalAuthor).image( 0, finalAuthor.length, R.drawable.ic_hint_author ).build() else "" - val colonSpan = SpanBuilder(colon).color(0, colon.length, R.color.theme_font).build() + val colonSpan = SpanBuilder(colon).color(mContext, 0, colon.length, R.color.theme_font).build() return SpannableStringBuilder().append(nameSpan).append(authorSpan).append(colonSpan) .append(content) } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameLibaoAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameLibaoAdapter.kt index 28a2d1ad45..0a459bdedf 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameLibaoAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameLibaoAdapter.kt @@ -5,14 +5,15 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.gh.gamecenter.common.callback.OnListClickListener -import com.gh.common.util.* +import com.gh.common.util.LibaoUtils +import com.gh.common.util.NewLogUtils import com.gh.gamecenter.R -import com.gh.gamecenter.core.utils.SpanBuilder +import com.gh.gamecenter.common.callback.OnListClickListener import com.gh.gamecenter.common.utils.copyTextAndToast import com.gh.gamecenter.common.utils.fromHtml import com.gh.gamecenter.common.utils.toBinding import com.gh.gamecenter.core.utils.MtaHelper +import com.gh.gamecenter.core.utils.SpanBuilder import com.gh.gamecenter.databinding.ItemGameDetailMoreBinding import com.gh.gamecenter.databinding.ItemGameLibaoBinding import com.gh.gamecenter.entity.LibaoEntity @@ -79,7 +80,7 @@ class GameLibaoAdapter( val size = libaoEntity.me?.userDataLibaoList?.size ?: 0 val code = libaoEntity.me?.userDataLibaoList?.get(size - 1)?.code ?: "" val text = "礼包码:$code" - holder.binding.libaoCodeTv.text = SpanBuilder(text).color(4, text.length, R.color.theme_font).build() + holder.binding.libaoCodeTv.text = SpanBuilder(text).color(holder.binding.root.context, 4, text.length, R.color.theme_font).build() holder.binding.copyLibaoCodeIv.visibility = View.VISIBLE holder.binding.copyLibaoCodeIv.setOnClickListener { code.copyTextAndToast("$code 复制成功") @@ -114,7 +115,7 @@ class GameLibaoAdapter( val size = libaoEntity.me?.userDataLibaoList?.size ?: 0 val code = libaoEntity.me?.userDataLibaoList?.get(size - 1)?.code ?: "" val text = "礼包码:$code" - holder.binding.libaoCodeTv.text = SpanBuilder(text).color(4, text.length, R.color.theme_font).build() + holder.binding.libaoCodeTv.text = SpanBuilder(text).color(holder.binding.root.context, 4, text.length, R.color.theme_font).build() holder.binding.copyLibaoCodeIv.visibility = View.VISIBLE holder.binding.copyLibaoCodeIv.setOnClickListener { code.copyTextAndToast("$code 复制成功") diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFragment.kt index 89b8b120bd..60d2b88c92 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingFragment.kt @@ -10,9 +10,7 @@ import androidx.core.content.ContextCompat import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.RecyclerView -import com.gh.gamecenter.core.iinterface.IScrollable -import com.gh.common.util.* -import com.gh.gamecenter.common.view.VerticalItemDecoration +import com.gh.common.util.NewLogUtils import com.gh.gamecenter.R import com.gh.gamecenter.WebActivity import com.gh.gamecenter.common.baselist.LazyListFragment @@ -20,13 +18,15 @@ import com.gh.gamecenter.common.baselist.LoadStatus import com.gh.gamecenter.common.baselist.LoadType import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.eventbus.EBReuse import com.gh.gamecenter.common.utils.toDrawable -import com.gh.gamecenter.core.utils.SpanBuilder import com.gh.gamecenter.common.utils.toPx +import com.gh.gamecenter.common.view.VerticalItemDecoration +import com.gh.gamecenter.core.iinterface.IScrollable import com.gh.gamecenter.core.utils.MtaHelper +import com.gh.gamecenter.core.utils.SpanBuilder import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.RatingComment -import com.gh.gamecenter.common.eventbus.EBReuse import com.gh.gamecenter.eventbus.EBStar import com.gh.gamecenter.eventbus.EBTypeChange import com.gh.gamecenter.gamedetail.GameDetailFragment @@ -147,7 +147,7 @@ class RatingFragment : LazyListFragment(), IScro if (mRatingType == RatingViewModel.RatingType.FOLD_RATING) { val foldRatingReasonTv = requireView().findViewById(R.id.foldRatingReasonTv) val text = "折叠原因:因违反《光环助手评论规则》被管理员折叠" - foldRatingReasonTv.text = SpanBuilder(text).click(8, 18, R.color.theme_font) { + foldRatingReasonTv.text = SpanBuilder(text).click(requireContext(), 8, 18, R.color.theme_font) { MtaHelper.onEvent("折叠评论", "点击评论规则", mListViewModel.game.name) requireContext().startActivity( WebActivity.getWebIntent( diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyAdapter.kt index 2e070a2260..c90b282f82 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyAdapter.kt @@ -311,7 +311,7 @@ class RatingReplyAdapter( R.color.text_title ).build() val parentUserNameSpan = SpanBuilder(parentUserName) - .click(0, parentUserName.length, R.color.text_subtitleDesc) { + .click(mContext, 0, parentUserName.length, R.color.text_subtitleDesc) { DirectUtils.directToHomeActivity( root.context, parent.user.id, diff --git a/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java b/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java index 8a6604863f..c112a2e29b 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java +++ b/app/src/main/java/com/gh/gamecenter/manager/UpdateManager.java @@ -335,7 +335,8 @@ public class UpdateManager { TextView externalTextTv = view.findViewById(R.id.externalTextTv); SpannableStringBuilder builder = new SpanBuilder(defaultText + appEntity.getSpareLink()) - .click(defaultText.length(), + .click(mContext, + defaultText.length(), defaultText.length() + appEntity.getSpareLink().length(), R.color.theme_font, false, diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentAdapter.kt index e939c8f02b..a1bc71f252 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentAdapter.kt @@ -6,18 +6,21 @@ import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView -import com.gh.gamecenter.common.constant.ItemViewType -import com.gh.common.util.* +import com.gh.common.util.CommentHelper +import com.gh.common.util.CommentUtils +import com.gh.common.util.DialogUtils +import com.gh.common.util.DirectUtils import com.gh.gamecenter.R import com.gh.gamecenter.adapter.OnCommentCallBackListener import com.gh.gamecenter.adapter.viewholder.AnswerCommentViewHolder -import com.gh.gamecenter.common.viewholder.FooterViewHolder import com.gh.gamecenter.common.baselist.ListAdapter import com.gh.gamecenter.common.callback.ConfirmListener -import com.gh.gamecenter.core.utils.SpanBuilder +import com.gh.gamecenter.common.constant.ItemViewType import com.gh.gamecenter.common.utils.copyTextAndToast import com.gh.gamecenter.common.utils.ifLogin +import com.gh.gamecenter.common.viewholder.FooterViewHolder import com.gh.gamecenter.core.utils.MtaHelper +import com.gh.gamecenter.core.utils.SpanBuilder import com.gh.gamecenter.databinding.NewCommentItemBinding import com.gh.gamecenter.entity.CommentEntity import com.gh.gamecenter.gamedetail.rating.edit.RatingEditActivity @@ -76,7 +79,7 @@ class NewCommentAdapter( R.color.text_subtitleDesc ).build() val parentUserNameSpan = SpanBuilder(parentUserName) - .click(0, parentUserName.length, R.color.text_subtitle) { + .click(mContext, 0, parentUserName.length, R.color.text_subtitle) { DirectUtils.directToHomeActivity( holder.itemView.context, commentEntity.user.id, diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentViewHolder.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentViewHolder.kt index f995c444b5..8f3f6f79f2 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/StairsCommentViewHolder.kt @@ -73,8 +73,10 @@ class StairsCommentViewHolder( if (parentUser != null && !TextUtils.isEmpty(parentUser.name)) { val name = "${entity.user.name} 回复 ${parentUser.name}" binding.commentUserName.text = SpanBuilder(name).color( - (entity.user.name?.length - ?: 0) + 1, (entity.user.name?.length ?: 0) + 3, R.color.text_subtitle + binding.root.context, + (entity.user.name?.length ?: 0) + 1, + (entity.user.name?.length ?: 0) + 3, + R.color.text_subtitle ).build() } else { binding.commentUserName.text = userInfo.name @@ -93,8 +95,10 @@ class StairsCommentViewHolder( if (parentUser != null && !TextUtils.isEmpty(parentUser.name)) { val name = "${entity.user.name} 回复 ${parentUser.name}" binding.commentUserName.text = SpanBuilder(name).color( - (entity.user.name?.length - ?: 0) + 1, (entity.user.name?.length ?: 0) + 3, R.color.text_subtitle + binding.root.context, + (entity.user.name?.length ?: 0) + 1, + (entity.user.name?.length ?: 0) + 3, + R.color.text_subtitle ).build() } else { binding.commentUserName.text = entity.user.name diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentAdapter.kt index 68926a22f1..73cd910079 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/base/BaseCommentAdapter.kt @@ -11,23 +11,24 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.gh.gamecenter.common.constant.ItemViewType -import com.gh.gamecenter.common.syncpage.ISyncAdapterHandler -import com.gh.gamecenter.common.syncpage.SyncDataEntity -import com.gh.gamecenter.common.syncpage.SyncFieldConstants -import com.gh.gamecenter.common.syncpage.SyncPageRepository import com.gh.common.util.* import com.gh.common.util.DialogUtils import com.gh.common.util.NewLogUtils -import com.gh.gamecenter.common.view.GridSpacingItemColorDecoration import com.gh.gamecenter.R import com.gh.gamecenter.common.baselist.ListAdapter import com.gh.gamecenter.common.baselist.LoadStatus import com.gh.gamecenter.common.baselist.LoadType import com.gh.gamecenter.common.callback.ConfirmListener +import com.gh.gamecenter.common.constant.ItemViewType +import com.gh.gamecenter.common.syncpage.ISyncAdapterHandler +import com.gh.gamecenter.common.syncpage.SyncDataEntity +import com.gh.gamecenter.common.syncpage.SyncFieldConstants +import com.gh.gamecenter.common.syncpage.SyncPageRepository import com.gh.gamecenter.common.utils.* +import com.gh.gamecenter.common.view.GridSpacingItemColorDecoration import com.gh.gamecenter.common.view.SegmentedFilterView -import com.gh.gamecenter.core.utils.* +import com.gh.gamecenter.core.utils.MtaHelper +import com.gh.gamecenter.core.utils.SpanBuilder import com.gh.gamecenter.databinding.ItemArticleDetailCommentBinding import com.gh.gamecenter.databinding.ItemArticleDetailCommentEmptyBinding import com.gh.gamecenter.databinding.ItemArticleDetailCommentFooterBinding @@ -451,7 +452,7 @@ abstract class BaseCommentAdapter( R.color.text_title ).build() val parentUserNameSpan = SpanBuilder(parentUserName) - .click(0, parentUserName.length, R.color.text_subtitleDesc) { + .click(binding.root.context, 0, parentUserName.length, R.color.text_subtitleDesc) { DirectUtils.directToHomeActivity( binding.root.context, comment.user.id, @@ -512,6 +513,7 @@ abstract class BaseCommentAdapter( subCommentList?.firstOrNull()?.let { binding.firstSubCommentTv.text = getSubCommentSpanned( + binding.root.context, it.user.name, if (it.user.id == ownerUserId) "作者" else "", it.content @@ -519,6 +521,7 @@ abstract class BaseCommentAdapter( } subCommentList?.secondOrNull()?.let { binding.secondSubCommentTv.text = getSubCommentSpanned( + binding.root.context, it.user.name, if (it.user.id == ownerUserId) "作者" else "", it.content @@ -543,6 +546,7 @@ abstract class BaseCommentAdapter( } private fun getSubCommentSpanned( + context: Context, name: String?, author: String?, content: String? @@ -551,13 +555,13 @@ abstract class BaseCommentAdapter( val finalName = "$name " val colon = " :" - val nameSpan = SpanBuilder(finalName).color(0, finalName.length, R.color.text_subtitleDesc).build() + val nameSpan = SpanBuilder(finalName).color(context, 0, finalName.length, R.color.text_subtitleDesc).build() val authorSpan = if (finalAuthor.isNotEmpty()) SpanBuilder(finalAuthor).image( 0, finalAuthor.length, R.drawable.ic_hint_author ).build() else "" - val colonSpan = SpanBuilder(colon).color(0, colon.length, R.color.text_subtitleDesc).build() + val colonSpan = SpanBuilder(colon).color(context, 0, colon.length, R.color.text_subtitleDesc).build() return SpannableStringBuilder().append(nameSpan).append(authorSpan).append(colonSpan) .append(content) } diff --git a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailAdapter.kt b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailAdapter.kt index 956c85a355..1ed5329fd0 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/questions/newdetail/NewQuestionDetailAdapter.kt @@ -5,11 +5,11 @@ import android.text.SpannableStringBuilder import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.gh.common.util.PackageUtils -import com.gh.gamecenter.core.utils.SpanBuilder -import com.gh.gamecenter.common.view.CustomLinkMovementMethod import com.gh.gamecenter.R -import com.gh.gamecenter.common.baselist.LoadStatus import com.gh.gamecenter.adapter.viewholder.UnAvaliableWebviewViewHolder +import com.gh.gamecenter.common.baselist.LoadStatus +import com.gh.gamecenter.common.view.CustomLinkMovementMethod +import com.gh.gamecenter.core.utils.SpanBuilder import com.gh.gamecenter.databinding.FragmentWebWarningBinding import com.gh.gamecenter.databinding.ItemArticleDetailContentBinding import com.gh.gamecenter.qa.answer.detail.SimpleAnswerDetailActivity @@ -67,7 +67,7 @@ class NewQuestionDetailAdapter(context: Context, var mViewModel: NewQuestionDeta val comment = mEntityList[position].commentNormal val spannableStringBuilder = SpannableStringBuilder() if (comment?.type == "answer") { - val detailSpan = SpanBuilder("[查看回答详情]").click(0, 8, R.color.theme_font) { + val detailSpan = SpanBuilder("[查看回答详情]").click(mContext, 0, 8, R.color.theme_font) { val intent = SimpleAnswerDetailActivity.getIntent( holder.itemView.context, comment.id ?: "", entrance, "问题详情" diff --git a/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeFragment.kt b/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeFragment.kt index 26921227e5..89c150b2ea 100644 --- a/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeFragment.kt @@ -4,18 +4,18 @@ import android.graphics.Color import android.os.Bundle import android.view.View import androidx.constraintlayout.widget.ConstraintLayout -import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.core.utils.SPUtils -import com.gh.gamecenter.core.utils.SpanBuilder -import com.gh.gamecenter.common.utils.dip2px -import com.gh.gamecenter.common.view.CustomLinkMovementMethod import com.gh.gamecenter.R import com.gh.gamecenter.WebActivity -import com.gh.gamecenter.databinding.FragmentTeenagerModeBinding import com.gh.gamecenter.common.base.fragment.ToolbarFragment +import com.gh.gamecenter.common.constant.Constants +import com.gh.gamecenter.common.utils.dip2px import com.gh.gamecenter.common.utils.toColor import com.gh.gamecenter.common.utils.toDrawable +import com.gh.gamecenter.common.view.CustomLinkMovementMethod import com.gh.gamecenter.core.utils.ClickUtils +import com.gh.gamecenter.core.utils.SPUtils +import com.gh.gamecenter.core.utils.SpanBuilder +import com.gh.gamecenter.databinding.FragmentTeenagerModeBinding class TeenagerModeFragment : ToolbarFragment() { @@ -56,8 +56,11 @@ class TeenagerModeFragment : ToolbarFragment() { val clickText = "《儿童/青少年使用须知》" val hintText = "更多信息可阅读 $clickText" mBinding?.hintTv?.text = SpanBuilder(hintText).click( - hintText.length - clickText.length, hintText.length, - R.color.theme_font, false + requireContext(), + hintText.length - clickText.length, + hintText.length, + R.color.theme_font, + false ) { startActivity(WebActivity.getWebIntent(requireContext(), "儿童/青少年使用须知", Constants.TEEN_MODE_RULE)) }.build() diff --git a/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxBlockActivity.kt b/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxBlockActivity.kt index 2f1f25b77e..1a877f696d 100644 --- a/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxBlockActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/toolbox/ToolBoxBlockActivity.kt @@ -13,15 +13,15 @@ import android.widget.TextView import androidx.activity.viewModels import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.SimpleItemAnimator -import com.gh.gamecenter.common.base.activity.ToolBarActivity -import com.gh.gamecenter.common.view.CustomLinkMovementMethod import com.gh.gamecenter.R import com.gh.gamecenter.SuggestionActivity import com.gh.gamecenter.WebActivity +import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.common.baselist.LoadStatus import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.utils.* -import com.gh.gamecenter.core.utils.* +import com.gh.gamecenter.common.view.CustomLinkMovementMethod +import com.gh.gamecenter.core.utils.SpanBuilder import com.gh.gamecenter.databinding.ActivityToolboxBlockBinding import com.gh.gamecenter.suggest.SuggestType import com.google.android.material.appbar.AppBarLayout @@ -70,7 +70,7 @@ class ToolBoxBlockActivity : ToolBarActivity() { toolboxRefresh.setOnRefreshListener { refresh() } - feedbackTv.text = SpanBuilder("需要其他工具,点击反馈").click(7, 11, R.color.theme, false) { + feedbackTv.text = SpanBuilder("需要其他工具,点击反馈").click(this@ToolBoxBlockActivity, 7, 11, R.color.theme, false) { SuggestionActivity.startSuggestionActivity( this@ToolBoxBlockActivity, SuggestType.normal, diff --git a/app/src/main/java/com/gh/gamecenter/vote/VoteAdapter.kt b/app/src/main/java/com/gh/gamecenter/vote/VoteAdapter.kt index 0699d8d6bb..b16bbeebd0 100644 --- a/app/src/main/java/com/gh/gamecenter/vote/VoteAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/vote/VoteAdapter.kt @@ -14,7 +14,6 @@ import com.gh.gamecenter.CleanApkActivity import com.gh.gamecenter.GameDetailActivity.Companion.startGameDetailActivity import com.gh.gamecenter.NewsDetailActivity import com.gh.gamecenter.R -import com.gh.gamecenter.common.viewholder.FooterViewHolder import com.gh.gamecenter.adapter.viewholder.VoteViewHolder import com.gh.gamecenter.common.baselist.ListAdapter import com.gh.gamecenter.common.baselist.LoadStatus @@ -24,6 +23,7 @@ import com.gh.gamecenter.common.utils.ifLogin import com.gh.gamecenter.common.utils.toColor import com.gh.gamecenter.common.utils.toDrawable import com.gh.gamecenter.common.view.CustomLinkMovementMethod +import com.gh.gamecenter.common.viewholder.FooterViewHolder import com.gh.gamecenter.core.utils.DisplayUtils import com.gh.gamecenter.core.utils.MtaHelper import com.gh.gamecenter.core.utils.SpanBuilder @@ -100,8 +100,9 @@ class VoteAdapter(context: Context, private val fragment: VoteFragment, private val uploadText = "去上传>" val allReplyText = "$replyText $uploadText" replyText = SpanBuilder(allReplyText) - .color(0, 5, R.color.theme_font) + .color(mContext, 0, 5, R.color.theme_font) .click( + mContext, replyText.length + 1, allReplyText.length, R.color.theme_font, @@ -122,7 +123,7 @@ class VoteAdapter(context: Context, private val fragment: VoteFragment, private holder.binding.voteItemReply.movementMethod = CustomLinkMovementMethod.getInstance() } else { replyText = SpanBuilder(replyText) - .color(0, 5, R.color.theme_font).build() + .color(mContext, 0, 5, R.color.theme_font).build() } holder.binding.voteItemReply.text = replyText holder.binding.voteItemReply.visibility = View.VISIBLE diff --git a/app/src/main/java/com/halo/assistant/fragment/SwitchInstallMethodFragment.kt b/app/src/main/java/com/halo/assistant/fragment/SwitchInstallMethodFragment.kt index ff6db0119a..e1a4368dc2 100644 --- a/app/src/main/java/com/halo/assistant/fragment/SwitchInstallMethodFragment.kt +++ b/app/src/main/java/com/halo/assistant/fragment/SwitchInstallMethodFragment.kt @@ -5,17 +5,17 @@ import android.os.Build import android.os.Bundle import android.provider.Settings import android.view.View -import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.core.utils.SPUtils -import com.gh.gamecenter.core.utils.SpanBuilder -import com.gh.gamecenter.common.view.CustomLinkMovementMethod import com.gh.download.server.BrowserInstallHelper import com.gh.gamecenter.R import com.gh.gamecenter.WebActivity -import com.gh.gamecenter.databinding.FragmentSwitchInstallMethodBinding import com.gh.gamecenter.common.base.fragment.ToolbarFragment +import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.utils.toColor import com.gh.gamecenter.common.utils.updateStatusBarColor +import com.gh.gamecenter.common.view.CustomLinkMovementMethod +import com.gh.gamecenter.core.utils.SPUtils +import com.gh.gamecenter.core.utils.SpanBuilder +import com.gh.gamecenter.databinding.FragmentSwitchInstallMethodBinding import java.util.* /** @@ -50,7 +50,7 @@ class SwitchInstallMethodFragment : ToolbarFragment() { val endText = if (manufacturer == "OPPO") " 设置锁屏密码,再点击[添加指纹]录入指纹,将指纹用于[安装验证];或者点击[添加面部]录入面部,将面部用于[安装验证],即可实现快速安装" else "开启锁屏密码,再点击[添加指纹]录入指纹,将指纹用于[解锁],即可实现快速安装" defaultHintText = "1.直接使用光环助手下载应用,但${manufacturer}手机自身安全性检测,下载后需要进行验证账户密码、指纹等解锁后安装\n2.您可以 $clickText$endText" defaultHintText = SpanBuilder(defaultHintText) - .click(defaultHintText.length - clickText.length - endText.length, defaultHintText.length - endText.length, R.color.theme_font, true) { + .click(requireContext(), defaultHintText.length - clickText.length - endText.length, defaultHintText.length - endText.length, R.color.theme_font, true) { requireContext().startActivity(Intent(Settings.ACTION_SETTINGS)) } .build() @@ -58,7 +58,7 @@ class SwitchInstallMethodFragment : ToolbarFragment() { val clickableText: CharSequence = "可查看使用教程>" browserHintText = "$browserHintText\n\n以上未能解决安装需要密码的,$clickableText" browserHintText = SpanBuilder(browserHintText) - .click(browserHintText.length - clickableText.length, browserHintText.length, R.color.theme_font, true) { + .click(requireContext(), browserHintText.length - clickableText.length, browserHintText.length, R.color.theme_font, true) { val url = SPUtils.getString(Constants.SP_BROWSER_HINT_URL, if (manufacturer == "OPPO") Constants.DEFAULT_OPPO_BROWSER_HINT_URL else Constants.DEFAULT_VIVO_BROWSER_HINT_URL) requireContext().startActivity(WebActivity.getQAIntent(requireContext(), url, "安装问题", false, 1)) } diff --git a/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoFragment.kt b/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoFragment.kt index b60d37ffb4..05b9c47743 100644 --- a/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoFragment.kt +++ b/app/src/main/java/com/halo/assistant/fragment/user/RealNameInfoFragment.kt @@ -125,6 +125,7 @@ class RealNameInfoFragment : ToolbarFragment() { mBinding.bodyTv.text = SpanBuilder(bodyString) .click( + requireContext(), bodyString.length - "前往了解更多信息>>".length, bodyString.length, R.color.theme_font @@ -148,6 +149,7 @@ class RealNameInfoFragment : ToolbarFragment() { mBinding.manualHintTv.text = SpanBuilder(manualHintString) .click( + requireContext(), manualHintString.length - "人工审核".length, manualHintString.length, isUnderlineText = true, diff --git a/module_core/src/main/java/com/gh/gamecenter/core/utils/SpanBuilder.kt b/module_core/src/main/java/com/gh/gamecenter/core/utils/SpanBuilder.kt index 7650700bd1..fb43c979ad 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/utils/SpanBuilder.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/utils/SpanBuilder.kt @@ -22,12 +22,6 @@ class SpanBuilder(content: CharSequence) { return this } - fun color(start: Int, end: Int, colorRes: Int): SpanBuilder { - val colorSpan = ForegroundColorSpan(ContextCompat.getColor(HaloApp.getInstance(), colorRes)) - spannableString.setSpan(colorSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) - return this - } - fun color(start: Int, end: Int, colorHexInString: String): SpanBuilder { try { val colorSpan = ForegroundColorSpan(Color.parseColor(colorHexInString)) @@ -79,18 +73,17 @@ class SpanBuilder(content: CharSequence) { return this } - fun click(start: Int, end: Int, colorRes: Int, isUnderlineText: Boolean = false, onClick: () -> Unit): SpanBuilder { + fun click(context: Context, start: Int, end: Int, colorRes: Int, isUnderlineText: Boolean = false, onClick: () -> Unit): SpanBuilder { val clickSpan = object : ClickableSpan() { override fun updateDrawState(ds: TextPaint) { super.updateDrawState(ds) - ds.color = ContextCompat.getColor(HaloApp.getInstance(), colorRes) + ds.color = ContextCompat.getColor(context, colorRes) ds.isUnderlineText = isUnderlineText } override fun onClick(widget: View) { onClick.invoke() } - } spannableString.setSpan(clickSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) return this