feat:恢复装扮商城

This commit is contained in:
max
2024-05-14 10:38:17 +08:00
parent de6d892df5
commit 5697be0ba9
13 changed files with 384 additions and 12 deletions

View File

@@ -899,6 +899,10 @@
<activity
android:name=".fansteam.FansTeamListActivity"
android:screenOrientation="portrait" />
<activity
android:name=".decoration.view.DecorationStoreActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
</application>
</manifest>

View File

@@ -13,7 +13,7 @@ open class DecorationCommonAdapter(layoutResId: Int = R.layout.item_decoration_c
override fun convert(helper: BaseViewHolder, item: DecorationInfo) {
helper.getView<ImageView>(R.id.iv_pic).load(item.pic)
helper.setText(R.id.tv_name, "${item.name}(${item.dressDay})")
helper.setText(R.id.tv_name, "${item.name}(${item.dressDay})${helper.itemView.context.getString(R.string.day)}")
.setText(R.id.tv_price, item.dressPrice.toString())
.setGone(R.id.tv_limit, item.dressLimitStatus == 0)
.addOnClickListener(R.id.tv_buy, R.id.tv_send)

View File

@@ -0,0 +1,110 @@
package com.chwl.app.decoration.view
import android.os.Bundle
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import com.chwl.app.R
import com.chwl.app.base.BaseViewBindingFragment
import com.chwl.app.common.EmptyViewHelper
import com.chwl.app.databinding.FragmentDecorationCommonBinding
import com.chwl.app.decoration.adapter.DecorationCommonAdapter
import com.chwl.app.decoration.viewmodel.DecorationViewModel
import com.chwl.app.ui.relation.FansListActivity
import com.chwl.app.ui.utils.RVDelegate
import com.chwl.core.decoration.DecorationInfoEvent
import com.chwl.core.decoration.bean.DecorationInfo
import com.chwl.library.annatation.ActLayoutRes
import com.chwl.library.utils.ResUtil
import org.greenrobot.eventbus.EventBus
/**
* Created by huangmeng1 on 2018/5/7.
*/
@ActLayoutRes(R.layout.fragment_decoration_common)
class DecorationCommonFragment : BaseViewBindingFragment<FragmentDecorationCommonBinding>() {
companion object {
fun newInstance(dressType: Int): DecorationCommonFragment {
val args = Bundle()
args.putInt("dressType", dressType)
val fragment = DecorationCommonFragment()
fragment.arguments = args
return fragment
}
}
private val dressType: Int by lazy { requireArguments().getInt("dressType") }
private lateinit var rvDelegate: RVDelegate<DecorationInfo>
private lateinit var decorationAdapter: DecorationCommonAdapter
private val decorationViewModel: DecorationViewModel by viewModels()
override fun init() {
decorationViewModel.loadingLiveData.observe(viewLifecycleOwner) {
if (it) dialogManager.showProgressDialog(mContext)
else dialogManager.dismissDialog()
}
decorationAdapter = if (dressType == DecorationStoreActivity.TAB_USER_CARD) {
DecorationCommonAdapter(R.layout.item_decoration_user_card)
} else {
DecorationCommonAdapter()
}
rvDelegate = RVDelegate.Builder<DecorationInfo>()
.setAdapter(decorationAdapter)
.setRecyclerView(binding.recyclerView)
.setRefreshLayout(binding.swipeRefresh)
.setEmptyView(EmptyViewHelper.createEmptyTextView(mContext, ResUtil.getString(R.string.decoration_view_decorationcommonfragment_01)))
.setLayoutManager(
if (dressType == DecorationStoreActivity.TAB_USER_CARD) {
LinearLayoutManager(mContext)
} else {
GridLayoutManager(mContext, 2, GridLayoutManager.VERTICAL, false)
}
)
.build()
binding.swipeRefresh.setOnRefreshListener {
decorationViewModel.getDecorationInfoList(dressType)
}
decorationViewModel.getDecorationInfoList(dressType)
decorationViewModel.decorationInfoListLiveData.observe(viewLifecycleOwner) {
rvDelegate.loadData(it)
}
decorationAdapter.setOnItemChildClickListener { _, view, position ->
val decorationInfo =
decorationAdapter.getItem(position) ?: return@setOnItemChildClickListener
when (view.id) {
R.id.tv_buy -> {
dialogManager.showOkCancelDialog(
ResUtil.getString(R.string.decoration_view_decorationcommonfragment_02),
mContext.resources.getString(
R.string.buy_decoration_info_text,
decorationInfo.name,
decorationInfo.dressDay.toString()
),
ResUtil.getString(R.string.decoration_view_decorationcommonfragment_03),
ResUtil.getString(R.string.decoration_view_decorationcommonfragment_04),
true
) {
decorationViewModel.buyDecoration(
decorationInfo.dressType,
decorationInfo.id
)
}
}
R.id.tv_send -> {
EventBus.getDefault().postSticky(DecorationInfoEvent(decorationInfo))
FansListActivity.start(mContext, FansListActivity.TYPE_DECORATION)
}
}
}
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().removeStickyEvent(DecorationInfoEvent::class.java)
}
}

View File

@@ -0,0 +1,133 @@
package com.chwl.app.decoration.view
import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.view.View
import androidx.activity.viewModels
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.netease.nim.uikit.StatusBarUtil
import com.chwl.app.R
import com.chwl.app.base.BaseViewBindingActivity
import com.chwl.app.base.TitleBar
import com.chwl.app.databinding.ActivityDecorationStoreBinding
import com.chwl.app.decoration.view.widgets.CarMagicIndicator
import com.chwl.app.decoration.view.widgets.MyDecorationMagicIndicator
import com.chwl.app.decoration.viewmodel.DecorationViewModel
import com.chwl.app.home.helper.BannerHelper
import com.chwl.app.ui.pay.ChargeActivity
import com.chwl.app.ui.widget.magicindicator.ViewPagerHelper
import com.chwl.app.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator
import com.chwl.core.Constants
import com.chwl.core.home.bean.TabInfo
import com.chwl.core.pay.PayModel
import com.chwl.core.pay.event.UpdateWalletInfoEvent
import com.chwl.library.annatation.ActLayoutRes
import com.chwl.library.utils.FormatUtils
import com.chwl.library.utils.ResUtil
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
@ActLayoutRes(R.layout.activity_decoration_store)
class DecorationStoreActivity : BaseViewBindingActivity<ActivityDecorationStoreBinding>(),
CarMagicIndicator.OnItemSelectListener, MyDecorationMagicIndicator.OnItemSelectListener {
companion object {
const val TAB_HEAD_WEAR = 0
const val TAB_CAR = 1
const val TAB_NAMEPLATE = 2
const val TAB_USER_CARD = 3
const val TAB_CHAT_BUBBLE = 4
@JvmStatic
fun start(context: Context, position: Int) {
val intent = Intent(context, DecorationStoreActivity::class.java)
intent.putExtra(Constants.KEY_POSITION, position)
context.startActivity(intent)
}
}
private var mPosition = 0
private val decorationViewModel: DecorationViewModel by viewModels()
override fun init() {
EventBus.getDefault().register(this)
initWhiteTitleBar(ResUtil.getString(R.string.decoration_view_decorationstoreactivity_01))
mTitleBar?.addAction(object : TitleBar.TextAction(
ResUtil.getString(R.string.decoration_view_decorationstoreactivity_02), Color.parseColor("#999999")
) {
override fun performAction(view: View) {
MyDecorationActivity.start(this@DecorationStoreActivity, 0)
}
})
mPosition = intent.getIntExtra(Constants.KEY_POSITION, 0)
initViews()
decorationViewModel.bannerLiveData.observe(this) {
BannerHelper.setBanner(binding.rollView, it)
}
binding.tvCharge.setOnClickListener {
ChargeActivity.start(this)
}
}
private fun initViews() {
onWalletInfoUpdate(null)
val viewPager = binding.viewpager
val mMagicIndicator = binding.viewIndicator
val tabInfoList: MutableList<TabInfo> = ArrayList(5)
tabInfoList.add(TabInfo(TAB_HEAD_WEAR, ResUtil.getString(R.string.decoration_view_decorationstoreactivity_03)))
tabInfoList.add(TabInfo(TAB_CAR, ResUtil.getString(R.string.decoration_view_decorationstoreactivity_04)))
tabInfoList.add(TabInfo(TAB_NAMEPLATE, ResUtil.getString(R.string.decoration_view_decorationstoreactivity_05)))
tabInfoList.add(TabInfo(TAB_USER_CARD, ResUtil.getString(R.string.decoration_view_decorationstoreactivity_06)))
tabInfoList.add(TabInfo(TAB_CHAT_BUBBLE, ResUtil.getString(R.string.decoration_view_decorationstoreactivity_07)))
val commonNavigator = CommonNavigator(this)
commonNavigator.isAdjustMode = true
val indicator = MyDecorationMagicIndicator(this, tabInfoList)
indicator.setOnItemSelectListener(this)
commonNavigator.adapter = indicator
mMagicIndicator.navigator = commonNavigator
ViewPagerHelper.bind(mMagicIndicator, viewPager)
viewPager.adapter = object : FragmentStateAdapter(supportFragmentManager,lifecycle){
override fun getItemCount(): Int {
return tabInfoList.size
}
override fun createFragment(position: Int): Fragment {
return DecorationCommonFragment.newInstance(position)
}
}
viewPager.offscreenPageLimit = tabInfoList.size
viewPager.currentItem = mPosition
}
override fun onItemSelect(position: Int) {
binding.viewpager.currentItem = position
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onWalletInfoUpdate(event: UpdateWalletInfoEvent?) {
binding.tvDiamondNum.text =
FormatUtils.formatBigInteger(PayModel.get().currentWalletInfo?.diamondNum ?: 0.0)
}
override fun needSteepStateBar(): Boolean {
return true
}
override fun setStatusBar() {
super.setStatusBar()
StatusBarUtil.transparencyBar(this)
StatusBarUtil.StatusBarLightMode(this)
}
override fun onDestroy() {
super.onDestroy()
EventBus.getDefault().unregister(this)
}
}

View File

@@ -67,6 +67,13 @@ class MeViewModel : BaseViewModel() {
centerUrl = UriProvider.getInviteFan()
)
)
add(
MeCenterInfo(
icon = R.drawable.me_ic_menu_dress_shop,
centerName = ResUtil.getString(R.string.decoration_view_decorationstoreactivity_01),
skipType = RouterType.DECORATION_STORE
)
)
add(
MeCenterInfo(
icon = R.drawable.me_ic_menu_revenue,

View File

@@ -6,11 +6,8 @@ import android.content.ClipboardManager
import android.content.Context
import android.content.Intent
import android.text.TextUtils
import android.util.Log
import android.view.View
import android.view.View.OnLongClickListener
import androidx.core.view.allViews
import androidx.core.view.isVisible
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
@@ -19,7 +16,6 @@ import com.chwl.app.UIHelper
import com.chwl.app.application.IReportConstants
import com.chwl.app.application.ReportManager
import com.chwl.app.avroom.activity.AVRoomActivity
import com.chwl.app.avroom.fragment.RoomRankDialogUtils
import com.chwl.app.base.BaseActivity
import com.chwl.app.base.BaseFragment
import com.chwl.app.databinding.FragmentMeBinding
@@ -35,13 +31,9 @@ import com.chwl.app.ui.pay.ChargeActivity
import com.chwl.app.ui.relation.AttentionListActivity
import com.chwl.app.ui.relation.FansListActivity
import com.chwl.app.ui.utils.ImageLoadUtils
import com.chwl.app.ui.utils.load
import com.chwl.app.ui.utils.loadAvatar
import com.chwl.app.ui.webview.CommonWebViewActivity
import com.chwl.app.view.GenderAgeTextView
import com.chwl.app.vip.VipMainActivity
import com.chwl.app.vip.VipViewModel
import com.chwl.core.UriProvider
import com.chwl.core.auth.AuthModel
import com.chwl.core.level.UserLevelVo
import com.chwl.core.manager.IMNetEaseManager

View File

@@ -3,6 +3,7 @@ package com.chwl.app.ui.im;
import android.annotation.SuppressLint;
import android.content.Context;
import com.chwl.app.decoration.view.DecorationStoreActivity;
import com.chwl.app.earn.activity.EarnRecordActivity;
import com.trello.rxlifecycle3.components.support.RxAppCompatActivity;
import com.chwl.app.R;
@@ -98,18 +99,21 @@ public class RouterHandler {
break;
case RouterType.CAR:
if (JavaUtil.str2int(routerValue) == 0) {
DecorationStoreActivity.start(context, DecorationStoreActivity.TAB_CAR);
} else {
MyDecorationActivity.start(context, 1);
}
break;
case RouterType.DECORATION:
if (JavaUtil.str2int(routerValue) == 0) {
DecorationStoreActivity.start(context, 0);
} else {
MyDecorationActivity.start(context, 0);
}
break;
case RouterType.NAMEPLATE:
if (JavaUtil.str2int(routerValue) == 0) {
DecorationStoreActivity.start(context, DecorationStoreActivity.TAB_NAMEPLATE);
} else {
MyDecorationActivity.start(context, 2);
}
@@ -256,6 +260,7 @@ public class RouterHandler {
if (intRouterValue < 0 || intRouterValue > 4) {
intRouterValue = 0;
}
DecorationStoreActivity.start(context, intRouterValue);
break;
case RouterType.MY_DECORATION:
if (intRouterValue < 0 || intRouterValue > 4) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="@color/bg_normal_1c1b22"
android:orientation="vertical">
<com.chwl.app.base.TitleBar
android:id="@+id/title_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_30" />
<FrameLayout
android:id="@+id/fl_roll_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent">
<com.chwl.app.ui.widget.rollviewpager.RollPagerView
android:id="@+id/roll_view"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginStart="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
android:visibility="gone"
app:rollviewpager_hint_gravity="left"
app:rollviewpager_hint_paddingBottom="8dp"
tools:visibility="visible" />
</FrameLayout>
<com.chwl.app.ui.widget.magicindicator.MagicIndicator
android:id="@+id/view_indicator"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_marginTop="@dimen/dp_10" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="48dp"
android:baselineAligned="true"
android:background="@color/white"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_charge_diamond"
android:drawablePadding="3dp"
android:gravity="center"
android:includeFontPadding="false"
android:text="@string/charge_my_diamond"
android:layout_marginStart="15dp"
android:textColor="@color/color_999999"
android:textSize="12sp" />
<TextView
android:id="@+id/tv_diamond_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:includeFontPadding="false"
android:layout_marginStart="4dp"
android:textColor="#ffffbc51"
android:textSize="16sp" />
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<TextView
android:id="@+id/tv_charge"
android:layout_width="72dp"
android:layout_height="24dp"
android:maxLines="1"
app:autoSizeMaxTextSize="12sp"
app:autoSizeMinTextSize="8dp"
app:autoSizeStepGranularity="1px"
app:autoSizeTextType="uniform"
android:text="@string/charge"
android:background="@drawable/base_selector_theme_30dp"
android:gravity="center"
android:layout_marginEnd="15dp"
android:textColor="@color/white"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<com.chwl.app.common.widget.StatusLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/status_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingStart="14dp"
android:paddingEnd="14dp" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</com.chwl.app.common.widget.StatusLayout>

View File

@@ -96,7 +96,7 @@
android:gravity="center"
android:includeFontPadding="false"
android:text="@string/layout_item_decoration_common_04"
android:textColor="@color/color_1E1E1F"
android:textColor="@color/color_FFFFFF"
android:textSize="12sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tv_send"

View File

@@ -1871,7 +1871,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>

View File

@@ -1903,7 +1903,7 @@
<string name="decoration_view_decorationcommonfragment_02">Purchase confirmation</string>
<string name="decoration_view_decorationcommonfragment_03">Purchase</string>
<string name="decoration_view_decorationcommonfragment_04">Cancel</string>
<string name="decoration_view_decorationstoreactivity_01">Dress up mall</string>
<string name="decoration_view_decorationstoreactivity_01">Dress Shop</string>
<string name="decoration_view_decorationstoreactivity_02">My dress up</string>
<string name="decoration_view_decorationstoreactivity_03">Headwear</string>
<string name="decoration_view_decorationstoreactivity_04">Car</string>