diff --git a/app/src/main/java/com/gh/common/databind/BindingAdapters.java b/app/src/main/java/com/gh/common/databind/BindingAdapters.java index 7dfbeb6d43..23f6c43cb0 100644 --- a/app/src/main/java/com/gh/common/databind/BindingAdapters.java +++ b/app/src/main/java/com/gh/common/databind/BindingAdapters.java @@ -843,7 +843,7 @@ public class BindingAdapters { int start = index; int end = start + tag.getName().length() + ((i != showCount - 1) ? 1 : 0); index = end; - span.setSpan(new ForegroundColorSpan(Color.parseColor("#" + tag.getColor())), + span.setSpan(new ForegroundColorSpan(ExtensionsKt.hexStringToIntColor("#" + tag.getColor(), Color.WHITE)), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } view.setText(span); diff --git a/app/src/main/java/com/gh/common/util/GameViewUtils.java b/app/src/main/java/com/gh/common/util/GameViewUtils.java index 753d1ac6bd..33269a3f3b 100644 --- a/app/src/main/java/com/gh/common/util/GameViewUtils.java +++ b/app/src/main/java/com/gh/common/util/GameViewUtils.java @@ -12,6 +12,7 @@ import android.widget.TextView; import androidx.core.content.ContextCompat; +import com.gh.gamecenter.common.utils.ExtensionsKt; import com.gh.gamecenter.core.AppExecutor; import com.gh.gamecenter.common.view.DrawableView; import com.gh.gamecenter.R; @@ -125,8 +126,8 @@ public class GameViewUtils { DisplayUtils.dip2px(context, 4), DisplayUtils.dip2px(context, 1)); - textView.setTextColor(Color.parseColor("#" + tagEntity.getColor())); - textView.setBackground(DrawableView.getServerDrawable(Color.parseColor("#" + tagEntity.getBackground()))); + textView.setTextColor(ExtensionsKt.hexStringToIntColor("#" + tagEntity.getColor(), Color.WHITE)); + textView.setBackground(DrawableView.getServerDrawable(ExtensionsKt.hexStringToIntColor("#" + tagEntity.getBackground(), Color.WHITE))); } private static TextView getGameTagView(Context context, String tagStr, int rightMargin, String tagType, TagStyleEntity tagEntity) { @@ -149,10 +150,10 @@ public class GameViewUtils { if ("border".equals(tagEntity.getStyle())) { gradientDrawable.setColor(Color.TRANSPARENT); - gradientDrawable.setStroke(DisplayUtils.dip2px(context, 1f), Color.parseColor(colorStr)); - tag.setTextColor(Color.parseColor(colorStr)); + gradientDrawable.setStroke(DisplayUtils.dip2px(context, 1f), ExtensionsKt.hexStringToIntColor(colorStr, Color.WHITE)); + tag.setTextColor(ExtensionsKt.hexStringToIntColor(colorStr, Color.WHITE)); } else { - gradientDrawable.setColor(Color.parseColor(colorStr)); + gradientDrawable.setColor(ExtensionsKt.hexStringToIntColor(colorStr, Color.WHITE)); gradientDrawable.setShape(GradientDrawable.RECTANGLE); tag.setTextColor(Color.WHITE); } @@ -163,7 +164,7 @@ public class GameViewUtils { if (colorStr == null) { return null; } - int color = Color.parseColor(colorStr); + int color = ExtensionsKt.hexStringToIntColor(colorStr, Color.WHITE); GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.setColor(Color.TRANSPARENT); gradientDrawable.setStroke(DisplayUtils.dip2px(context, 1f), color); diff --git a/app/src/main/java/com/gh/gamecenter/discovery/DiscoveryAdapter.kt b/app/src/main/java/com/gh/gamecenter/discovery/DiscoveryAdapter.kt index ca4d351607..9baffc0039 100644 --- a/app/src/main/java/com/gh/gamecenter/discovery/DiscoveryAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/discovery/DiscoveryAdapter.kt @@ -351,15 +351,15 @@ class DiscoveryAdapter( visibility = View.VISIBLE text = entity.subtitle if (entity.subtitleStyle != null) { - setTextColor(Color.parseColor("#${entity.subtitleStyle?.color}")) + setTextColor("#${entity.subtitleStyle?.color}".hexStringToIntColor()) background = GradientDrawable().apply { cornerRadius = 2F.dip2px().toFloat() if (entity.subtitleStyle?.style == "border") { setColor(Color.TRANSPARENT) - setStroke(0.5F.dip2px(), Color.parseColor("#${entity.subtitleStyle?.background}")) + setStroke(0.5F.dip2px(), "#${entity.subtitleStyle?.background}".hexStringToIntColor()) } else { shape = GradientDrawable.RECTANGLE - setColor(Color.parseColor("#${entity.subtitleStyle?.background}")) + setColor("#${entity.subtitleStyle?.background}".hexStringToIntColor()) } } } diff --git a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumTopLinkAdapter.kt b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumTopLinkAdapter.kt index ba03e97c6d..b6524c4dc1 100644 --- a/app/src/main/java/com/gh/gamecenter/forum/detail/ForumTopLinkAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/forum/detail/ForumTopLinkAdapter.kt @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.gh.common.util.* +import com.gh.gamecenter.common.utils.hexStringToIntColor import com.gh.gamecenter.common.utils.toBinding import com.gh.gamecenter.common.view.DrawableView import com.gh.gamecenter.core.utils.DisplayUtils @@ -35,13 +36,13 @@ class ForumTopLinkAdapter( tagView.visibility = View.VISIBLE tagView.text = title tagView.setTextColor( - if (style.fontColor.isNotBlank()) Color.parseColor(style.fontColor) + if (style.fontColor.isNotBlank()) style.fontColor.hexStringToIntColor() else Color.WHITE ) if (style.color.isNotBlank()) { tagView.background = DrawableView.getCornerGradientDrawable( - Color.parseColor(style.color), - Color.parseColor(style.color), + style.color.hexStringToIntColor(), + style.color.hexStringToIntColor(), 3F ) } diff --git a/app/src/main/java/com/gh/gamecenter/game/GameItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/game/GameItemViewHolder.kt index 6e9d7541da..fd29b17935 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameItemViewHolder.kt @@ -107,15 +107,15 @@ class GameItemViewHolder(var binding: GameItemBinding) : BaseRecyclerViewHolder< visibility = View.VISIBLE text = entity.subtitle if (entity.subtitleStyle != null && !TextUtils.isEmpty(entity.subtitleStyle?.color)) { - setTextColor(Color.parseColor("#${entity.subtitleStyle?.color}")) + setTextColor("#${entity.subtitleStyle?.color}".hexStringToIntColor()) background = GradientDrawable().apply { cornerRadius = 2F.dip2px().toFloat() if (entity.subtitleStyle?.style == "border") { setColor(Color.TRANSPARENT) - setStroke(0.5F.dip2px(), Color.parseColor("#${entity.subtitleStyle?.background}")) + setStroke(0.5F.dip2px(), "#${entity.subtitleStyle?.background}".hexStringToIntColor()) } else { shape = GradientDrawable.RECTANGLE - setColor(Color.parseColor("#${entity.subtitleStyle?.background}")) + setColor("#${entity.subtitleStyle?.background}".hexStringToIntColor()) } } } diff --git a/app/src/main/java/com/gh/gamecenter/game/rank/RankAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/rank/RankAdapter.kt index 9e57497b6e..30f3abe9f9 100644 --- a/app/src/main/java/com/gh/gamecenter/game/rank/RankAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/rank/RankAdapter.kt @@ -14,11 +14,7 @@ import com.gh.common.exposure.ExposureEvent import com.gh.common.util.* import com.gh.gamecenter.GameDetailActivity import com.gh.gamecenter.R -import com.gh.gamecenter.common.utils.dip2px -import com.gh.gamecenter.common.utils.safelyGetInRelease -import com.gh.gamecenter.common.utils.throwExceptionInDebug -import com.gh.gamecenter.common.utils.toColor -import com.gh.gamecenter.common.utils.ImageUtils +import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.databinding.RankGameItemBinding import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.TagStyleEntity @@ -215,7 +211,7 @@ class RankAdapter( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT ).apply { rightMargin = 8F.dip2px() } - setTextColor(Color.parseColor("#" + if (tagEntity.column?.isNotEmpty() == true) tagEntity.column else tagEntity.color)) + setTextColor(("#" + if (tagEntity.column?.isNotEmpty() == true) tagEntity.column else tagEntity.color).hexStringToIntColor()) } } diff --git a/app/src/main/java/com/gh/gamecenter/game/rank/RankGameItem.kt b/app/src/main/java/com/gh/gamecenter/game/rank/RankGameItem.kt index c66591c6ba..6b0d66d9a9 100644 --- a/app/src/main/java/com/gh/gamecenter/game/rank/RankGameItem.kt +++ b/app/src/main/java/com/gh/gamecenter/game/rank/RankGameItem.kt @@ -13,10 +13,7 @@ import com.gh.common.exposure.ExposureEvent import com.gh.common.util.* import com.gh.gamecenter.GameDetailActivity import com.gh.gamecenter.R -import com.gh.gamecenter.common.utils.dip2px -import com.gh.gamecenter.common.utils.safelyGetInRelease -import com.gh.gamecenter.common.utils.throwExceptionInDebug -import com.gh.gamecenter.common.utils.toColor +import com.gh.gamecenter.common.utils.* import com.gh.gamecenter.core.utils.* import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.TagStyleEntity @@ -188,7 +185,7 @@ class RankGameItem(val rankItemUi: RankGameItemUi) { LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT ).apply { rightMargin = 8F.dip2px() } - setTextColor(Color.parseColor("#" + if (tagEntity.column?.isNotEmpty() == true) tagEntity.column else tagEntity.color)) + setTextColor(("#" + if (tagEntity.column?.isNotEmpty() == true) tagEntity.column else tagEntity.color).hexStringToIntColor()) } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt index 9536652dfe..f39d4d693c 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt @@ -560,15 +560,15 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { ellipsize = TextUtils.TruncateAt.END maxWidth = tagMaxWidth if (gameSubtitleStyle != null && !advanceDownload) { - setTextColor(Color.parseColor("#${gameSubtitleStyle.color}")) + setTextColor("#${gameSubtitleStyle.color}".hexStringToIntColor()) background = GradientDrawable().apply { cornerRadius = 2F.dip2px().toFloat() if (gameSubtitleStyle.style == "border") { setColor(Color.TRANSPARENT) - setStroke(0.5F.dip2px(), Color.parseColor("#${gameSubtitleStyle.background}")) + setStroke(0.5F.dip2px(), "#${gameSubtitleStyle.background}".hexStringToIntColor()) } else { shape = GradientDrawable.RECTANGLE - setColor(Color.parseColor("#${gameSubtitleStyle.background}")) + setColor("#${gameSubtitleStyle.background}".hexStringToIntColor()) } } } else { diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeGameItemViewHolder.kt b/app/src/main/java/com/gh/gamecenter/home/HomeGameItemViewHolder.kt index c8235a4c13..54d79ede2f 100644 --- a/app/src/main/java/com/gh/gamecenter/home/HomeGameItemViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/home/HomeGameItemViewHolder.kt @@ -181,7 +181,7 @@ class HomeGameItemViewHolder(val binding: HomeGameItemBinding) : BaseRecyclerVie val hierarchy = binding.gameImage.hierarchy try { - hierarchy.setPlaceholderImage(ColorDrawable(Color.parseColor(game.homeSetting.placeholderColor))) + hierarchy.setPlaceholderImage(ColorDrawable(game.homeSetting.placeholderColor.hexStringToIntColor())) } catch (ignore: Throwable) { hierarchy.setPlaceholderImage(RandomUtils.getRandomPlaceholderColor()) } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt index d95d72d788..50d69a8a7d 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/Extensions.kt @@ -1259,12 +1259,23 @@ fun View.setRootBackgroundDrawable(@DrawableRes res: Int) { } fun String.hexStringToIntColor(defaultColor: Int = Color.WHITE): Int { - val colorStr = if (this.length == 9) { - "#${this.substring(3)}" - } else this - return if (colorStr.length >= 7) { - Color.parseColor(colorStr) - } else defaultColor + try { + return when { + isNullOrEmpty() -> defaultColor + !isNullOrEmpty() && !startsWith("#") -> "#$this".hexStringToIntColor(defaultColor) + else -> { + val colorStr = if (this.length == 9) { + "#${this.substring(3)}" + } else this + if (colorStr.length >= 7) { + Color.parseColor(colorStr) + } else defaultColor + } + } + } catch (e: Exception) { + e.printStackTrace() + return defaultColor + } } /** diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/TextHelper.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/TextHelper.kt index 03d9db98d0..ce8d67f0df 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/TextHelper.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/TextHelper.kt @@ -329,15 +329,15 @@ object TextHelper { val strokeWidth = DisplayUtils.dip2px(1F) RoundStrokeBackgroundColorSpan( - Color.parseColor(tagStrokeColor), - Color.parseColor(tagTextColor), + tagStrokeColor.hexStringToIntColor(), + tagTextColor.hexStringToIntColor(), strokeWidth, DisplayUtils.sp2px(HaloApp.getInstance(), 10F) ) } else { RoundStrokeBackgroundColorSpan( - Color.parseColor(tagStrokeColor), - Color.parseColor(tagTextColor) + tagStrokeColor.hexStringToIntColor(), + tagTextColor.hexStringToIntColor() ) } }