From 2a0d8f06fab8bff808177c9187f140bc371372a0 Mon Sep 17 00:00:00 2001 From: max Date: Thu, 4 Jul 2024 15:19:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A4=B4=E9=A5=B0=E6=94=AF=E6=8C=81SVGA?= =?UTF-8?q?=EF=BC=88=E4=B8=AA=E4=BA=BA=E8=B5=84=E6=96=99=E9=A1=B5=E3=80=81?= =?UTF-8?q?=E6=88=BF=E9=97=B4=E4=B8=AA=E4=BA=BA=E8=B5=84=E6=96=99=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E3=80=81=E5=8A=A8=E6=80=81=E5=88=97=E8=A1=A8=E3=80=81?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=AF=A6=E6=83=85=E3=80=81=E6=88=91=E7=9A=84?= =?UTF-8?q?=E5=A4=B4=E9=A5=B0=E5=88=97=E8=A1=A8=E3=80=81=E5=85=AC=E8=81=8A?= =?UTF-8?q?=E5=8E=85=E3=80=81=E6=88=BF=E9=97=B4=E9=BA=A6=E4=BD=8D=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 1 - app/src/main/AndroidManifest.xml | 2 + .../app/avroom/activity/AVRoomActivity.java | 14 + .../avroom/adapter/BaseMicroViewAdapter.java | 13 +- .../app/avroom/adapter/MicroViewAdapter.java | 3 - .../app/avroom/widget/GiftEffectView.java | 3 +- .../adapter/HeadWearShopAdapter.java | 72 ---- .../decoration/adapter/MyHeadWearAdapter.java | 7 +- .../app/support/PreloadResourceViewModel.kt | 2 +- .../com/chwl/app/ui/debug/DebugActivity.kt | 50 +++ .../com/chwl/app/ui/debug/DebugAdapter.kt | 47 +++ .../chwl/app/ui/setting/SettingActivity.kt | 2 + .../ui/user/activity/UserInfoActivity.java | 7 +- .../chwl/app/ui/widget/UserInfoDialog.java | 14 +- .../java/com/chwl/app/utils/AvatarHelper.kt | 42 +++ .../main/res/layout/activity_user_info.xml | 3 +- app/src/main/res/layout/debug_activity.xml | 45 +++ app/src/main/res/layout/debug_item_svga.xml | 29 ++ app/src/main/res/layout/dialog_user_info.xml | 2 +- app/src/main/res/layout/item_boss_micro.xml | 2 +- .../main/res/layout/item_cp_boss_micro.xml | 2 +- app/src/main/res/layout/item_head_wear.xml | 59 ---- app/src/main/res/layout/item_micro_dating.xml | 2 +- .../res/layout/item_micro_dating_boss.xml | 2 +- app/src/main/res/layout/item_micro_game.xml | 6 +- .../res/layout/item_micro_single_anchor.xml | 2 +- app/src/main/res/layout/item_my_head_wear.xml | 2 +- app/src/main/res/layout/list_item_micro.xml | 2 +- .../main/res/layout/list_item_micro_cp.xml | 2 +- app/src/main/res/values/ids.xml | 2 + .../dynamic/adapter/WorldDynamicAdapter.java | 307 ------------------ .../dynamic/view/DynamicDetailActivity.java | 9 +- .../square/SquareDynamicFragment.java | 11 +- .../app/community/square/SquareFragment.java | 8 +- .../square/adapter/SquareDynamicAdapter.java | 22 +- .../res/layout/head_dynamic_detail.xml | 2 +- .../res/layout/item_square_dynamic.xml | 2 +- .../res/layout/item_world_dynamic.xml | 282 ---------------- .../core/ChatRoomMessageAdapter.java | 14 +- .../ChatRoomMessageViewHolderBase.java | 28 +- .../headwear/bean/HeadWearInfo.java | 3 + .../java/com/chwl/core/noble/NobleUtil.java | 14 +- .../chwl/core/room/model/RoomBaseModel.java | 1 + .../core/room/queue/bean/MicMemberInfo.java | 1 + .../com/chwl/core/user/bean/BaseUserInfo.java | 2 + library/build.gradle | 2 + .../com/chwl/library/utils}/PathHelper.kt | 2 +- .../java/com/chwl/library/widget/SVGAView.kt | 237 ++++++++++++++ .../com/example/lib_utils/StringUtils2.kt | 4 + .../res/layout/nim_chat_room_message_item.xml | 4 +- .../holder/PublicChatRoomNimBaseViewHolder.kt | 9 + 51 files changed, 627 insertions(+), 778 deletions(-) delete mode 100644 app/src/main/java/com/chwl/app/decoration/adapter/HeadWearShopAdapter.java create mode 100644 app/src/main/java/com/chwl/app/ui/debug/DebugActivity.kt create mode 100644 app/src/main/java/com/chwl/app/ui/debug/DebugAdapter.kt create mode 100644 app/src/main/java/com/chwl/app/utils/AvatarHelper.kt create mode 100644 app/src/main/res/layout/debug_activity.xml create mode 100644 app/src/main/res/layout/debug_item_svga.xml delete mode 100644 app/src/main/res/layout/item_head_wear.xml delete mode 100644 app/src/module_community/java/com/chwl/app/community/dynamic/adapter/WorldDynamicAdapter.java delete mode 100644 app/src/module_community/res/layout/item_world_dynamic.xml rename {core/src/main/java/com/chwl/core/helper => library/src/main/java/com/chwl/library/utils}/PathHelper.kt (99%) create mode 100644 library/src/main/java/com/chwl/library/widget/SVGAView.kt create mode 100644 nim_uikit/src/com/netease/nim/uikit/common/ui/recyclerview/holder/PublicChatRoomNimBaseViewHolder.kt diff --git a/app/build.gradle b/app/build.gradle index 2065208bb..57addf3fe 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -221,7 +221,6 @@ dependencies { api "com.jzxiang.pickerview:TimePickerDialog:1.0.1" api "com.github.zyyoona7:EasyPopup:1.0.2" api "com.github.donkingliang:LabelsView:1.6.5" - api "com.github.yyued:SVGAPlayer-Android:2.6.1" api "com.ms-square:expandableTextView:0.1.4" annotationProcessor 'androidx.annotation:annotation:1.6.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9a8a42db1..bc638fcc3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -947,6 +947,8 @@ android:windowSoftInputMode="adjustPan" android:name=".ui.feedback.FeedbackActivity" android:screenOrientation="portrait" /> + \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/avroom/activity/AVRoomActivity.java b/app/src/main/java/com/chwl/app/avroom/activity/AVRoomActivity.java index d8f6d8cf8..7b3ee6db2 100644 --- a/app/src/main/java/com/chwl/app/avroom/activity/AVRoomActivity.java +++ b/app/src/main/java/com/chwl/app/avroom/activity/AVRoomActivity.java @@ -42,6 +42,7 @@ import com.alibaba.fastjson.JSONObject; import com.chwl.app.notify.RoomNotifyManager; import com.chwl.app.ui.webview.baishun.BaiShunGameWebFragment; import com.chwl.app.ui.webview.baishun.IBaiShunGameListener; +import com.chwl.library.widget.SVGAView; import com.chwl.core.monsterhunting.bean.MonsterDataBean; import com.chwl.core.room.game.bean.BaiShunGameConfig; import com.chwl.core.support.room.AudioRoomContext; @@ -177,6 +178,15 @@ public class AVRoomActivity extends BaseMvpActivity { - private int selectPosition; - - public int getSelectPosition() { - return selectPosition; - } - - public void setSelectPosition(int selectPosition) { - notifyItemChanged(this.selectPosition); - this.selectPosition = selectPosition; - notifyItemChanged(this.selectPosition); - } - - public HeadWearShopAdapter(int layoutResId, int brid) { - super(layoutResId, brid); - } - - @Override - protected void convert(BindingViewHolder helper, HeadWearInfo item) { - super.convert(helper, item); - ItemHeadWearBinding binding = (ItemHeadWearBinding) helper.getBinding(); - binding.llRoot.setSelected(selectPosition == helper.getAdapterPosition()); - NobleUtil.loadHeadWears(item.getPic(), binding.ivHeadWear); - binding.setSelectPosition(selectPosition == helper.getAdapterPosition()); - - if (item.getLabelType() == HeadWearInfo.LABEL_TYPE_NORMAL) { - binding.ivTag.setVisibility(View.GONE); - - } else if (HeadWearInfo.LABEL_TYPE_NEW == item.getLabelType()) { - binding.ivTag.setVisibility(View.VISIBLE); - binding.ivTag.setImageResource(R.drawable.ic_mark_new); - - } else if (HeadWearInfo.LABEL_TYPE_DISCOUNT == item.getLabelType()) { - binding.ivTag.setVisibility(View.VISIBLE); - binding.ivTag.setImageResource(R.drawable.ic_mark_discount); - - } else if (HeadWearInfo.LABEL_TYPE_LIMIT == item.getLabelType()) { - binding.ivTag.setVisibility(View.VISIBLE); - binding.ivTag.setImageResource(R.drawable.ic_mark_limit); - - } else if (HeadWearInfo.LABEL_TYPE_EXCLUSIVE == item.getLabelType()) { - binding.ivTag.setVisibility(View.VISIBLE); - binding.ivTag.setImageResource(R.drawable.ic_mark_exclusive); - } - - binding.tvHeadName.setText(item.getName() + ""); - } - - public void setCarInfoHasBeenBought(HeadWearInfo carInfo) { - if (carInfo.getHeadwearId() <= 0 || ListUtils.isListEmpty(mData)) return; - int index = mData.indexOf(carInfo); - if (index == -1) return; - mData.get(index).setStatus(HeadWearInfo.STATUS_IN_USED); - notifyItemChanged(index); - } -} diff --git a/app/src/main/java/com/chwl/app/decoration/adapter/MyHeadWearAdapter.java b/app/src/main/java/com/chwl/app/decoration/adapter/MyHeadWearAdapter.java index 8ecee750e..5df707115 100644 --- a/app/src/main/java/com/chwl/app/decoration/adapter/MyHeadWearAdapter.java +++ b/app/src/main/java/com/chwl/app/decoration/adapter/MyHeadWearAdapter.java @@ -6,9 +6,11 @@ import com.chwl.app.R; import com.chwl.app.bindadapter.BaseAdapter; import com.chwl.app.bindadapter.BindingViewHolder; import com.chwl.app.databinding.ItemMyHeadWearBinding; +import com.chwl.app.utils.AvatarHelper; import com.chwl.core.decoration.headwear.bean.HeadWearInfo; import com.chwl.core.noble.NobleUtil; import com.chwl.library.utils.ResUtil; +import com.chwl.library.widget.SVGAView; /** * Created by huangmeng1 on 2018/5/11. @@ -20,11 +22,14 @@ public class MyHeadWearAdapter extends BaseAdapter { super(layoutResId, brid); } + private SVGAView.SVGACache svgaCache = SVGAView.newCache(10); + @Override protected void convert(BindingViewHolder helper, HeadWearInfo item) { super.convert(helper, item); ItemMyHeadWearBinding binding = (ItemMyHeadWearBinding) helper.getBinding(); - NobleUtil.loadHeadWears(item.getPic(), binding.ivCarCover); + binding.ivCarCover.bindCache(svgaCache); + AvatarHelper.loadAvatarFrame(binding.ivCarCover, item.getFirstUrl(), item.getType()); helper.addOnClickListener(R.id.tv_used); if (item.getLabelType() == HeadWearInfo.LABEL_TYPE_NORMAL) { diff --git a/app/src/main/java/com/chwl/app/support/PreloadResourceViewModel.kt b/app/src/main/java/com/chwl/app/support/PreloadResourceViewModel.kt index fa0788039..7e437cd5c 100644 --- a/app/src/main/java/com/chwl/app/support/PreloadResourceViewModel.kt +++ b/app/src/main/java/com/chwl/app/support/PreloadResourceViewModel.kt @@ -3,7 +3,7 @@ package com.chwl.app.support import androidx.lifecycle.viewModelScope import com.chwl.app.BuildConfig import com.chwl.app.base.BaseViewModel -import com.chwl.core.helper.PathHelper +import com.chwl.library.utils.PathHelper import com.chwl.core.home.model.HomeModel import com.chwl.library.common.util.SPUtils import com.chwl.library.download.DownloadException diff --git a/app/src/main/java/com/chwl/app/ui/debug/DebugActivity.kt b/app/src/main/java/com/chwl/app/ui/debug/DebugActivity.kt new file mode 100644 index 000000000..2f9a3f957 --- /dev/null +++ b/app/src/main/java/com/chwl/app/ui/debug/DebugActivity.kt @@ -0,0 +1,50 @@ +package com.chwl.app.ui.debug + +import com.chwl.app.base.BaseViewBindingActivity +import com.chwl.app.databinding.DebugActivityBinding +import com.netease.nim.uikit.StatusBarUtil + +class DebugActivity : BaseViewBindingActivity() { + override fun init() { + initWhiteTitleBar("调试") + initSVGAList() + } + + private fun initSVGAList() { + val adapter = DebugAdapter() + binding.recyclerView.adapter = adapter +// binding.recyclerView.setItemViewCacheSize(-1) + val svgaList = listOf( + "https://image.pekolive.com/花和玫瑰.svga", + "https://image.pekolive.com/firecrown.svga", + "https://image.pekolive.com/ningtangchengbaoqietu.svga", + "https://image.pekolive.com/xunmengfengche.svga", + "https://image.pekolive.com/tonghuaqiyuan1334.svga", + "https://image.pekolive.com/mengquyinhe.svga", + "https://image.pekolive.com/duqinghuashu.svga", + "https://image.pekolive.com/juzhijingling.svga", + "https://image.pekolive.com/3121_aixintouwei.svga", + "https://image.pekolive.com/4051_langmanyewan.svga" + ) + val list = ArrayList() + list.addAll(svgaList) + list.addAll(svgaList) + adapter.setNewData(list) + binding.btnRefreshAll.setOnClickListener { + adapter.notifyDataSetChanged() + } + binding.btnRefresh.setOnClickListener { + adapter.notifyItemChanged(5, true) + } + } + + override fun needSteepStateBar(): Boolean { + return true + } + + override fun setStatusBar() { + super.setStatusBar() + StatusBarUtil.transparencyBar(this) + StatusBarUtil.StatusBarLightMode(this) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/ui/debug/DebugAdapter.kt b/app/src/main/java/com/chwl/app/ui/debug/DebugAdapter.kt new file mode 100644 index 000000000..2754e8ea8 --- /dev/null +++ b/app/src/main/java/com/chwl/app/ui/debug/DebugAdapter.kt @@ -0,0 +1,47 @@ +package com.chwl.app.ui.debug + +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.chwl.app.R +import com.chwl.library.widget.SVGAView +import com.example.lib_utils.log.ILog + +class DebugAdapter : BaseQuickAdapter(R.layout.debug_item_svga), ILog { + + private val svgaCache = SVGAView.newCache(10) + override fun convertPayloads( + helper: BaseViewHolder, + item: String?, + payloads: MutableList + ) { + super.convertPayloads(helper, item, payloads) + logD("convertPayloads holder:${helper.absoluteAdapterPosition} #${helper.hashCode()} SVGAView") + val svgaView = helper.getView(R.id.svga_view) + svgaView.loadUrl(item) + } + + override fun convert(helper: BaseViewHolder, item: String?) { + logD("convert holder:${helper.absoluteAdapterPosition} #${helper.hashCode()} SVGAView") + helper.setText(R.id.tv_name, helper.absoluteAdapterPosition.toString()) + val item = getItem(helper.bindingAdapterPosition) + val svgaView = helper.getView(R.id.svga_view) + svgaView.bindCache(svgaCache) + svgaView.setLogTag(helper.absoluteAdapterPosition.toString()) + svgaView.loadUrl(item) + } + + override fun onViewAttachedToWindow(holder: BaseViewHolder) { + super.onViewAttachedToWindow(holder) + logD("onViewAttachedToWindow holder:${holder.absoluteAdapterPosition} #${holder.hashCode()} SVGAView") +// val item = getItem(holder.bindingAdapterPosition) +// val svgaView = holder.getView(R.id.svga_view) +// svgaView.bindCache(SVGAView.newCache(10)) +// svgaView.setLogTag(holder.absoluteAdapterPosition.toString()) +// svgaView.loadUrl(item) + } + + override fun onViewDetachedFromWindow(holder: BaseViewHolder) { + super.onViewDetachedFromWindow(holder) + logD("onViewDetachedFromWindow holder:${holder.absoluteAdapterPosition} #${holder.hashCode()} SVGAView") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/ui/setting/SettingActivity.kt b/app/src/main/java/com/chwl/app/ui/setting/SettingActivity.kt index 4c7b48832..181ba5e63 100644 --- a/app/src/main/java/com/chwl/app/ui/setting/SettingActivity.kt +++ b/app/src/main/java/com/chwl/app/ui/setting/SettingActivity.kt @@ -13,6 +13,7 @@ import com.chwl.app.base.BaseViewBindingActivity import com.chwl.app.common.widget.dialog.DialogManager.OkCancelDialogListener import com.chwl.app.databinding.ActivitySettingBinding import com.chwl.app.notify.RoomNotifyManager +import com.chwl.app.ui.debug.DebugActivity import com.chwl.app.ui.im.avtivity.BlackListManageActivity import com.chwl.app.ui.language.LanguageActivity import com.chwl.app.ui.login.BindPhoneActivity @@ -221,6 +222,7 @@ class SettingActivity : BaseViewBindingActivity(), View. } private fun debug() { + startActivity(Intent(this, DebugActivity::class.java)) // CommonWebViewActivity.start(this,"https://api.molistar.xyz/molistar/activity/2024-invitationFission/index.html") // PublicChatRoomMessageActivity.start(this) // MyDecorationActivity.start(this,0) diff --git a/app/src/main/java/com/chwl/app/ui/user/activity/UserInfoActivity.java b/app/src/main/java/com/chwl/app/ui/user/activity/UserInfoActivity.java index d447e25c2..cc57b5ecd 100644 --- a/app/src/main/java/com/chwl/app/ui/user/activity/UserInfoActivity.java +++ b/app/src/main/java/com/chwl/app/ui/user/activity/UserInfoActivity.java @@ -25,8 +25,9 @@ import com.chwl.app.ui.user.adapter.UserInfoTopAlbumAdapter; import com.chwl.app.ui.user.fragment.UserInfoDataFragment; import com.chwl.app.ui.user.fragment.UserInfoDynamicFragment; import com.chwl.app.utils.AppBarStateChangeListener; +import com.chwl.app.utils.AvatarHelper; +import com.chwl.library.widget.SVGAView; import com.chwl.core.decoration.headwear.bean.HeadWearInfo; -import com.chwl.core.noble.NobleUtil; import com.example.lib_utils.UiUtils; import com.google.android.material.appbar.AppBarLayout; import com.netease.nim.uikit.StatusBarUtil; @@ -254,6 +255,7 @@ public class UserInfoActivity extends BaseBindingActivity - + + + + + + + + +