fix : bugfix

This commit is contained in:
eggmanQQQ
2024-12-03 17:37:53 +08:00
parent 78dfe9c78b
commit f6db0c96ab
42 changed files with 377 additions and 140 deletions

View File

@@ -250,7 +250,7 @@ public class App extends BaseApp {
ServiceResult<?> serviceResult = (ServiceResult<?>) result;
if (serviceResult.getCode() == ServiceResult.CODE_NEED_COMPLETE_USER_INFO) {
SingleToastUtil.showToast(serviceResult.getMessage());
EventBus.getDefault().post(new NeedCompleteInfoEvent()); //todo do 生日修改异常问题
EventBus.getDefault().post(new NeedCompleteInfoEvent());
throw new ServerException(serviceResult.getMessage(), serviceResult.getCode());
} else if (serviceResult.getCode() == 401) {
if ((ServiceTime.INSTANCE.getTime() - logoutEventTime) > 800) {

View File

@@ -132,7 +132,7 @@ public class RoomOperationDialog extends BottomSheetDialog {
addSingleRoomPKAction(optAdapter); //个播PK
// addSendBroadcastAction(optAdapter); //发布广播
// addInviteFansOptAdapter(); //邀请粉丝
addRoomMusicPlay(optAdapter); //房间类型切换
addRoomMusicPlay(optAdapter); //音乐设置
addVipSendBroadcastAction(optAdapter); //小喇叭
// addRedPacketAction(optAdapter); //红包
addRoomSettingAction(optAdapter); //房间设置
@@ -661,8 +661,7 @@ public class RoomOperationDialog extends BottomSheetDialog {
boolean isOnMic = AvRoomDataManager.get().isOnMic(AuthModel.get().getCurrentUid());
if (!isOnMic) return;
//todo do 音乐图标待更换
optAdapter.addData(new OptAction(R.drawable.icon_room_vip_send_broadcast,
optAdapter.addData(new OptAction(R.drawable.icon_room_operation_music,
ResUtil.getString(R.string.layout_dialog_voice_seek_02),
() -> {
if (onActionListener != null) {

View File

@@ -14,6 +14,7 @@ import com.chwl.library.common.util.isVerify
import com.chwl.library.common.util.setViewWH
import com.chwl.library.common.util.setVis
import com.chwl.library.common.util.toColor
import com.example.lib_utils.ktx.dp
import com.example.lib_utils.ktx.getString
class DressUpAdapter : BaseBindingAdapter<ItemDressUpLayoutBinding, DressUpInfo>() {
@@ -28,13 +29,14 @@ class DressUpAdapter : BaseBindingAdapter<ItemDressUpLayoutBinding, DressUpInfo>
setViewDef(binding)
if (item.isSelect) {
binding.bg.setBackgroundResource(R.drawable.ic_dress_item_s)
} else {
binding.bg.setBackgroundResource(R.drawable.ic_dress_item_n)
}
binding.bg.setViewWH(height = if (item.isMy) 190 else 244)
if (item.isNull) {
binding.empty.setVis(true)
binding.name.text = R.string.Not_used.getString()
@@ -62,10 +64,12 @@ class DressUpAdapter : BaseBindingAdapter<ItemDressUpLayoutBinding, DressUpInfo>
//1-普通 2-活动
binding.discount.setViewWH(height = ViewGroup.LayoutParams.WRAP_CONTENT, isDP = false)
if (item.obtainWay == AnyType.ObtainWay.ACT) {
binding.discount.setViewWH(height = 51)
binding.discount.setViewWH(height = 48)
binding.name.setPadding(0,10.dp,0,10.dp)
binding.discount.text = R.string.obtainWayActionItem.getString()
} else {
binding.discount.setViewWH(height = 30)
binding.discount.setViewWH(height = 29)
binding.name.setPadding(0,5.dp,0,0)
if (item.vipLimit > 0) {
binding.discount.text = R.string.vipLimit.getString(item.vipLimit)
} else {

View File

@@ -12,6 +12,7 @@ import com.chwl.core.user.UserModel
import com.chwl.core.utils.net.RxHelper
import com.chwl.library.common.util.ClickUtils.click
import com.chwl.library.common.util.doToast
import com.chwl.library.common.util.setVis
import com.chwl.library.common.util.toColor
import com.chwl.library.net.rxnet.RxNet
import com.example.lib_utils.ktx.dp
@@ -36,47 +37,63 @@ class DressUpDialog : BaseDialogFragment<DialogDressUpBinding>() {
override fun init() {
val cacheLoginUserInfo = UserModel.get().cacheLoginUserInfo
val myVipLevel = cacheLoginUserInfo?.userVipInfoVO?.vipLevel?: 0
var canBuy = true
mDressUpInfo?.let {
binding.name.text = it.name
if (it.vipLimit == 0 && it.obtainWay != ObtainWay.ACT){
//没有等级限定,且装扮不是活动获得
DressUpUtil.setTextPrice(binding.price,it)
DressUpUtil.setTextPrice(binding.price,it,false,true)
}else{
if (it.obtainWay == ObtainWay.ACT) {
//装扮是活动获得
binding.price.setTextColor("#CCD9E7F7".toColor())
binding.price.setVis(true)
binding.price.text = R.string.obtainWayAction.getString()
canBuy = false
}else if (it.vipLimit != 0) {
if (myVipLevel >= it.vipLimit) {
DressUpUtil.setTextPrice(binding.price,it)
DressUpUtil.setTextPrice(binding.price,it,false,true)
} else {
//装扮vip等级限制没达到
binding.price.setTextColor("#CCD9E7F7".toColor())
binding.price.setVis(true)
binding.price.text = R.string.vipLimit.getString(it.vipLimit)
canBuy =false
}
}
}
DressUpUtil.setItemPic(it,binding.picLayout)
DressUpUtil.setDialogPic(it,binding.picLayout)
}
if (mTargetUid != -1L) {
binding.btnBuy.text = R.string.fairy_give.getString()
binding.btnBuy.setGradientDrawable(
"#b2fcff".toColor(),
-1,
"#4da2ea".toColor(),
-1,-1f
)
if (canBuy) {
binding.btnBuy.setVis(true)
if (mTargetUid != -1L) {
binding.btnBuy.text = R.string.fairy_give.getString()
binding.btnBuy.setGradientDrawable(
"#b2fcff".toColor(),
-1,
"#4da2ea".toColor(),
-1,-1f
)
} else {
binding.btnBuy.text = R.string.buy.getString()
binding.btnBuy.setGradientDrawable(
"#FFE3b2".toColor(),
-1,
"#e9a71d".toColor(),
-1,-1f
)
}
} else {
binding.btnBuy.text = R.string.buy.getString()
binding.btnBuy.setGradientDrawable(
"#FFE3b2".toColor(),
-1,
"#e9a71d".toColor(),
-1,-1f
)
binding.btnCancel.text = R.string.ok.getString()
binding.btnBuy.setVis(false)
}
binding.btnBuy.click {
mDressUpInfo?.let {
if (mTargetUid != -1L) {

View File

@@ -3,7 +3,6 @@ package com.chwl.app.decoration.ui.activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import androidx.viewpager2.widget.ViewPager2
import com.alibaba.fastjson.JSON
@@ -137,13 +136,13 @@ class DressUpTabActivity : BaseViewBindingActivity<ActivityDressUpTabBinding>()
binding.viewPage.offscreenPageLimit = 6
binding.viewPage.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
selectTab(position)
mDressUpInfo = null
selectTab(position)
if (isMy) {
binding.bottomView.setVis(false)
} else {
binding.bottomView.visibility = View.INVISIBLE
// binding.bottomView.visibility = View.INVISIBLE
}
}
})
@@ -190,6 +189,15 @@ class DressUpTabActivity : BaseViewBindingActivity<ActivityDressUpTabBinding>()
tabView.tabBg.setBackgroundResource(if (pos == i) R.drawable.ic_dress_tab_bg_s else R.drawable.ic_dress_tab_bg_n)
tabView.tabText.alpha = if (pos == i) 1f else 0.5f
}
if (!isMy) {
val fg = fgLists?.getOrNull(pos)
if (fg != null && fg is DressUpStoreFragment) {
fg.selectOne()
}
}
}
@@ -205,13 +213,19 @@ class DressUpTabActivity : BaseViewBindingActivity<ActivityDressUpTabBinding>()
binding.avatarHead.loadUrl(data.effect)
}
} else {
// if (data.obtainWay == ObtainWay.ACT) {
// binding.bottomView.setVis(false)
// }else if (data.vipLimit > 0 && mMyVipLevel < data.vipLimit) {
// binding.bottomView.setVis(false)
// }else {
// binding.bottomView.setVis(true)
// DressUpUtil.setTextPrice(binding.price,data)
// }
if (data.obtainWay == ObtainWay.ACT) {
binding.bottomView.setVis(false)
}else if (data.vipLimit > 0 && mMyVipLevel < data.vipLimit) {
binding.bottomView.setVis(false)
}else {
}else {
binding.bottomView.setVis(true)
DressUpUtil.setTextPrice(binding.price,data)
DressUpUtil.setTextPrice(binding.price,data,false,false)
}
}

View File

@@ -69,7 +69,8 @@ class DressUpMyFragment : BaseListFragment<DressUpInfo>() {
override fun onResume() {
super.onResume()
if (!mAdapter?.data.isVerify()){
if (!mAdapter.data.isVerify()){
mPosition = -1
onRefresh()
}
}

View File

@@ -16,6 +16,7 @@ import com.chwl.core.decoration.bean.DecorationInfo
import com.chwl.core.decoration.bean.DressUpInfo
import com.chwl.core.utils.net.RxHelper
import com.chwl.library.common.util.doToast
import com.chwl.library.common.util.isVerify
import com.chwl.library.common.util.setMargin
import com.chwl.library.net.rxnet.RxNet
import com.example.lib_utils.ktx.getString
@@ -55,8 +56,10 @@ class DressUpStoreFragment: BaseListFragment<DressUpInfo>() {
override fun onResume() {
super.onResume()
mPosition = -1
onLoad()
if (!mAdapter.data.isVerify()) {
mPosition = -1
onLoad()
}
}
override fun getAdapter(): BaseBindingAdapter<*, DressUpInfo> {
@@ -78,6 +81,9 @@ class DressUpStoreFragment: BaseListFragment<DressUpInfo>() {
newData.add(DressUpUtil.tranData(it))
}
mAdapter.setNewData(newData)
binding.rvList.post {
setlect(0)
}
}
}
.doOnError {
@@ -104,22 +110,34 @@ class DressUpStoreFragment: BaseListFragment<DressUpInfo>() {
}
override fun onItemClicks(adapter: BaseBindingAdapter<*, DressUpInfo>?, view: View?, position: Int) {
adapter?.data?.getOrNull(position)?.let { data ->
setlect(position)
}
private fun setlect(position: Int) {
mAdapter?.data?.getOrNull(position)?.let { data ->
if (mPosition != -1) {
adapter?.data?.getOrNull(mPosition)?.isSelect = false
adapter?.notifyItemChanged(mPosition)
mAdapter?.data?.getOrNull(mPosition)?.isSelect = false
mAdapter?.notifyItemChanged(mPosition)
}
mPosition = position
adapter?.data?.getOrNull(mPosition)?.isSelect = true
adapter?.notifyItemChanged(mPosition)
mAdapter?.data?.getOrNull(position)?.isSelect = true
mAdapter?.notifyItemChanged(position)
EventBus.getDefault().post(DressUpEvent(DressUpEvent.Action.Select, data))
}
}
fun selectOne() {
if (mPosition != -1) {
mAdapter?.data?.getOrNull(mPosition)?.let { data ->
EventBus.getDefault().post(DressUpEvent(DressUpEvent.Action.Select, data))
}
}
}
private fun getShopList(): Single<List<DecorationInfo>> {
return api.getShopList(mDressType)

View File

@@ -207,64 +207,129 @@ class DressUpUtil {
return outData
}
fun setTextPrice(textView: DrawableTextView, item: DressUpInfo,isItemView:Boolean = false,isDialog:Boolean = false) {
fun setTextPrice(textView: DrawableTextView, item: DressUpInfo,isItemView:Boolean = false) {
var oPrice = "0"
if (!isDialog && !isItemView) {
oPrice = ""
} else {
oPrice = if (isItemView) NumberUtils.format(item.originalPrice.toDouble(),false) else item.originalPrice
}
val oPrice = if (isItemView) NumberUtils.format(item.originalPrice.toDouble()) else item.originalPrice
val price = if (isItemView) NumberUtils.format(item.price.toDouble()) else item.price
val price = if (isItemView) NumberUtils.format(item.price.toDouble(),false) else item.price
val priceSize = if (isItemView) 13 else if(isDialog) 18 else 16
val oPriceSize = if (isItemView) 10 else if(isDialog) 14 else 12
if (price == oPrice) {
val message = R.string.s_sDays_s.getString(price, item.buyDay.toString(), "")
SpannableTextBuilder(textView).appendText(message)
.addTextStyleList(arrayListOf(
SpannableTextBuilder.TextStyleBean().apply {
text = price
textStyle = Typeface.BOLD
textSize = priceSize
},
SpannableTextBuilder.TextStyleBean().apply {
text = item.buyDay.toString()
textStyle = Typeface.NORMAL
textSize = oPriceSize
}
))
.apply()
// SpannableTextBuilder(textView).appendText(message)
// .setTextStyle(
// text = price,
// textStyle = Typeface.BOLD,
// textSize = priceSize
// ).setTextStyle(
// text = item.buyDay.toString(),
// textStyle = Typeface.NORMAL,
// textSize = oPriceSize,
// )
// .apply()
} else {
val message = R.string.s_sDays_s.getString(price, item.buyDay.toString(), oPrice)
if (textView.context.isRtl()) {
SpannableTextBuilder(textView).appendText(message)
.addTextStyleList(arrayListOf(
SpannableTextBuilder.TextStyleBean().apply {
text = item.buyDay.toString()
textStyle = Typeface.NORMAL
textSize = oPriceSize
},
SpannableTextBuilder.TextStyleBean().apply {
text = price
textStyle = Typeface.BOLD
textSize = priceSize
},
SpannableTextBuilder.TextStyleBean().apply {
text = oPrice
textColor = R.color.color_d9e7f7_50.getColor()
textStyle = Typeface.NORMAL
delLine = true
textSize = oPriceSize
}
)).apply()
// SpannableTextBuilder(textView).appendText(message)
// .setTextStyle(
// text = item.buyDay.toString(),
// textStyle = Typeface.NORMAL,
// textSize = oPriceSize,
// ).setTextStyle(
// text = price,
// textStyle = Typeface.BOLD,
// textSize = priceSize,
// ).setTextStyle(
// text = oPrice,
// textColor = R.color.color_d9e7f7_50.getColor(),
// textStyle = Typeface.NORMAL,
// delLine = true,
// textSize = oPriceSize,
// ).apply()
} else {
SpannableTextBuilder(textView).appendText(message)
.addTextStyleList(arrayListOf(
SpannableTextBuilder.TextStyleBean().apply {
text = price
textStyle = Typeface.BOLD
textSize = priceSize
},
SpannableTextBuilder.TextStyleBean().apply {
text = item.buyDay.toString()
textStyle = Typeface.NORMAL
textSize = oPriceSize
},
SpannableTextBuilder.TextStyleBean().apply {
text = oPrice
textColor = R.color.color_d9e7f7_50.getColor()
textStyle = Typeface.NORMAL
textSize = oPriceSize
delLine = true
}
)).apply()
// SpannableTextBuilder(textView).appendText(message)
// .setTextStyle(
// text = price,
// textStyle = Typeface.BOLD,
// textSize = priceSize,
// ).setTextStyle(
// text = item.buyDay.toString(),
// textStyle = Typeface.NORMAL,
// textSize = oPriceSize,
// ).setTextStyle(
// text = oPrice,
// textColor = R.color.color_d9e7f7_50.getColor(),
// textStyle = Typeface.NORMAL,
// textSize = oPriceSize,
// delLine = true,
// ).apply()
}
}
@@ -276,7 +341,7 @@ class DressUpUtil {
if (data.dressType == DressUpTabActivity.TAB_USER_CARD) {
//此时传回的是mp4..
// layout.setViewWH()
play(data,layout,true)
play(data,layout,false)
} else {
layout.removeAllViews()
val pic = ImageView(layout.context)
@@ -296,7 +361,33 @@ class DressUpUtil {
}
}
fun play(data:DressUpInfo,layout: ViewGroup,isItem :Boolean = false){
fun setDialogPic(data:DressUpInfo,layout: ViewGroup) {
if (data.dressType == DressUpTabActivity.TAB_USER_CARD) {
//此时传回的是mp4..
// layout.setViewWH()
play(data,layout,true)
} else {
layout.removeAllViews()
val pic = ImageView(layout.context)
layout.addView(pic)
if (data.dressType == DressUpTabActivity.TAB_CAR) {
pic.setViewWH(155,155)
}else if (data.dressType == DressUpTabActivity.TAB_HEAD_WEAR) {
pic.setViewWH(147,147)
}else if (data.dressType == DressUpTabActivity.TAB_USER_CARD) {
pic.setViewWH(182,161)
}else if (data.dressType == DressUpTabActivity.TAB_NAMEPLATE) {
pic.setViewWH(108,30)
}else if (data.dressType == DressUpTabActivity.TAB_CHAT_BUBBLE) {
pic.setViewWH(100,52)
}else if (data.dressType == DressUpTabActivity.TAB_USER_INFO_BG) {
pic.setViewWH(163,161)
}
pic.loadImage(data.pic)
}
}
fun play(data:DressUpInfo,layout: ViewGroup){
if (data.effect.isVerify()) {
var animView : AnimView?=null
@@ -317,26 +408,22 @@ class DressUpUtil {
svgaView.setScaleType(ImageView.ScaleType.FIT_XY)
}
//item 时占满就行
if (isItem) {
animView?.setViewWH(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, false)
svgaView?.setViewWH(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,false)
if (data.dressType == TAB_HEAD_WEAR) {
animView?.setViewWH(183, 183, true)
svgaView?.setViewWH(183, 183, true)
} else if (data.dressType == TAB_USER_CARD) {
animView?.setViewWH(285, 250, true)
svgaView?.setViewWH(285, 250, true)
} else if (data.dressType == TAB_USER_INFO_BG) {
animView?.setViewWH(305, 300, true)
svgaView?.setViewWH(305, 300, true)
} else {
if (data.dressType == TAB_HEAD_WEAR) {
animView?.setViewWH(183, 183, true)
svgaView?.setViewWH(183, 183, true)
}else if (data.dressType == TAB_USER_CARD) {
animView?.setViewWH(285, 250, true)
svgaView?.setViewWH(285, 250, true)
}else if (data.dressType == TAB_USER_INFO_BG) {
animView?.setViewWH(305, 300, true)
svgaView?.setViewWH(305, 300, true)
} else {
animView?.setViewWH(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, false)
svgaView?.setViewWH(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,false)
}
animView?.setViewWH(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, false)
svgaView?.setViewWH(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, false)
}
animView?.setAnimListener(object : IAnimListener {
override fun onFailed(errorType: Int, errorMsg: String?) { }
override fun onVideoComplete() {
@@ -371,6 +458,85 @@ class DressUpUtil {
animView?.loadAnim2(data.effect,false)
svgaView?.loadUrl(data.effect,true)
}else{
layout.setVis(false)
layout.removeAllViews()
}
}
fun play(data:DressUpInfo,layout: ViewGroup,isDialog :Boolean = false){
if (data.effect.isVerify()) {
var animView : AnimView?=null
var svgaView : SVGAView?=null
layout.setVis(true)
layout.removeAllViews()
if (data.effectType == EffectType.MP4) {
animView = AnimView(layout.context)
layout.addView(animView)
animView.setLoop(Int.MAX_VALUE)
animView.setScaleType(ScaleType.FIT_XY)
} else {
svgaView = SVGAView(layout.context)
layout.addView(svgaView)
svgaView.loops = Int.MAX_VALUE
svgaView.setScaleType(ImageView.ScaleType.FIT_XY)
}
//item 时占满就行
if (!isDialog) {
animView?.setViewWH(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, false)
svgaView?.setViewWH(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,false)
} else {
if (data.dressType == TAB_USER_CARD) {
animView?.setViewWH(182, 161, true)
svgaView?.setViewWH(182, 161, true)
} else {
animView?.setViewWH(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, false)
svgaView?.setViewWH(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,false)
}
}
// animView?.setAnimListener(object : IAnimListener {
// override fun onFailed(errorType: Int, errorMsg: String?) { }
// override fun onVideoComplete() {
// layout?.post {
// animView?.stopPlay()
// layout?.removeAllViews()
// layout?.setVis(false)
// }
// }
// override fun onVideoDestroy() {}
// override fun onVideoRender(frameIndex: Int, config: AnimConfig?) {}
// override fun onVideoStart() {}
// })
//
// svgaView?.callback = object : SVGACallback {
// override fun onFinished() {
// layout?.post {
// animView?.stopPlay()
// layout?.removeAllViews()
// layout?.setVis(false)
// }
// }
//
// override fun onPause() {}
//
// override fun onRepeat() {}
//
// override fun onStep(frame: Int, percentage: Double) {
//
// }
// }
animView?.loadAnim2(data.effect,false)
svgaView?.loadUrl(data.effect,true)
}else{
layout.setVis(false)
layout.removeAllViews()
}
}
}

View File

@@ -39,7 +39,7 @@ class BonsellaJoinAttackButtonView @JvmOverloads constructor(
fun getSvgaView() = mBinding.svga
fun setComboClick(listener: OnClickListener) {
mBinding.tvText.singleClick (listener,100)
mBinding.tvText.singleClick (listener,200)
}
private val vibrator by lazy {

View File

@@ -27,7 +27,7 @@ object NumberUtils {
}
@JvmStatic
fun format(num:Double):String{
fun format(num:Double, roundUp:Boolean = true):String{
val longValue = num.roundToLong()
return if(num < 10000){
if(num - num.toLong() > 0){
@@ -36,11 +36,11 @@ object NumberUtils {
longValue.toString()
}
}else if(longValue < 1000000){
format(longValue, "K")
format(longValue, "K",roundUp = roundUp)
}else if(longValue < 1000000000){
format(longValue/1000, "M")
format(longValue/1000, "M",roundUp = roundUp)
}else
format(longValue/1000000, "B")
format(longValue/1000000, "B",roundUp = roundUp)
}
@JvmStatic

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 984 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 983 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 970 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1007 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 951 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 893 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 977 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 969 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -62,15 +62,15 @@
<ImageView
android:id="@+id/avatar"
android:layout_width="71dp"
android:layout_width="73dp"
android:src="@drawable/default_avatar"
android:layout_height="71dp"
android:layout_height="73dp"
android:layout_gravity="center" />
<com.chwl.library.widget.SVGAView
android:id="@+id/avatarHead"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_width="102dp"
android:layout_height="102dp"
android:layout_gravity="center" />
@@ -82,6 +82,7 @@
android:layout_height="wrap_content"
android:paddingStart="10dp"
android:paddingEnd="0dp"
android:layout_marginTop="15dp"
app:layout_constraintTop_toBottomOf="@id/infoLayout"
app:stl_distributeEvenly="true"
app:stl_indicatorThickness="0dp"

View File

@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#02061d">
@@ -36,12 +35,12 @@
android:paddingStart="45dp"
android:paddingEnd="10dp"
android:textColor="@color/color_d9e7f7"
android:textColorHint="@color/color_d9e7f7"
android:textColorHint="@color/color_d9e7f7_50"
android:textSize="14sp"
android:hint="@string/search_hint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title_bar"
tools:text="111" />
app:layout_constraintTop_toBottomOf="@id/title_bar" />
<ImageView
android:layout_width="20dp"

View File

@@ -78,6 +78,7 @@
android:id="@+id/rvList"
android:layout_width="match_parent"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="20dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/forbidHint" />
@@ -112,13 +113,10 @@
<com.chwl.library.widget.text.DrawableTextView
android:id="@+id/confirm"
android:layout_width="wrap_content"
android:layout_width="234dp"
android:layout_height="44dp"
android:layout_marginTop="20dp"
android:gravity="center"
android:maxWidth="234dp"
android:maxHeight="44dp"
android:paddingHorizontal="96dp"
android:text="@string/forbid"
android:textColor="@color/white"
android:textSize="16sp"

View File

@@ -3,8 +3,8 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:background="@drawable/ic_dress_dialog_bg"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:background="@drawable/ic_dress_dialog_bg">
<LinearLayout
android:id="@+id/picLayout"
@@ -40,7 +40,7 @@
android:drawablePadding="2dp"
android:gravity="center"
android:textColor="#f8ce1f"
android:textSize="18sp"
android:textSize="14sp"
android:visibility="gone"
app:dt_drawableLeftHeight="18dp"
app:dt_drawableLeftSrc="@drawable/ic_coin_84"
@@ -56,9 +56,9 @@
android:id="@+id/line"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ic_dress_dialog_line"
android:layout_marginHorizontal="23dp"
android:layout_marginTop="18dp"
android:background="@drawable/ic_dress_dialog_line"
app:layout_constraintTop_toBottomOf="@id/price" />
<View
@@ -73,7 +73,7 @@
android:layout_height="wrap_content"
android:layout_marginHorizontal="5dp"
android:gravity="center"
android:minWidth="74dp"
android:minWidth="90dp"
android:minHeight="32dp"
android:paddingHorizontal="12dp"
android:paddingVertical="6dp"
@@ -96,9 +96,10 @@
android:layout_height="wrap_content"
android:layout_marginHorizontal="5dp"
android:gravity="center"
android:minWidth="74dp"
android:minWidth="90dp"
android:minHeight="32dp"
android:paddingHorizontal="12dp"
tools:visibility="visible"
android:paddingVertical="6dp"
android:text="@string/buy"
android:textColor="#172055"

View File

@@ -9,11 +9,10 @@
<ImageView
android:id="@+id/bg"
android:background="@drawable/ic_dress_item_n"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="0dp"/>
android:layout_height="244dp"
android:background="@drawable/ic_dress_item_n"
app:layout_constraintTop_toTopOf="parent" />
<com.chwl.app.common.widget.RectRoundImageView
@@ -33,12 +32,12 @@
android:id="@+id/picLayout"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="9dp"
android:gravity="center"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/picBg"
app:layout_constraintEnd_toEndOf="@+id/picBg"
app:layout_constraintStart_toStartOf="@+id/picBg"
app:layout_constraintTop_toTopOf="@+id/picBg"
tools:visibility="visible" />
@@ -48,9 +47,10 @@
android:layout_height="wrap_content"
android:layout_marginHorizontal="9dp"
android:lines="1"
android:paddingVertical="6dp"
android:paddingTop="5dp"
android:textColor="#d9e7f7"
android:textSize="14sp"
app:layout_constraintBottom_toTopOf="@+id/price"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/picBg"
@@ -63,9 +63,9 @@
android:layout_marginHorizontal="9dp"
android:drawablePadding="2dp"
android:gravity="start|center_vertical"
android:paddingBottom="7dp"
android:textColor="#f8ce1f"
android:textSize="12sp"
android:paddingVertical="5dp"
android:textColor="#F8CE1F"
android:textSize="10sp"
android:visibility="gone"
app:dt_drawableLeftHeight="18dp"
app:dt_drawableLeftSrc="@drawable/ic_coin_84"
@@ -80,24 +80,20 @@
<TextView
android:id="@+id/discount"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_height="29dp"
android:layout_marginHorizontal="1.5dp"
android:gravity="center"
android:textColor="#D9E7F7"
android:layout_marginBottom="2dp"
android:background="@drawable/ic_dress_up_bottom_bg2"
android:gravity="center"
android:textColor="#80D9E7F7"
android:textSize="12sp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@id/bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/price"
tools:text="11111"
tools:visibility="visible" />
<View
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="1.5dp"
app:layout_constraintTop_toBottomOf="@+id/discount" />
<ImageView
android:id="@+id/empty"

View File

@@ -49,7 +49,7 @@
android:layout_width="@dimen/dp_13"
android:layout_height="@dimen/dp_13"
android:layout_marginEnd="3dp"
android:src="@mipmap/ic_pretty_account_13dp"
android:src="@mipmap/ic_good_num"
android:visibility="gone"
tools:visibility="visible" />

View File

@@ -44,7 +44,7 @@
android:layout_width="@dimen/dp_13"
android:layout_height="@dimen/dp_13"
android:layout_marginEnd="3dp"
android:src="@mipmap/ic_pretty_account_13dp"
android:src="@mipmap/ic_good_num"
android:visibility="gone"
tools:visibility="visible" />

View File

@@ -2,6 +2,8 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
xmlns:tools="http://schemas.android.com/tools"
tools:background="@color/black"
android:layout_height="72dp">
<ImageView
@@ -17,8 +19,10 @@
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="1111"
android:layout_marginStart="10dp"
android:layout_marginTop="4dp"
android:textStyle="bold"
android:textColor="@color/color_d9e7f7"
android:textSize="14sp"
app:layout_constraintStart_toEndOf="@+id/avatar"
@@ -32,8 +36,9 @@
android:layout_marginStart="10dp"
android:layout_marginTop="4dp"
android:alpha="0.5"
tools:text="1111"
android:textColor="@color/color_d9e7f7"
android:textSize="14sp"
android:textSize="13sp"
app:layout_constraintBottom_toBottomOf="@+id/avatar"
app:layout_constraintStart_toEndOf="@+id/avatar" />
@@ -44,10 +49,8 @@
android:layout_height="wrap_content"
android:layout_marginEnd="15dp"
android:gravity="center"
android:minWidth="60dp"
android:minHeight="26dp"
android:paddingHorizontal="12dp"
android:paddingVertical="6dp"
android:paddingHorizontal="15dp"
android:paddingVertical="3dp"
android:text="@string/ui_search_searchadapter_03"
android:textColor="#172055"
android:textSize="14sp"

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 475 B

View File

@@ -1849,7 +1849,7 @@
<string name="decoration_view_decorationcommonfragment_02">تأكيد الشراء</string>
<string name="decoration_view_decorationcommonfragment_03">شراء</string>
<string name="decoration_view_decorationcommonfragment_04">إلغاء</string>
<string name="decoration_view_decorationstoreactivity_01">متجر الادوات</string>
<string name="decoration_view_decorationstoreactivity_01">مول</string>
<string name="decoration_view_decorationstoreactivity_02">أزيائي</string>
<string name="decoration_view_decorationstoreactivity_03">الأزياء للرأس</string>
<string name="decoration_view_decorationstoreactivity_04">السيارات</string>
@@ -5351,4 +5351,10 @@
<string name="obtainWayAction">احصل عليها فقط في الحدث</string>
<string name="obtainWayActionItem">احصل عليها فقط في الحدث، لا يمكن الشراء</string>
<string name="s_sDays_s">"%2$s/%1$s يوم %3$s "</string>
<string name="forbid">حظر المشرف الأعلى</string>
<string name="forbidHint">وقت الحظر</string>
<string name="forbidDesc">سبب الحظر</string>
<string name="forbidDescHint">يرجى إدخال سبب الحظر، والذي سيكون مرئيًا في الخلفية</string>
<string name="forbidTime">%s ساعات</string>
<string name="ageLimitHint">التطبيق يقصر التسجيل على المستخدمين الذين تقل أعمارهم عن 18 عاماً</string>
</resources>

View File

@@ -1748,7 +1748,7 @@ Toplam imza alın, ilgili ödülü alın
<string name="decoration_view_decorationcommonfragment_02">Satın alma onayı</string>
<string name="decoration_view_decorationcommonfragment_03">Satın al</string>
<string name="decoration_view_decorationcommonfragment_04">İptal</string>
<string name="decoration_view_decorationstoreactivity_01">Süsleme Mağazası</string>
<string name="decoration_view_decorationstoreactivity_01">Mağaza</string>
<string name="decoration_view_decorationstoreactivity_02">Benim Süslemelerim</string>
<string name="decoration_view_decorationstoreactivity_03">Başlık</string>
<string name="decoration_view_decorationstoreactivity_04">Araç</string>
@@ -5147,4 +5147,10 @@ Toplam imza alın, ilgili ödülü alın
<string name="obtainWayAction">Yalnızca Etkinliğe Göre Alın</string>
<string name="obtainWayActionItem">Yalnızca etkinliğe göre alın, satın alınamaz.</string>
<string name="s_sDays_s">%1$s/%2$sgün %3$s</string>
<string name="forbid">Süper Yönetici Engelleme</string>
<string name="forbidHint">Engellenen zaman</string>
<string name="forbidDesc">Engellenme nedeni</string>
<string name="forbidDescHint">Lütfen arka planda görünecek olan engelleme nedenini girin</string>
<string name="forbidTime">%s saat</string>
<string name="ageLimitHint">Bu uygulamada 18 yaş altında olan kişiler hesabı açmaz.</string>
</resources>

View File

@@ -1865,7 +1865,7 @@
<string name="decoration_view_decorationcommonfragment_02">購買確認</string>
<string name="decoration_view_decorationcommonfragment_03">購買</string>
<string name="decoration_view_decorationcommonfragment_04">取消</string>
<string name="decoration_view_decorationstoreactivity_01">裝扮商城</string>
<string name="decoration_view_decorationstoreactivity_01">商城</string>
<string name="decoration_view_decorationstoreactivity_02">我的裝扮</string>
<string name="decoration_view_decorationstoreactivity_03">頭飾</string>
<string name="decoration_view_decorationstoreactivity_04">座駕</string>
@@ -5294,5 +5294,11 @@
<string name="obtainWayAction">僅參與活動獲得</string>
<string name="obtainWayActionItem">僅參與活動獲得,無法購買</string>
<string name="s_sDays_s">%1$s/%2$s天 %3$s</string>
<string name="forbid">超级管理员封禁</string>
<string name="forbidHint">封禁时间</string>
<string name="forbidDesc">封禁原因</string>
<string name="forbidDescHint">请输入封禁原因,该原因将在后台可见</string>
<string name="forbidTime">%s 小时</string>
<string name="ageLimitHint">APP限制18歲以下用戶註冊。</string>
</resources>

View File

@@ -381,7 +381,7 @@
<string name="family_customer_service_hotline">Customer Service Hotline: %1$s</string>
<string name="family_instruction">Family Guide</string>
<string name="family_instruction_hint">Quick Start Tutorial</string>
<string name="family_instruction_hint">Hızlı Start Tutorial</string>
<string name="family_ranking_list_label_1">Distance to Previous Rank</string>
<string name="family_id">Family ID: %1$s</string>
@@ -979,8 +979,8 @@
<!-- Personal Center -->
<string name="me_Individual_center_banner_click">Personal Center Banner Module Click</string>
<string name="me_personal_center_quick_access_room">Personal Center Quick Access Room Click Successfully Matched</string>
<string name="me_personal_center_fast_into">Personal Center Quick Access Room Click Successfully Matched</string>
<string name="me_personal_center_quick_access_room">Personal Center Hızlı Access Room Click Successfully Matched</string>
<string name="me_personal_center_fast_into">Personal Center Hızlı Access Room Click Successfully Matched</string>
<string name="me_short">Short of Upgrade</string>
<string name="me_power_value_escalation">Power Value</string>
<string name="me_noble_my_entry_click_event">Noble My Entry Click Event</string>
@@ -2102,7 +2102,7 @@
<string name="home_fragment_roomsinglefragment_01">No rooms available</string>
<string name="home_helper_loadpagedatahelper_01">Loading…</string>
<string name="home_helper_openroomhelper_01">Unknown error</string>
<string name="erban_home_homeviewmodel_01">Personal center quick entry room click failed to match</string>
<string name="erban_home_homeviewmodel_01">Personal center Hızlı entry room click failed to match</string>
<string name="erban_home_homeviewmodel_02">Recommended</string>
<string name="erban_home_homeviewmodel_03">Recommended</string>
<string name="home_presenter_communitynoticepresenter_01">No data</string>
@@ -3323,7 +3323,7 @@
<string name="layout_fragment_recommend_02">More</string>
<string name="layout_fragment_recommend_03">Popular anchors</string>
<string name="layout_fragment_recommend_04">More</string>
<string name="layout_fragment_room_game_01">Quick match</string>
<string name="layout_fragment_room_game_01">Hızlı match</string>
<string name="layout_fragment_room_like_01">There are many interesting people and rooms waiting for you to discover~</string>
<string name="layout_fragment_room_like_02">Make friends and chat</string>
<string name="layout_fragment_room_like_03">People you follow</string>
@@ -5240,7 +5240,7 @@ You cannot join again within 24 hours after leaving</string>
<string name="medal">Medal</string>
<string name="room_type">Room type</string>
<string name="switch_room_type_tips">After the setting is completed, members who are out of the microphone order will be removed. Do you confirm the setting?</string>
<string name="room_type_classic">Classic</string>
<string name="room_type_classic">Klasik</string>
<string name="room_type_party">Party</string>
<string name="room_type_revelry">Carnival</string>
<string name="room_type_using">Using</string>
@@ -5361,12 +5361,12 @@ You cannot join again within 24 hours after leaving</string>
<string name="obtainWayActionItem">Only get by event, cannot buy.</string>
<string name="s_sDays_s">%1$s/%2$sD %3$s</string>
<string name="forbid">封禁</string>
<string name="forbidHint">封禁</string>
<string name="forbidDesc">封禁说明</string>
<string name="forbidDescHint">封禁说明输入提示</string>
<string name="forbidTime">%s 小时</string>
<string name="ageLimitHint">18限制</string>
<string name="forbid">Super Admin Block</string>
<string name="forbidHint">Blocked time</string>
<string name="forbidDesc">Blocked reason</string>
<string name="forbidDescHint">Please enter the block reason, which will be visible in the background</string>
<string name="forbidTime">%s hours</string>
<string name="ageLimitHint">APP restricts registration to users under 18 years old.</string>
</resources>

View File

@@ -122,7 +122,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="3dp"
android:src="@mipmap/ic_pretty_account_13dp"
android:src="@mipmap/ic_good_num"
android:visibility="gone" />
<TextView

View File

@@ -20,7 +20,7 @@ import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatTextView;
import com.chwl.library.R;
import com.example.lib_utils.UiUtils;
import com.chwl.library.common.util.OtherExtKt;
/**
@@ -334,11 +334,11 @@ public class DrawableTextView extends AppCompatTextView {
shape.setCornerRadius(radius);
} else {//*订购左上角,右上角,右下角,左下角。
if (leftTopRadius > 0 || rightTopRadius > 0 || rightBottomRadius > 0 || leftBottomRadius > 0) {
// topLeftRadius, topLeftRadius,
// topRightRadius, topRightRadius,
// bottomRightRadius, bottomRightRadius,
// bottomLeftRadius, bottomLeftRadius
shape.setCornerRadii(new float[]{leftTopRadius, leftTopRadius, rightTopRadius, rightTopRadius, rightBottomRadius, rightBottomRadius, leftBottomRadius, leftBottomRadius});
if (OtherExtKt.isRtl(getContext())) {
shape.setCornerRadii(new float[]{rightTopRadius, rightTopRadius,leftTopRadius, leftTopRadius, leftBottomRadius, leftBottomRadius, rightBottomRadius, rightBottomRadius});
} else {
shape.setCornerRadii(new float[]{leftTopRadius, leftTopRadius, rightTopRadius, rightTopRadius, rightBottomRadius, rightBottomRadius, leftBottomRadius, leftBottomRadius});
}
}
}
//设置边框的厚度和颜色
@@ -439,7 +439,7 @@ public class DrawableTextView extends AppCompatTextView {
paddings[2] = drawableRightPadding;
paddings[3] = drawableBottomPadding;
if (UiUtils.INSTANCE.isRtl(getContext())) {
if (OtherExtKt.isRtl(getContext())) {
paddings[0] = drawableRightPadding;
paddings[2] = drawableLeftPadding;
} else {
@@ -515,7 +515,7 @@ public class DrawableTextView extends AppCompatTextView {
bottom.setBounds(0, 0, getDrawableWidth(bottom, mDrawableBottomWidth), getDrawableHeight(bottom, mDrawableBottomHeight));
}
if (UiUtils.INSTANCE.isRtl(getContext())) {
if (OtherExtKt.isRtl(getContext())) {
setCompoundDrawables(right, top, left, bottom);
} else {
setCompoundDrawables(left, top, right, bottom);

View File

@@ -445,11 +445,13 @@ class SpannableTextBuilder(private val textView: TextView) {
fun addTextStyleList(list: List<TextStyleBean>) : SpannableTextBuilder{
var start = 0;
list.forEach {
start = spannableBuilder.indexOf(it.text, start+1)
val end = start + it.text.length
val indexStart = start
val findIndex = spannableBuilder.toString().indexOf(it.text, indexStart)
val end = findIndex + it.text.length
start = end
setTextStyle(
it.text,
start,
findIndex,
end,
it.textColor,
it.backgroundColor,