From 91893bb3b73cc7d23319d4aa9bce2f3b6cfc7149 Mon Sep 17 00:00:00 2001 From: HuanCheng65 <22636177+HuanCheng65@users.noreply.github.com> Date: Thu, 20 Jul 2023 15:31:08 +0800 Subject: [PATCH] =?UTF-8?q?pref:=20=E8=A1=A8=E6=83=85=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tieba/post/activities/ReplyActivity.kt | 4 +- .../tieba/post/adapters/MessageListAdapter.kt | 15 +++-- .../post/adapters/RecyclerFloorAdapter.java | 2 +- .../tieba/post/adapters/ThreadReplyAdapter.kt | 2 +- .../tieba/post/utils/EmoticonManager.kt | 55 ++++++++++++++++--- .../tieba/post/utils/EmoticonUtil.kt | 4 +- .../tieba/post/utils/PostListAdapterHelper.kt | 2 +- .../tieba/post/utils/StringUtil.kt | 6 +- 8 files changed, 67 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/ReplyActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/ReplyActivity.kt index 55cb96ea..1802c2c0 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/activities/ReplyActivity.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/ReplyActivity.kt @@ -346,9 +346,9 @@ class ReplyActivity : BaseActivity(), View.OnClickListener, editText.mgr.disable() editText.setText( StringUtil.getEmoticonContent( - EmoticonUtil.EMOTICON_ALL_WEB_TYPE, editText, - content + content, + EmoticonUtil.EMOTICON_ALL_WEB_TYPE ) ) editText.mgr.enable() diff --git a/app/src/main/java/com/huanchengfly/tieba/post/adapters/MessageListAdapter.kt b/app/src/main/java/com/huanchengfly/tieba/post/adapters/MessageListAdapter.kt index f2ba9527..ebd9044e 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/adapters/MessageListAdapter.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/adapters/MessageListAdapter.kt @@ -10,7 +10,12 @@ import com.huanchengfly.tieba.post.api.models.MessageListBean import com.huanchengfly.tieba.post.api.models.MessageListBean.MessageInfoBean import com.huanchengfly.tieba.post.components.MyViewHolder import com.huanchengfly.tieba.post.fragments.MessageFragment -import com.huanchengfly.tieba.post.utils.* +import com.huanchengfly.tieba.post.utils.DateTimeUtils +import com.huanchengfly.tieba.post.utils.EmoticonUtil +import com.huanchengfly.tieba.post.utils.ImageUtil +import com.huanchengfly.tieba.post.utils.NavigationHelper +import com.huanchengfly.tieba.post.utils.StringUtil +import com.huanchengfly.tieba.post.utils.getItemBackgroundDrawable class MessageListAdapter( context: Context, private val type: Int @@ -73,13 +78,12 @@ class MessageListAdapter( ) val contentTextView = viewHolder.getView(R.id.message_list_item_content) contentTextView.text = StringUtil.getEmoticonContent( - EmoticonUtil.EMOTICON_ALL_TYPE, contentTextView, - item.content + item.content, + EmoticonUtil.EMOTICON_ALL_TYPE ) val textView = viewHolder.getView(R.id.message_list_item_quote) textView.text = StringUtil.getEmoticonContent( - EmoticonUtil.EMOTICON_ALL_TYPE, textView, if (type == MessageFragment.TYPE_REPLY_ME) { if ("1" == item.isFloor) { @@ -89,7 +93,8 @@ class MessageListAdapter( } } else { item.title - } + }, + EmoticonUtil.EMOTICON_ALL_TYPE ) textView.setOnClickListener { if ("1" == item.isFloor && item.quotePid != null) { diff --git a/app/src/main/java/com/huanchengfly/tieba/post/adapters/RecyclerFloorAdapter.java b/app/src/main/java/com/huanchengfly/tieba/post/adapters/RecyclerFloorAdapter.java index 552e3409..08376389 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/adapters/RecyclerFloorAdapter.java +++ b/app/src/main/java/com/huanchengfly/tieba/post/adapters/RecyclerFloorAdapter.java @@ -257,7 +257,7 @@ public class RecyclerFloorAdapter extends BaseSingleTypeAdapter = mapOf( "呵呵" to "image_emoticon1", @@ -128,13 +137,8 @@ object EmoticonManager { PlaceholderVerticalAlign.TextCenter ), children = { - Image( - painter = rememberDrawablePainter( - drawable = getEmoticonDrawable( - LocalContext.current, - id - ) - ), + AsyncImage( + imageUri = rememberEmoticonUri(id = id), contentDescription = stringResource( id = R.string.emoticon, getEmoticonNameById(id) ?: "" @@ -212,6 +216,15 @@ object EmoticonManager { return File(getEmoticonCacheDir(), "$id.png") } + fun getAllEmoticon(): List { + return emoticonIds.map { id -> + Emoticon( + id = id, + name = getEmoticonNameById(id) ?: "" + ) + } + } + fun getEmoticonIdByName(name: String): String? { return emoticonMapping[name] } @@ -252,6 +265,32 @@ object EmoticonManager { ).also { drawableCache[id] = it } } + fun getEmoticonUri(context: Context, id: String?): String { + id ?: return "" + val resId = getEmoticonResId(context, id) + if (resId != 0) { + return newResourceUri(resId) + } + val emoticonFile = getEmoticonFile(id) + if (!emoticonFile.exists()) { + return "" + } + return newFileUri(emoticonFile) + } + + @Composable + fun rememberEmoticonPainter(id: String): Painter { + val context = LocalContext.current + val drawable = remember(id) { getEmoticonDrawable(context, id) } + return rememberDrawablePainter(drawable = drawable) + } + + @Composable + fun rememberEmoticonUri(id: String): String { + val context = LocalContext.current + return remember(id) { getEmoticonUri(context, id) } + } + private suspend fun fetchEmoticons(context: Context) { emoticonIds.forEach { val resId = getEmoticonResId(context, it) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/EmoticonUtil.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/EmoticonUtil.kt index d64e2a7c..b04525db 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/utils/EmoticonUtil.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/EmoticonUtil.kt @@ -172,8 +172,8 @@ object EmoticonUtil { // 特殊文字处理,将表情等转换一下 mEditText!!.setText( getEmoticonContent( - emoticon_map_type, - mEditText!!, sb + mEditText!!, + sb, emoticon_map_type ) ) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/PostListAdapterHelper.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/PostListAdapterHelper.kt index a6aa1c57..5abf939c 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/utils/PostListAdapterHelper.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/PostListAdapterHelper.kt @@ -133,7 +133,7 @@ class PostListAdapterHelper( private fun setText(textView: TextView, content: CharSequence?) { var text = content text = replaceVideoNumberSpan(context, text) - text = StringUtil.getEmoticonContent(EmoticonUtil.EMOTICON_ALL_TYPE, textView, text) + text = StringUtil.getEmoticonContent(textView, text, EmoticonUtil.EMOTICON_ALL_TYPE) textView.text = text } diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/StringUtil.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/StringUtil.kt index bb5b2fdd..0a3a1bd1 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/utils/StringUtil.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/StringUtil.kt @@ -25,9 +25,9 @@ import kotlin.math.roundToInt object StringUtil { @JvmStatic fun getEmoticonContent( - emoticon_map_type: Int, tv: TextView, - source: CharSequence? + source: CharSequence?, + emoticonType: Int = EmoticonUtil.EMOTICON_ALL_TYPE ): SpannableString { return try { if (source == null) { @@ -38,7 +38,7 @@ object StringUtil { } else { SpannableString(source) } - val regexEmoticon = EmoticonUtil.getRegex(emoticon_map_type) + val regexEmoticon = EmoticonUtil.getRegex(emoticonType) val patternEmoticon = Pattern.compile(regexEmoticon) val matcherEmoticon = patternEmoticon.matcher(spannableString) while (matcherEmoticon.find()) {