feat: 補充卡片背景,補充 VIP 資源播放 MP4 的功能
@@ -11,7 +11,14 @@ import com.chwl.app.databinding.ItemMyUserCardWearBinding;
|
||||
import com.chwl.app.ui.utils.ImageLoadUtils;
|
||||
import com.chwl.core.decoration.headwear.bean.HeadWearInfo;
|
||||
import com.chwl.core.decoration.headwear.bean.UserCardWearInfo;
|
||||
import com.chwl.library.download.DownloadManager;
|
||||
import com.chwl.library.download.DownloadRequest;
|
||||
import com.chwl.library.download.DownloadTask;
|
||||
import com.chwl.library.download.FileDownloadListener;
|
||||
import com.chwl.library.utils.ResUtil;
|
||||
import com.chwl.library.utils.PathHelper;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* Created by huangmeng1 on 2018/5/11.
|
||||
@@ -28,6 +35,19 @@ public class MyUserCardWearAdapter extends BaseAdapter<UserCardWearInfo> {
|
||||
super.convert(helper, item);
|
||||
ItemMyUserCardWearBinding binding = (ItemMyUserCardWearBinding) helper.getBinding();
|
||||
ImageLoadUtils.loadImage(mContext, item.getPic(), binding.ivUserCardWear);
|
||||
|
||||
|
||||
String filePath = PathHelper.INSTANCE.generateResourcesFilePath(item.getPic());
|
||||
DownloadRequest request = DownloadRequest.Companion.build(item.getPic(), filePath, "gift_effect_download", null, 60000L);
|
||||
DownloadManager.INSTANCE.download(request, new FileDownloadListener() {
|
||||
@Override
|
||||
public void onDownloadCompleted(@NonNull DownloadTask task) {
|
||||
String path = task.getRequest().getPath();
|
||||
binding.ivUserCardWearMp4.startPlay(new File(path));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
helper.addOnClickListener(R.id.tv_used);
|
||||
|
||||
if (item.getLabelType() == HeadWearInfo.LABEL_TYPE_NORMAL) {
|
||||
|
@@ -32,6 +32,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.chwl.app.utils.AvatarHelper;
|
||||
import com.chwl.core.vip.bean.UserVipInfo;
|
||||
import com.chwl.library.download.DownloadException;
|
||||
import com.chwl.library.download.DownloadManager;
|
||||
import com.chwl.library.download.DownloadRequest;
|
||||
@@ -595,10 +596,11 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
|
||||
|
||||
//资料卡装扮
|
||||
if (!TextUtils.isEmpty(userInfo.getUserInfoCardPic())) {
|
||||
// drawVAPEffect(userInfo.getUserInfoCardPic());
|
||||
drawVAPEffect("https://image.pekolive.com/v7.mp4");
|
||||
drawVAPEffect(userInfo.getUserInfoCardPic());
|
||||
// drawVAPEffect("https://image.pekolive.com/v7.mp4");
|
||||
} else {
|
||||
ivUserCardWear.setImageDrawable(null);
|
||||
ivUserCardWearMP4.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if (null != findHimView) {
|
||||
@@ -747,7 +749,8 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
|
||||
|
||||
private void updateNobleView() {
|
||||
// 防止访问数据库和网络同时刷新出现图标跳动
|
||||
NobleInfo nobleInfo = userInfo.getNobleInfo();
|
||||
// NobleInfo nobleInfo = userInfo.getNobleInfo();
|
||||
UserVipInfo vipInfo = userInfo.getUserVipInfoVO();
|
||||
HeadWearInfo userHeadwear = userInfo.getUserHeadwear();
|
||||
boolean havaHead = false;
|
||||
// 设置普通人
|
||||
@@ -758,31 +761,46 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe
|
||||
AvatarHelper.loadAvatarFrame(ivAvatarHeadWear, avatarFrame, userHeadwear.getType());
|
||||
}
|
||||
}
|
||||
|
||||
if (nobleInfo == null || TextUtils.isEmpty(nobleInfo.getCardBg())) {
|
||||
//如果没贵族信息,就加载头像作为背景
|
||||
if (vipInfo != null) {
|
||||
// findViewById(R.id.transition_mask).setVisibility(View.GONE);
|
||||
// ivAvatarBg.setImageResource(R.drawable.user_card_bg_vip_9);
|
||||
int lv = vipInfo.getVipLevel();
|
||||
String resourceName = "user_card_bg_vip_" + lv;
|
||||
int resourceId = context.getResources().getIdentifier(resourceName, "drawable", context.getPackageName());
|
||||
if (resourceId != 0) {
|
||||
ivAvatarBg.setImageResource(resourceId);
|
||||
}
|
||||
} else {
|
||||
if (avatarBg == null || !avatarBg.equals(userInfo.getAvatar())) {
|
||||
avatarBg = userInfo.getAvatar();
|
||||
ImageLoadUtils.loadImageWithBlur(context, userInfo.getAvatar(), ivAvatarBg, 10, 1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
// 卡片背景
|
||||
if (!TextUtils.isEmpty(nobleInfo.getCardBg()) && !topBg.equals(nobleInfo.getCardBg())) {
|
||||
topBg = nobleInfo.getCardBg();
|
||||
NobleUtil.loadResource(nobleInfo.getCardBg(), ivAvatarBg, R.drawable.bg_user_info_dialog_top);
|
||||
}
|
||||
if (!TextUtils.isEmpty(nobleInfo.getHeadWear())) {
|
||||
// 头饰
|
||||
if (!havaHead) {
|
||||
NobleUtil.loadResource(nobleInfo.getHeadWear(), ivAvatarHeadWear);
|
||||
}
|
||||
}
|
||||
if (!TextUtils.isEmpty(nobleInfo.getBadge())) {
|
||||
// 勋章
|
||||
ivBadge.setVisibility(View.VISIBLE);
|
||||
NobleUtil.loadResource(nobleInfo.getBadge(), ivBadge);
|
||||
}
|
||||
|
||||
// if (nobleInfo == null || TextUtils.isEmpty(nobleInfo.getCardBg())) {
|
||||
// //如果没贵族信息,就加载头像作为背景
|
||||
// if (avatarBg == null || !avatarBg.equals(userInfo.getAvatar())) {
|
||||
// avatarBg = userInfo.getAvatar();
|
||||
// ImageLoadUtils.loadImageWithBlur(context, userInfo.getAvatar(), ivAvatarBg, 10, 1);
|
||||
// }
|
||||
// return;
|
||||
// }
|
||||
// // 卡片背景
|
||||
// if (!TextUtils.isEmpty(nobleInfo.getCardBg()) && !topBg.equals(nobleInfo.getCardBg())) {
|
||||
// topBg = nobleInfo.getCardBg();
|
||||
// NobleUtil.loadResource(nobleInfo.getCardBg(), ivAvatarBg, R.drawable.bg_user_info_dialog_top);
|
||||
// }
|
||||
// if (!TextUtils.isEmpty(nobleInfo.getHeadWear())) {
|
||||
// // 头饰
|
||||
// if (!havaHead) {
|
||||
// NobleUtil.loadResource(nobleInfo.getHeadWear(), ivAvatarHeadWear);
|
||||
// }
|
||||
// }
|
||||
// if (!TextUtils.isEmpty(nobleInfo.getBadge())) {
|
||||
// // 勋章
|
||||
// ivBadge.setVisibility(View.VISIBLE);
|
||||
// NobleUtil.loadResource(nobleInfo.getBadge(), ivBadge);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
@@ -221,12 +221,13 @@ class VipCenterActivity : BaseViewBindingActivity<ActivityVipCenterBinding>(),
|
||||
|
||||
vipViewModel.myVipInfoLiveData.observe(this) {
|
||||
it?.let {
|
||||
banner.setCurrentItem(it.currLevel - 1)
|
||||
|
||||
val adapter = vipViewModel.vipInfosLiveData.value?.let { it1 ->
|
||||
VipCenterBannerAdapter(this,
|
||||
it1, it)
|
||||
}
|
||||
banner.setAdapter(adapter, false)
|
||||
banner.setCurrentItem(it.currLevel - 1)
|
||||
//TODO 处理有 VIP 的情况,banner 要跳转到对应 index
|
||||
// bannerView.visibility = View.VISIBLE
|
||||
// bannerView.post {
|
||||
|
@@ -12,6 +12,14 @@ import com.chwl.app.base.BaseDialogFragment
|
||||
import com.chwl.app.databinding.DialogVipUpgradeBinding
|
||||
import com.chwl.app.vip.VipViewModel
|
||||
import com.chwl.core.vip.bean.VipInfo
|
||||
import com.chwl.library.download.DownloadException
|
||||
import com.chwl.library.download.DownloadManager.download
|
||||
import com.chwl.library.download.DownloadRequest
|
||||
import com.chwl.library.download.DownloadRequest.Companion
|
||||
import com.chwl.library.download.DownloadTask
|
||||
import com.chwl.library.download.FileDownloadListener
|
||||
import com.chwl.library.utils.PathHelper.generateResourcesFilePath
|
||||
import java.io.File
|
||||
import java.net.MalformedURLException
|
||||
import java.net.URL
|
||||
|
||||
@@ -53,23 +61,37 @@ class VipUpgradeDialog : BaseDialogFragment<DialogVipUpgradeBinding>() {
|
||||
}
|
||||
binding?.tvVipUplevel?.setOnClickListener { dismissAllowingStateLoss() }
|
||||
binding?.tvVipOrigin?.setOnClickListener { vm.saveOriginDisguise() }
|
||||
try {
|
||||
SVGAParser.shareParser()
|
||||
.decodeFromURL(URL(vipInfo.vipLogo), object : SVGAParser.ParseCompletion {
|
||||
override fun onComplete(videoItem: SVGAVideoEntity) {
|
||||
val drawable = SVGADrawable(videoItem)
|
||||
if (isViewLoaded) {
|
||||
_binding?.ivVipIcon?.setImageDrawable(drawable)
|
||||
_binding?.ivVipIcon?.startAnimation()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
}
|
||||
})
|
||||
} catch (e: MalformedURLException) {
|
||||
val filePath = generateResourcesFilePath(vipInfo.vipLogo)
|
||||
val request = DownloadRequest.build(vipInfo.vipLogo, filePath, "gift_effect_download", null, 60000L)
|
||||
download(request, object : FileDownloadListener() {
|
||||
override fun onDownloadCompleted(task: DownloadTask) {
|
||||
val path = task.getRequest().getPath()
|
||||
binding?.ivVipIconMp4?.startPlay(File(path))
|
||||
}
|
||||
|
||||
}
|
||||
override fun onDownloadError(exception: DownloadException) {
|
||||
exception.printStackTrace()
|
||||
}
|
||||
})
|
||||
|
||||
// try {
|
||||
// SVGAParser.shareParser()
|
||||
// .decodeFromURL(URL(vipInfo.vipLogo), object : SVGAParser.ParseCompletion {
|
||||
// override fun onComplete(videoItem: SVGAVideoEntity) {
|
||||
// val drawable = SVGADrawable(videoItem)
|
||||
// if (isViewLoaded) {
|
||||
// _binding?.ivVipIcon?.setImageDrawable(drawable)
|
||||
// _binding?.ivVipIcon?.startAnimation()
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// override fun onError() {
|
||||
// }
|
||||
// })
|
||||
// } catch (e: MalformedURLException) {
|
||||
//
|
||||
// }
|
||||
binding?.tvLevelDesc?.text = getString(R.string.level_up_wear_dress_tips_format).format(vipInfo.vipName)
|
||||
}
|
||||
}
|
BIN
app/src/main/res/drawable-xhdpi/user_card_bg_vip_1.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
app/src/main/res/drawable-xhdpi/user_card_bg_vip_2.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
app/src/main/res/drawable-xhdpi/user_card_bg_vip_3.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
app/src/main/res/drawable-xhdpi/user_card_bg_vip_4.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
app/src/main/res/drawable-xhdpi/user_card_bg_vip_5.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
app/src/main/res/drawable-xhdpi/user_card_bg_vip_6.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
app/src/main/res/drawable-xhdpi/user_card_bg_vip_7.png
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
app/src/main/res/drawable-xhdpi/user_card_bg_vip_8.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
app/src/main/res/drawable-xhdpi/user_card_bg_vip_9.png
Normal file
After Width: | Height: | Size: 32 KiB |
@@ -35,14 +35,15 @@
|
||||
<com.makeramen.roundedimageview.RoundedImageView
|
||||
android:id="@+id/iv_avatar_bg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:layout_height="wrap_content"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/default_banner"
|
||||
app:riv_corner_radius_top_left="@dimen/dp_10"
|
||||
app:riv_corner_radius_top_right="@dimen/dp_10"
|
||||
tools:contentDescription="@string/layout_dialog_user_info_02" />
|
||||
|
||||
<com.coorchice.library.SuperTextView
|
||||
android:id="@+id/transition_mask"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:corner="@dimen/dp_10"
|
||||
|
@@ -29,8 +29,16 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.opensource.svgaplayer.SVGAImageView
|
||||
android:id="@+id/iv_vip_icon"
|
||||
<!-- <com.opensource.svgaplayer.SVGAImageView-->
|
||||
<!-- android:id="@+id/iv_vip_icon"-->
|
||||
<!-- android:layout_width="182dp"-->
|
||||
<!-- android:layout_height="109dp"-->
|
||||
<!-- app:layout_constraintEnd_toEndOf="parent"-->
|
||||
<!-- app:layout_constraintStart_toStartOf="parent"-->
|
||||
<!-- app:layout_constraintTop_toBottomOf="@id/tv_title" />-->
|
||||
|
||||
<com.tencent.qgame.animplayer.AnimView
|
||||
android:id="@+id/iv_vip_icon_mp4"
|
||||
android:layout_width="182dp"
|
||||
android:layout_height="109dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
@@ -130,6 +130,21 @@
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_name"
|
||||
tools:src="@drawable/bg_user_card_wear" />
|
||||
|
||||
<com.tencent.qgame.animplayer.AnimView
|
||||
android:id="@+id/iv_user_card_wear_mp4"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="25dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_marginEnd="25dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:scaleType="fitXY"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintDimensionRatio="660:360"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_name"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</layout>
|