1:添加签约房的按钮

2:我的家族和的身价页面完成
3:个性装扮降身卡完成
This commit is contained in:
2025-11-26 15:52:46 +08:00
parent 1753d9a98d
commit 9887185133
204 changed files with 1873 additions and 245 deletions

View File

@@ -6,6 +6,12 @@
<uses-permission android:name="android.permission.REORDER_TASKS" />
<application android:theme="@style/AppTheme">
<activity
android:name=".activity.user.activity.TotalRevenueActivity"
android:exported="false" />
<activity
android:name=".activity.user.activity.UserFamilyActivity"
android:exported="false" />
<activity
android:name=".activity.user.activity.HeartCpActivity"
android:exported="false" />

View File

@@ -1,5 +1,6 @@
package com.xscm.modulemain.activity.room.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@@ -9,6 +10,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.blankj.utilcode.util.ActivityUtils;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
import com.xscm.modulemain.R;
@@ -17,15 +19,23 @@ import com.xscm.modulemain.activity.room.contacts.RequestSongContacts;
import com.xscm.modulemain.activity.room.presenter.RequestSongPresenter;
import com.xscm.modulemain.activity.room.adapter.SongAdapter;
import com.xscm.modulemain.activity.room.adapter.WheatPositionAdapter;
import com.xscm.modulemain.activity.user.activity.HeartCpActivity;
import com.xscm.modulemain.databinding.FragmentSongRequestBinding;
import com.xscm.moduleutil.base.BaseMvpFragment;
import com.xscm.moduleutil.bean.RoomGiftData;
import com.xscm.moduleutil.bean.SingerSongCount;
import com.xscm.moduleutil.bean.SongPlaylist;
import com.xscm.moduleutil.bean.room.RoomPitBean;
import com.xscm.moduleutil.dialog.ConfirmDialog;
import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.http.RetrofitClient;
import com.xscm.moduleutil.utils.SpUtil;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.disposables.Disposable;
/**
* 点歌页面Fragment
*/
@@ -128,16 +138,37 @@ public class SongRequestFragment extends BaseMvpFragment<RequestSongPresenter, F
@Override
public void onSongClick(SongPlaylist.SongPlaylistBean song, int position) {
MvpPre.singerSong(song.getId() + "", roomId);
queren1(song);
}
});
}
// TODO: 2025/11/25 点歌提示框
private void queren1(SongPlaylist.SongPlaylistBean song) {
// 创建并显示确认对话框
new ConfirmDialog(ActivityUtils.getTopActivity(),
"温馨提示",
"您是否确认点歌<"+song.getSong_name()+">\n 演唱者:"+song.getSinger_nickname()+"\n 礼物价值:"+Integer.valueOf(song.getGift_price())*Integer.valueOf(song.getGift_num())+"金币",
"确认",
"取消",
v -> {
MvpPre.singerSong(song.getId() + "", roomId);
},
v -> {
// 点击“取消”按钮时什么都不做
}, false,0).show();
}
private void updateSongList(int wheatPosition) {
// 根据选中的麦位更新歌曲列表
// 可以在这里调用接口获取对应麦位的歌曲列表
MvpPre.getSong(wheatPosition + "", "", "1", "10");
if (wheatPosition==0){
MvpPre.getSong( "", roomId, "1", "10");
}else {
MvpPre.getSong(wheatPosition + "", "", "1", "10");
}
}

View File

@@ -31,76 +31,9 @@ import java.util.List;
* @description: 个性装扮
*/
public class PersonalityActivity extends BaseMvpActivity<PersonalityPresenter, ActivityPersonalityBinding> implements PersonalityConacts.View {
private List<String> titleList = new ArrayList();
private List<Fragment> mFragments = new ArrayList();
private MyPagerAdapter myAdapter;
@Override
protected void initData() {
// titleList.add("头像框");
// titleList.add("座驾");
// titleList.add("气泡");
// titleList.add("个人靓号");
// titleList.add("房间靓号");
// titleList.add("工会靓号");
//
// mFragments.add(ZhuangBanShangChengFragment.newInstance(1));
// mFragments.add(ZhuangBanShangChengFragment.newInstance(2));
// mFragments.add(ZhuangBanShangChengFragment.newInstance(3));
// mFragments.add(ZhuangBanShangChengFragment.newInstance(4));
// mFragments.add(ZhuangBanShangChengFragment.newInstance(5));
// mFragments.add(ZhuangBanShangChengFragment.newInstance(6));
// myAdapter = new MyPagerAdapter(getSupportFragmentManager(), mFragments, titleList);
// mBinding.viewPager.setAdapter(myAdapter);
// mBinding.viewPager.setOffscreenPageLimit(mFragments.size());
// mBinding.tabLayout.setupWithViewPager(mBinding.viewPager);
// setCustomViews();
// mBinding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
// @Override
// public void onTabSelected(TabLayout.Tab tab) {
// updateTabView(tab, true);
// }
//
// @Override
// public void onTabUnselected(TabLayout.Tab tab) {
// updateTabView(tab, false);
// }
//
// @Override
// public void onTabReselected(TabLayout.Tab tab) {
// // 可选实现
// }
//
// private void updateTabView(TabLayout.Tab tab, boolean isSelected) {
// if (tab.getCustomView() == null) return;
//
// TextView text = tab.getCustomView().findViewById(R.id.tv_zbtab);
// ImageView vView = tab.getCustomView().findViewById(R.id.v_view);
//
// if (text != null) {
// if (isSelected) {
// text.setTextColor(Color.parseColor("#333333"));
// text.setTextSize(16f);
// text.setTypeface(Typeface.DEFAULT_BOLD);
// } else {
// text.setTextColor(Color.parseColor("#5B5B5B"));
// text.setTextSize(14f);
// text.setTypeface(Typeface.DEFAULT);
// }
// }
//
// if (vView != null) {
// vView.setVisibility(isSelected ? View.VISIBLE : View.GONE);
// }
// }
// });
}
@Override
@@ -135,44 +68,10 @@ public class PersonalityActivity extends BaseMvpActivity<PersonalityPresenter, A
return R.layout.activity_personality;
}
// private void setCustomViews() {
// int mSelectedTabPosition = mBinding.tabLayout.getSelectedTabPosition();
// for (int i = 0; i < titleList.size(); i++) {
// Objects.requireNonNull(mBinding.tabLayout.getTabAt(i)).setCustomView(getTabView(i, mSelectedTabPosition));
// }
// }
// private View getTabView(int index, int mSelectedTabPosition) {
// // 自定义View布局
// View view = LayoutInflater.from(this).inflate(R.layout.item_tablayout_headerzb, null);
// TextView title = view.findViewById(R.id.tv_zbtab);
// ImageView v_view = view.findViewById(R.id.v_view);
// title.setText(titleList.get(index));
// title.setSelected(index == mSelectedTabPosition);
//// v_view.setSelected(index == mSelectedTabPosition);
// v_view.setVisibility(index == mSelectedTabPosition ? View.VISIBLE : View.GONE);
// if (index == mSelectedTabPosition) {
// title.setTextColor(Color.parseColor("#333333"));
// title.setTextSize(16f);
// title.setTypeface(Typeface.DEFAULT_BOLD);
// // title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 17f);
// // title.setTypeface(Typeface.DEFAULT_BOLD);
// } else {
// title.setTextColor(Color.parseColor("#5B5B5B"));
// title.setTextSize(14f);
// // title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15f);
// // title.setTypeface(Typeface.DEFAULT);
// }
//
// return view;
// }
@Override
public void getPersonaltyList(List<PersonaltyBean> personaltyBean) {
mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager(), personaltyBean));
// mBinding.viewPager.setOffscreenPageLimit(mFragments.size());
// mBinding.tabLayout.setupWithViewPager(mBinding.viewPager);
// setCustomViews();
mBinding.slidingTabLayout.setViewPager(mBinding.viewPager);
mBinding.slidingTabLayout.setCurrentTab(0);
@@ -188,6 +87,11 @@ public class PersonalityActivity extends BaseMvpActivity<PersonalityPresenter, A
public void onPageSelected(int position) {
// 当页面切换时,控制 tv_bb_qs 按钮的显示
refreshCurrentGiftFragment(personaltyBean.get(position).getId(),position);
if (personaltyBean.get(position).getId().equals("12")){
mBinding.cl2.setVisibility(View.GONE);
}else {
mBinding.cl2.setVisibility(View.VISIBLE);
}
}
@Override

View File

@@ -0,0 +1,55 @@
package com.xscm.modulemain.activity.user.activity
import android.util.Log
import com.xscm.modulemain.BaseMvpActivity
import com.xscm.modulemain.R
import com.xscm.modulemain.activity.user.conacts.UserFamilyConacts
import com.xscm.modulemain.activity.user.presenter.UserFamilyPresenter
import com.xscm.modulemain.databinding.ActivityTotalRevenueBinding
import com.xscm.moduleutil.widget.DoubleTimePickerBottomSheet
import com.xscm.moduleutil.widget.DoubleTimePickerBottomSheet.OnTimeRangeSelectedListener
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
/**
* @Author qx
* @Time 2025/11/26 10:56
* @Description 家族总收益
*/
class TotalRevenueActivity : BaseMvpActivity<UserFamilyPresenter, ActivityTotalRevenueBinding>(),
UserFamilyConacts.View {
var page = 1
var type = "1"
var revenueType = "1"
override fun bindPresenter(): UserFamilyPresenter? {
return UserFamilyPresenter(this, this)
}
override fun initData() {
mBinding.topBar.tvTitle.text = "总收益"
mBinding.rl3.setOnClickListener({ v ->
val dialog = DoubleTimePickerBottomSheet()
dialog.setOnTimeRangeSelectedListener(OnTimeRangeSelectedListener { startDate: Date?, endDate: Date? ->
// 处理选择的时间范围
val sdf = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault())
Log.d("SelectedTime", "开始时间:" + sdf.format(startDate))
mBinding.tv2.setText(sdf.format(startDate))
Log.d("SelectedTime", "结束时间:" + sdf.format(endDate))
mBinding.tv22.setText(sdf.format(endDate))
page = 1
})
val fragmentManager = supportFragmentManager
dialog.show(fragmentManager,"DoubleTimePickerBottomSheet")
})
}
override fun getLayoutId(): Int {
return R.layout.activity_total_revenue
}
}

View File

@@ -0,0 +1,110 @@
package com.xscm.modulemain.activity.user.activity
import android.graphics.Color
import android.view.LayoutInflater
import android.widget.ImageView
import android.widget.TextView
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
import com.xscm.modulemain.BaseMvpActivity
import com.xscm.modulemain.R
import com.xscm.modulemain.activity.user.conacts.UserFamilyConacts
import com.xscm.modulemain.activity.user.presenter.UserFamilyPresenter
import com.xscm.modulemain.adapter.FamilyPagerAdapter
import com.xscm.modulemain.databinding.ActivityUserFamilyBinding
/**
* @Author qx
* @Time 2025/11/25 17:11
* @Description 我的家族
*/
class UserFamilyActivity : BaseMvpActivity<UserFamilyPresenter, ActivityUserFamilyBinding>(),
UserFamilyConacts.View {
private lateinit var mAdapter: FamilyPagerAdapter
override fun bindPresenter(): UserFamilyPresenter? {
return UserFamilyPresenter(this,this)
}
override fun doDone() {
super.doDone()
}
override fun initView() {
super.initView()
}
override fun initData() {
mBinding.topBar.setTitle("家族")
mBinding.topBar.setColor(getResources().getColor(R.color.white))
setupViewPager()
setupTabLayout()
}
override fun getLayoutId(): Int {
return R.layout.activity_user_family
}
private fun setupViewPager() {
mAdapter = FamilyPagerAdapter(this)
mBinding.viewPager.adapter = mAdapter
}
private fun setupTabLayout() {
// 设置TabLayout的内部padding为0确保tab与边框贴合
TabLayoutMediator(mBinding.tabLayout, mBinding.viewPager) { tab, position ->
// 创建自定义Tab视图
val customView = LayoutInflater.from(this).inflate(R.layout.custom_tab_family, null)
val tabTitle = customView.findViewById<TextView>(R.id.tab_title)
when (position) {
0 -> {
tabTitle.text = "我的家族"
}
1 -> {
tabTitle.text = "我加入的家族"
}
}
// 设置Tab的初始状态
if (position == 0) {
tabTitle.setBackgroundResource(R.mipmap.user_tab_bj)
tabTitle.setTextColor(Color.BLACK)
} else {
tabTitle.setBackgroundResource(0)
tabTitle.setTextColor(Color.WHITE)
}
tab.customView = customView
}.attach()
// 设置Tab选中监听
mBinding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab) {
val customView = tab.customView
if (customView != null) {
val tabTitle = customView.findViewById<TextView>(R.id.tab_title)
tabTitle.setTextColor(Color.BLACK)
tabTitle.setBackgroundResource(R.mipmap.user_tab_bj)
}
}
override fun onTabUnselected(tab: TabLayout.Tab) {
val customView = tab.customView
if (customView != null) {
val tabTitle = customView.findViewById<TextView>(R.id.tab_title)
tabTitle.setTextColor(Color.WHITE)
tabTitle.setBackgroundResource(0)
}
}
override fun onTabReselected(tab: TabLayout.Tab) {
// 可以在这里处理重复点击Tab的事件
}
})
}
}

View File

@@ -109,6 +109,9 @@ class BosomFriendFragment : BaseMvpFragment<UserHomepagePresenter?, FragmentBoso
override fun initView() {
if (type == 1) {
mBinding.root.setBackgroundResource(R.mipmap.bj_intimate)
mBinding.imIntimate.setPadding(0, 270, 0, 0)
}else{
mBinding.imIntimate.setPadding(0, 80, 0, 0)
}
mBinding.rvMyRelationship.layoutManager =

View File

@@ -0,0 +1,20 @@
package com.xscm.modulemain.activity.user.conacts
import android.app.Activity
import com.xscm.moduleutil.activity.IPresenter
import com.xscm.moduleutil.activity.IView
/**
* 项目名称:羽声语音
* 时间2025/11/25 17:01
* 用途:
*/
class UserFamilyConacts {
interface View : IView<Activity>{
}
interface IPre : IPresenter {
}
}

View File

@@ -0,0 +1,39 @@
package com.xscm.modulemain.activity.user.fragment
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.xscm.modulemain.databinding.FragmentJoinedFamilyBinding
/**
* @Author qx
* @Time 2025/11/25 17:20
* @Description 我加入的家族Fragment
*/
class JoinedFamilyFragment : Fragment() {
private var _binding: FragmentJoinedFamilyBinding? = null
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = FragmentJoinedFamilyBinding.inflate(inflater, container, false)
return binding.root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
companion object {
fun newInstance(): JoinedFamilyFragment {
return JoinedFamilyFragment()
}
}
}

View File

@@ -0,0 +1,86 @@
package com.xscm.modulemain.activity.user.fragment
import android.content.Intent
import android.view.View
import com.blankj.utilcode.util.ActivityUtils
import com.xscm.modulemain.R
import com.xscm.modulemain.activity.user.activity.HeartCpActivity
import com.xscm.modulemain.activity.user.activity.TotalRevenueActivity
import com.xscm.modulemain.activity.user.conacts.UserFamilyConacts
import com.xscm.modulemain.activity.user.presenter.UserFamilyPresenter
import com.xscm.modulemain.databinding.FragmentMyFamilyBinding
import com.xscm.moduleutil.base.BaseMvpFragment
import com.xscm.moduleutil.dialog.ConfirmDialog
import com.xscm.moduleutil.widget.CommonEmptyView
/**
* @Author qx
* @Time 2025/11/25 17:20
* @Description 我的家族Fragment
*/
class MyFamilyFragment : BaseMvpFragment<UserFamilyPresenter, FragmentMyFamilyBinding>(), UserFamilyConacts.View {
override fun bindPresenter(): UserFamilyPresenter? {
return UserFamilyPresenter(this, activity!!)
}
override fun onDestroyView() {
super.onDestroyView()
}
override fun initData() {
}
override fun initView() {
mBinding.tvZsyNum2.setOnClickListener {
val intent= Intent(activity, TotalRevenueActivity::class.java)
startActivity(intent)
}
val commonEmptyView = CommonEmptyView(getContext()!!)
commonEmptyView.setImg(R.mipmap.ic_empty)
commonEmptyView.setTextColor(getResources().getColor(com.xscm.moduleutil.R.color.color_FFBDBDBC))
// manageAdapter.bindToRecyclerView(mBinding.recycleView)
// manageAdapter.setEmptyView(commonEmptyView)
}
override fun getLayoutId(): Int {
return R.layout.fragment_my_family
}
companion object {
fun newInstance(): MyFamilyFragment {
return MyFamilyFragment()
}
}
private fun queren1(
type: Int,
content: String?,
giftid: String?,
userId: String,
roomId: String?
) {
// 创建并显示确认对话框
ConfirmDialog(
ActivityUtils.getTopActivity(),
"续约提示",
content,
if (type == 1) "确认免费续约" else "确认续约",
"取消",
View.OnClickListener { v: View? ->
if (type == 1) {
} else {
val userids = userId.toInt()
val intent = Intent(ActivityUtils.getTopActivity(), HeartCpActivity::class.java)
intent.putExtra("userId", userids)
startActivity(intent)
}
},
View.OnClickListener { v: View? -> }, false, 0
).show()
}
}

View File

@@ -26,6 +26,7 @@ import com.xscm.modulemain.activity.user.activity.GiftWallActivity;
import com.xscm.modulemain.activity.user.activity.NobleTitleActivity;
import com.xscm.modulemain.activity.user.activity.RechargeActivity;
import com.xscm.modulemain.activity.user.activity.SingerVerificationActivity;
import com.xscm.modulemain.activity.user.activity.UserFamilyActivity;
import com.xscm.modulemain.activity.user.activity.UserPlaylistActivity;
import com.xscm.modulemain.databinding.FragmentVocalRangeBinding;
import com.xscm.modulemain.activity.user.activity.BlacklistActivity;
@@ -40,6 +41,7 @@ import com.xscm.modulemain.activity.user.activity.UserHomepageActivity;
import com.xscm.modulemain.activity.user.conacts.MeConacts;
import com.xscm.modulemain.activity.user.presenter.MePresenter;
import com.xscm.modulemain.activity.WebViewActivity;
import com.xscm.modulemain.dialog.UserNetWorthDialog;
import com.xscm.moduleutil.base.WebUrlConstants;
import com.xscm.moduleutil.widget.ShineTextView;
import com.xscm.moduleutil.base.BaseMvpFragment;
@@ -124,6 +126,8 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
mBinding.llSinger.setOnClickListener(this::onClick);
mBinding.llPlaylist.setOnClickListener(this::onClick);
mBinding.llMeZy.setOnClickListener(this::onClick);
mBinding.llMyNetWorth.setOnClickListener(this::onClick);
mBinding.llJz.setOnClickListener(this::onClick);
mBinding.banner.loadImage(new XBanner.XBannerAdapter() {
@Override
@@ -214,14 +218,7 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
Intent intent = new Intent(getContext(), UserHomepageActivity.class);
intent.putExtra("userId", SpUtil.getUserId() + "");
startActivity(intent);
}
// else if (id == R.id.me_my_lv) {
// ARouter.getInstance().build(ARouteConstants.ME_GRADEACTIVITY).withString("from", "我的界面").withInt("type", 1).navigation();
// } else if (id == R.id.tv_my_sc) {
// //装扮商城
// ARouter.getInstance().build(ARouteConstants.ME_SHOP).withString("from", "我的界面").navigation();
// }
else if (id == R.id.me_dress_up){//个性装扮
} else if (id == R.id.me_dress_up){//个性装扮
startActivity(new Intent(getContext(), PersonalityActivity.class));
}
else if (id == R.id.tv_my_bb) {
@@ -263,25 +260,29 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
req.url = "https://work.weixin.qq.com/kfid/kfcb3d23a59c188a0e7"; // 客服URL
api.sendReq(req);
} else if (id == R.id.ll_gift_wall) {//我的页面的礼物墙
Intent intent=new Intent(getContext(), GiftWallActivity.class);
intent.putExtra("userId",userInfo.getUser_id());
startActivity(intent);
} else if (id == R.id.cl_noble_title) {//爵位展示页面
startActivity(new Intent(getContext(), NobleTitleActivity.class));
} else if (id == R.id.ll_singer) {//歌手认证
Intent intent = new Intent(getContext(), SingerVerificationActivity.class);
intent.putExtra("isSinger", userInfo.getSinger_status());
startActivity(intent);
} else if (id == R.id.ll_playlist) {//我的歌单
Intent intent = new Intent(getContext(), UserPlaylistActivity.class);
startActivity(intent);
}else if (id == R.id.ll_me_zy) {
}else if (id == R.id.ll_me_zy) {//挚友
Intent intent=new Intent(getContext(), BosomFriendActivity.class);
startActivity(intent);
}else if (id == R.id.ll_my_net_worth) {//身价
UserNetWorthDialog dialog = new UserNetWorthDialog(getContext());
dialog.show();
}else if (id == R.id.ll_jz) {//我的家族
Intent intent=new Intent(getContext(), UserFamilyActivity.class);
startActivity(intent);
}
}
private void copyComment(String content) {

View File

@@ -33,7 +33,7 @@ public class ZhuangBanShangChengAdapter extends BaseQuickAdapter<ZhuangBanShangC
ThemeableDrawableUtils.setThemeableRoundedBackground( tv_integral, ColorManager.getInstance().getPrimaryColorInt(), corners);
tv_integral.setTextColor(ColorManager.getInstance().getButtonColorInt());
helper.setText(R.id.integral, item.getRemaining_day()+"")
helper.setText(R.id.integral, !item.getType().equals("12")?item.getRemaining_day()+"" : "x"+item.getNum())
.setText(R.id.tv_name_period, item.getTitle());
// .setText(R.id.tv_time, "(有效期${item.period}天)")
if (item.isIs_select()) {

View File

@@ -2,22 +2,33 @@ package com.xscm.modulemain.activity.user.fragment.zhuangb;
import static android.view.View.GONE;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.recyclerview.widget.GridLayoutManager;
import com.blankj.utilcode.util.ActivityUtils;
import com.xscm.modulemain.R;
import com.xscm.modulemain.activity.user.activity.HeartCpActivity;
import com.xscm.modulemain.databinding.ZhuangbanRecyclerviewNorefBinding;
import com.hjq.toast.ToastUtils;
import com.makeramen.roundedimageview.RoundedImageView;
import com.tencent.qgame.animplayer.AnimView;
import com.xscm.modulemain.activity.user.fragment.MyRoomListFragment;
import com.xscm.moduleutil.base.BaseMvpFragment;
import com.xscm.moduleutil.bean.RoomGiftData;
import com.xscm.moduleutil.bean.zhuangb.ZhuangBanShangChengBean;
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
import com.xscm.moduleutil.dialog.ConfirmDialog;
import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.http.RetrofitClient;
import com.xscm.moduleutil.utils.ColorManager;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.SpUtil;
@@ -27,6 +38,8 @@ import com.xscm.moduleutil.widget.GiftAnimView;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.disposables.Disposable;
public class ZhuangBanShangChengFragment extends BaseMvpFragment<ZhuangBanShangChengPresenter, ZhuangbanRecyclerviewNorefBinding> implements ZhuangBanShangChengConactos.View {
private int type;
@@ -40,6 +53,7 @@ public class ZhuangBanShangChengFragment extends BaseMvpFragment<ZhuangBanShangC
AnimView item_animview;
RoundedImageView image_user;
private int tabIndex;
private String zbName, zbPrice;//这是降身卡名称、降身卡可能降低的金额
@Override
protected ZhuangBanShangChengPresenter bindPresenter() {
@@ -60,7 +74,7 @@ public class ZhuangBanShangChengFragment extends BaseMvpFragment<ZhuangBanShangC
type = arguments.getInt("type", MyRoomListFragment.TYPE_CREATE);
}
public void loadDataIfNeeded(int type,int tabIndex) {
public void loadDataIfNeeded(int type, int tabIndex) {
if (MvpPre == null) {
MvpPre = bindPresenter();
}
@@ -68,25 +82,18 @@ public class ZhuangBanShangChengFragment extends BaseMvpFragment<ZhuangBanShangC
this.tabIndex = tabIndex;
MvpPre.getDecorateList(type + "", tabIndex);
}
@Override
protected void initData() {
MvpPre.getDecorateList(type + "", tabIndex);
if (type == 12) {
mBinding.zhuangbanBuy.setText("确认使用");
} else {
mBinding.zhuangbanBuy.setText("确认装扮");
}
// //这里根据传递的type进行数据查询
// zhuangBanShangChengBeanList=new ArrayList<>();
// for (int i = 0; i < 10; i++) {
// ZhuangBanShangChengBean zhuangBanShangChengBean=new ZhuangBanShangChengBean();
// zhuangBanShangChengBean.setTitle("标题"+i);
// zhuangBanShangChengBean.setIntegral("积分"+i);
// zhuangBanShangChengBean.setPeriod(i);
// zhuangBanShangChengBean.setType("类型"+i);
// zhuangBanShangChengBean.setBase_image("");
// zhuangBanShangChengBeanList.add(zhuangBanShangChengBean);
// }
image_user = (RoundedImageView) getActivity().findViewById(R.id.iv_user);
imageBg = (AvatarFrameView) getActivity().findViewById(R.id.image_headPortrait);
// imageBg2 = (GiftAnimView) getActivity().findViewById(R.id.image_headPortrait2);
@@ -105,21 +112,6 @@ public class ZhuangBanShangChengFragment extends BaseMvpFragment<ZhuangBanShangC
ImageUtils.loadHeadCC(SpUtil.getUserInfo().getAvatar(), image_user);
}
}
// if (type == 1) {
//// image_user.setVisibility(View.VISIBLE);
// imageBg.setVisibility(View.VISIBLE);
// imageBg2.setVisibility(View.GONE);
// } else if (type == 2){
//// image_user.setVisibility(View.GONE);
// imageBg.setVisibility(View.GONE);
// imageBg2.setVisibility(View.VISIBLE);
// }else {
//// image_user.setVisibility(View.GONE);
// imageBg.setVisibility(View.GONE);
// imageBg2.setVisibility(View.GONE);
// }
adapter = new ZhuangBanShangChengAdapter();
GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 3);
mBinding.recyclerView.setLayoutManager(gridLayoutManager);
@@ -129,52 +121,26 @@ public class ZhuangBanShangChengFragment extends BaseMvpFragment<ZhuangBanShangC
List<ZhuangBanShangChengBean> list = (List<ZhuangBanShangChengBean>) adapter1.getData();
// 清除之前的选择状态
clearPreviousSelection(list);
// // 设置当前选择
// ZhuangBanShangChengBean selectedBean = list.get(position);
// selectedBean.setIs_select(true);
// pSelect = position;
// did = selectedBean.getUdid();
//
// // 更新UI显示
// if (position == 0) { // "无"选项
// mBinding.ll.setVisibility(View.GONE);
// clearDecorations();
// } else {
// mBinding.ll.setVisibility(View.VISIBLE);
//
// if ("svga".equalsIgnoreCase(getFileExtension(selectedBean.getPlay_image()))) {
// imageBg.stopAll();
// imageBg.setSource(selectedBean.getPlay_image(), 2);
// } else if ("mp4".equalsIgnoreCase(getFileExtension(selectedBean.getPlay_image()))) {
// imageBg.stopAll();
// imageBg.setSource(selectedBean.getPlay_image(), 2);
// }
// }
if (pSelect != -1 && pSelect != position) {
list.get(pSelect).setIs_select(false);
list.get(position).setIs_select(true);
pSelect = position;
did = list.get(position).getUdid();
mBinding.ll.setVisibility(View.VISIBLE);
if (list.get( position)!=null && list.get(position).getType()!=null && list.get(position).getPlay_image()!=null) {
// if ("svga".equalsIgnoreCase(getFileExtension(list.get(position).getPlay_image()))) {
mBinding.ll.setVisibility(View.VISIBLE);
if (list.get(position) != null && list.get(position).getType() != null && list.get(position).getPlay_image() != null) {
if (list.get(position).getType().equals("1")) {
imageBg2.setVisibility(View.GONE);
imageBg.stopAll();
imageBg.setSource(list.get(position).getPlay_image(), 2);
} else if (list.get(position).getType().equals("2")) {
// imageBg2.setSource(list.get(position).getPlay_image(), 2);
imageBg2.setVisibility(View.VISIBLE);
imageBg2.previewEffectWith(list.get(position).getPlay_image());
}
}
// } else if ("mp4".equalsIgnoreCase(getFileExtension(list.get(position).getPlay_image()))) {
//// imageBg.playMP4(Uri.parse(list.get(position).getPlay_image()));
// imageBg.stopAll();
// imageBg.setSource(list.get(position).getPlay_image(),2);
// }
} else if (pSelect != -1 && pSelect == position) {
list.get(position).setIs_select(false);
pSelect = -1;
@@ -185,7 +151,7 @@ public class ZhuangBanShangChengFragment extends BaseMvpFragment<ZhuangBanShangC
pSelect = position;
mBinding.ll.setVisibility(View.VISIBLE);
if (list.get( position)!=null && list.get(position).getType()!=null && list.get(position).getPlay_image()!=null) {
if (list.get(position) != null && list.get(position).getType() != null && list.get(position).getPlay_image() != null) {
if (list.get(position).getType().equals("1")) {
imageBg2.setVisibility(View.GONE);
@@ -193,32 +159,15 @@ public class ZhuangBanShangChengFragment extends BaseMvpFragment<ZhuangBanShangC
imageBg.setSource(list.get(position).getPlay_image(), 2);
} else if (list.get(position).getType().equals("2")) {
imageBg2.setVisibility(View.VISIBLE);
// imageBg2.stopAll();
// imageBg2.setSource(list.get(position).getPlay_image(), 2);
imageBg2.previewEffectWith(list.get(position).getPlay_image());
}
}
// loadImage(getContext(),imageBg, list.get(position).getPlay_image());
// ImageUtils.loadDecorationAvatar(list.get(position).getPlay_image(), imageBg);
// imageBg.load(list.get(position).getPlay_image());
// if ("svga".equalsIgnoreCase(getFileExtension(list.get(position).getPlay_image()))) {
// imageBg.stopAll();
// imageBg.setSource(list.get(position).getPlay_image(), 2);
//// imageBg.playSVGA(list.get(position).getPlay_image());
// } else if ("mp4".equalsIgnoreCase(getFileExtension(list.get(position).getPlay_image()))) {
// imageBg.stopAll();
// imageBg.setSource(list.get(position).getPlay_image(), 2);
//// imageBg.playMP4(Uri.parse(list.get(position).getPlay_image()));
// }
}
zbName = list.get(position).getTitle();
zbPrice = list.get(position).getExt_value();
adapter1.setNewData(list);
adapter1.notifyDataSetChanged();
});
adapter.setNewData(zhuangBanShangChengBeanList);
}
/**
@@ -259,13 +208,61 @@ public class ZhuangBanShangChengFragment extends BaseMvpFragment<ZhuangBanShangC
if (did == null || did.isEmpty()) {
MvpPre.cancelUserDecorate(type + "");
} else {
MvpPre.setUserDecorate(did);
if (type == 12) {
queren(zbName, zbPrice);
} else {
MvpPre.setUserDecorate(did);
}
}
});
ThemeableDrawableUtils.setThemeableRoundedBackground(mBinding.zhuangbanBuy, ColorManager.getInstance().getPrimaryColorInt(), 53);
mBinding.zhuangbanBuy.setTextColor(ColorManager.getInstance().getButtonColorInt());
}
private void queren(String name, String price) {
// 创建并显示确认对话框
new ConfirmDialog(ActivityUtils.getTopActivity(),
"温馨提示",
getFormattedText(name,price),
"确认",
"取消",
v -> {
MvpPre.setUserDecorate(did);
},
v -> {
// 点击“取消”按钮时什么都不做
}, false, 0).show();
}
public String getFormattedText(String name, String price) {
// 1. 构建完整的字符串
String fullText = "亲爱的羽声用户,您好~ \n 您是否确认使用" + name + ",本次使用后,您的实时身价将会降低" + price + "%身价。";
// 2. 创建 SpannableString 实例
SpannableString spannableString = new SpannableString(fullText);
// 3. 找到需要变色的文本的起始和结束位置
int nameStart = fullText.indexOf(name);
int nameEnd = nameStart + name.length();
int priceStart = fullText.indexOf(price);
int priceEnd = priceStart + price.length();
// 4. 创建颜色 Span
ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.RED); // 使用 Color.RED 或者你自己的颜色资源
// 5. 将 Span 应用到指定范围
if (nameStart != -1) {
spannableString.setSpan(colorSpan, nameStart, nameEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
if (priceStart != -1) {
spannableString.setSpan(colorSpan, priceStart, priceEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return spannableString.toString();
}
@Override
protected int getLayoutId() {
return R.layout.zhuangban_recyclerview_noref;
@@ -276,13 +273,15 @@ public class ZhuangBanShangChengFragment extends BaseMvpFragment<ZhuangBanShangC
if (adapter == null) {
adapter = new ZhuangBanShangChengAdapter();
}
if (zhuangBanShangChengBeans==null){
zhuangBanShangChengBeans=new ArrayList<>();
if (zhuangBanShangChengBeans == null) {
zhuangBanShangChengBeans = new ArrayList<>();
}
if (type != 12) {
ZhuangBanShangChengBean zhuangBanShangChengBean = new ZhuangBanShangChengBean();
zhuangBanShangChengBean.setTitle("");
zhuangBanShangChengBean.setBase_image("");
zhuangBanShangChengBeans.add(0, zhuangBanShangChengBean);
}
ZhuangBanShangChengBean zhuangBanShangChengBean = new ZhuangBanShangChengBean();
zhuangBanShangChengBean.setTitle("");
zhuangBanShangChengBean.setBase_image("");
zhuangBanShangChengBeans.add(0, zhuangBanShangChengBean);
adapter.setNewData(zhuangBanShangChengBeans);
this.tabIndex = tabIndex;
@@ -291,6 +290,7 @@ public class ZhuangBanShangChengFragment extends BaseMvpFragment<ZhuangBanShangC
@Override
public void setUserDecorate() {
Toast.makeText(getSelfActivity(), "设置成功", Toast.LENGTH_SHORT).show();
MvpPre.getDecorateList(type + "", tabIndex);
}
@Override

View File

@@ -0,0 +1,14 @@
package com.xscm.modulemain.activity.user.presenter
import android.content.Context
import com.xscm.modulemain.activity.user.conacts.UserFamilyConacts
import com.xscm.moduleutil.presenter.BasePresenter
/**
* 项目名称:羽声语音
* 时间2025/11/25 17:01
* 用途:
*/
class UserFamilyPresenter (view: UserFamilyConacts.View,context: Context) : BasePresenter<UserFamilyConacts.View>(view,context), UserFamilyConacts.IPre{
}

View File

@@ -0,0 +1,27 @@
package com.xscm.modulemain.adapter
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.xscm.modulemain.activity.user.fragment.JoinedFamilyFragment
import com.xscm.modulemain.activity.user.fragment.MyFamilyFragment
/**
* @Author qx
* @Time 2025/11/25 17:25
* @Description 家族页面ViewPager2适配器
*/
class FamilyPagerAdapter(activity: FragmentActivity) : FragmentStateAdapter(activity) {
override fun getItemCount(): Int {
return 2
}
override fun createFragment(position: Int): Fragment {
return when (position) {
0 -> MyFamilyFragment.newInstance()
1 -> JoinedFamilyFragment.newInstance()
else -> MyFamilyFragment.newInstance()
}
}
}

View File

@@ -59,6 +59,8 @@ public class RoomSettingAdapter extends BaseMultiItemQuickAdapter<RoomSettingBea
return com.xscm.moduleutil.R.mipmap.huyu;
case RoomSettingBean.QXRoomSettingTypeRoomTypeLianG:
return com.xscm.moduleutil.R.mipmap.icon_liang;
case RoomSettingBean.QXRoomSettingTypeRoomTypeSIGNONTRACT :
return com.xscm.moduleutil.R.mipmap.icon_sign_contract;
// 常用工具
case RoomSettingBean.QXRoomSettingTypeRoomSubsidy:
return com.xscm.moduleutil.R.mipmap.ic_subsidy;

View File

@@ -21,7 +21,11 @@ import com.xscm.moduleutil.http.BaseObserver
import com.xscm.moduleutil.http.RetrofitClient
import io.reactivex.disposables.Disposable
import retrofit2.Retrofit
/**
* @Author
* @Time 2025/11/25 14:33
* @Description 表情类型列表
*/
class EmotionPickerDialog(context: Context) : Dialog(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) {
private lateinit var binding: DialogEmotionPickerBinding

View File

@@ -143,6 +143,7 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
dataList.add(new RoomSettingBean("点唱", "jiao_y", null, null, RoomSettingBean.QXRoomSettingTypeRoomTypeJiaoy, read, isSelected, false, false));// 添加的新的房间类型 ,交友 ,是原来的男神女神类型
dataList.add(new RoomSettingBean("互娱", "ic_jiaoy", null, null, RoomSettingBean.QXRoomSettingTypeRoomTypeHUYU, read, isSelected, false, false)); //原交友,更改互娱 2025年9月19日11:18:01
dataList.add(new RoomSettingBean("练歌房", "ic_liang", null, null, RoomSettingBean.QXRoomSettingTypeRoomTypeLianG, read, isSelected, false, false)); //练歌房,原点歌房,同意的时候,走同意点歌的逻辑
dataList.add(new RoomSettingBean("签约", "sing_contract", null, null, RoomSettingBean.QXRoomSettingTypeRoomTypeSIGNONTRACT, read, isSelected, false, false)); //签约房
dataList.add(new RoomSettingBean("常用工具", null, null, null, -1, read, isSelected, false, false));
@@ -283,7 +284,10 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
queren("7");
} else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomTypeLianG){
queren("-1");
}else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomSetting) {
}else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomTypeSIGNONTRACT){
queren("10");
}
else if (bean.getType() == RoomSettingBean.QXRoomSettingTypeRoomSetting) {
if (roomInfoResp != null) {
ARouter.getInstance().build(ARouteConstants.CREATED_ROOM).withSerializable("roomInfoResp", roomInfoResp).navigation();
} else {
@@ -335,7 +339,22 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
// 创建并显示确认对话框
new ConfirmDialog(getActivity(),
"提示",
"即将修改房间类型为" + (type.equals("1") ? "交友" : (type.equals("2") ? "拍卖" : (type.equals("3") ? "男神" : (type.equals("4") ? "女神" : (type.equals("7") ? "互娱" : (type.equals("9") ? "点唱" :(type.equals("-1") ? "练歌房" : ""))))))),
"即将修改房间类型为" +
(type.equals("1") ? "交友" :
(type.equals("2") ? "拍卖" :
(type.equals("3") ? "男神" :
(type.equals("4") ? "女神" :
(type.equals("7") ? "互娱" :
(type.equals("9") ? "点唱" :
(type.equals("-1") ? "练歌房" :
(type.equals("10") ? "签约房" : "")
)
)
)
)
)
)
),
"确认",
"取消",
v -> {
@@ -383,7 +402,7 @@ public class RoomSettingFragment extends BaseMvpDialogFragment<RoomSettingPresen
if (type == RoomSettingBean.QXRoomSettingTypeRoomTypeSing || type == RoomSettingBean.QXRoomSettingTypeRoomTypeAuction ||
type == RoomSettingBean.QXRoomSettingTypeRoomTypeHUYU ||
type == RoomSettingBean.QXRoomSettingTypeRoomTypeJiaoy ||
type == RoomSettingBean.QXRoomSettingTypeRoomTypeLianG ||
type == RoomSettingBean.QXRoomSettingTypeRoomTypeLianG || type== RoomSettingBean.QXRoomSettingTypeRoomTypeSIGNONTRACT ||
type == RoomSettingBean.QXRoomSettingTypeRoomClearMessage || type == QXRoomSettingTypeRoomOrderMic || type == RoomSettingBean.QXRoomSettingTypeRoomFloatingScreen
|| type == RoomSettingBean.QXRoomSettingTypeRoomBgMusic || type == RoomSettingBean.QXRoomSettingTypeRoomBgImage || type == -1) {

View File

@@ -0,0 +1,101 @@
package com.xscm.modulemain.dialog
import android.app.Dialog
import android.content.Context
import android.graphics.Point
import android.view.Gravity
import android.view.LayoutInflater
import android.view.ViewGroup
import com.blankj.utilcode.util.ScreenUtils
import com.xscm.modulemain.databinding.DialogUserNetWorthBinding
import com.xscm.moduleutil.color.ThemeableDrawableUtils
import com.xscm.moduleutil.utils.ColorManager
/**
* 项目名称:羽声语音
* 时间2025/11/25 14:35
* 用途:用户身价详情对话框
*/
class UserNetWorthDialog(context: Context) :
Dialog(context, com.xscm.moduleutil.R.style.BaseDialogStyleH) {
private lateinit var mBinding: DialogUserNetWorthBinding
init {
mBinding = DialogUserNetWorthBinding.inflate(LayoutInflater.from(context))
setContentView(mBinding.root)
setupWindow()
setupViews()
initView()
}
private fun setupViews() {
}
private fun setupWindow() {
val window = window ?: return
window.setGravity(Gravity.CENTER)
window.setLayout(
(ScreenUtils.getScreenWidth() * 315f / 375).toInt(),
ViewGroup.LayoutParams.WRAP_CONTENT
)
window.setBackgroundDrawableResource(android.R.color.transparent)
val params = window.attributes
params.windowAnimations = com.xscm.moduleutil.R.style.BaseDialogStyleH
window.attributes = params
}
fun initView() {
// 设置对话框不能通过点击外部关闭
setCancelable(false)
setCanceledOnTouchOutside(false)
ThemeableDrawableUtils.setThemeableRoundedBackground(
mBinding.tvConfirm,
ColorManager.getInstance().getPrimaryColorInt(),
53
)
mBinding.tvConfirm.setTextColor(ColorManager.getInstance().getButtonColorInt())
// 设置关闭按钮点击事件
mBinding.ivClose.setOnClickListener {
dismiss()
}
// 设置确认按钮点击事件
mBinding.tvConfirm.setOnClickListener {
dismiss()
}
}
/**
* 设置对话框大小基于375×933的屏幕尺寸宽高比为312×470
*/
private fun setDialogSize() {
val window = window
if (window != null) {
val display = window.windowManager.defaultDisplay
val size = Point()
display.getSize(size)
// 获取屏幕宽度
val screenWidth = size.x
// 基于375宽度计算312的宽度比例
val widthRatio = 312f / 375f
// 基于933高度计算470的高度比例
val heightRatio = 470f / 933f
// 计算对话框的实际宽度和高度
val dialogWidth = (screenWidth * widthRatio).toInt()
val dialogHeight = (screenWidth * heightRatio).toInt()
// 设置对话框宽高
window.setLayout(dialogWidth, dialogHeight)
}
}
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="99dp" />
<solid android:color="#2B2482" />
</shape>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<shape android:shape="rectangle">
<corners android:radius="20dp" />
<solid android:color="#000000" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<corners android:radius="20dp" />
<solid android:color="@color/transparent" />
</shape>
</item>
</selector>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="#000000" />
<item android:color="#FFFFFF" />
</selector>

View File

@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8"?>
<layout 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:id="@+id/main"
tools:context=".activity.user.activity.TotalRevenueActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.xscm.moduleutil.widget.CustomTopBar
android:id="@+id/top_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:background="@drawable/bg_r16_fff"
android:layout_marginHorizontal="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_22"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/top_bar">
<LinearLayout
android:id="@+id/rl3"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_38"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginEnd="@dimen/dp_16"
android:background="@drawable/bg_r5_e9e9"
android:gravity="center">
<TextView
android:id="@+id/tv2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_12"
android:layout_weight="1"
android:hint="开始日期"
android:textColor="@color/color_FF999999"
android:textSize="12sp"
tools:text="开始日期" />
<ImageView
android:id="@+id/iv1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_weight="0.2"
android:paddingTop="@dimen/dp_3"
android:src="@mipmap/data1" />
<TextView
android:id="@+id/tv22"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_weight="1"
android:hint="结束日期"
android:textColor="@color/color_FF999999"
android:textSize="12sp"
tools:text="结束日期" />
<ImageView
android:id="@+id/iv2"
android:layout_width="0dp"
android:layout_height="@dimen/dp_16"
android:layout_marginStart="4dp"
android:layout_weight="0.2"
android:paddingTop="@dimen/dp_2"
android:src="@mipmap/data2" />
</LinearLayout>
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/smart_refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srlEnableLoadMore="true"
app:srlEnableRefresh="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/revenue_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="0dp"
android:background="@color/white"
android:clipToPadding="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:listitem="@layout/item_total_revenue" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<layout 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:id="@+id/main"
tools:context=".activity.user.activity.UserFamilyActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- 背景渐变 -->
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/singer_bj"
android:elevation="-1dp" />
<!-- 顶部标题栏 -->
<com.xscm.moduleutil.widget.CustomTopBar
android:id="@+id/top_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.4" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_r99_2b2482"
android:backgroundTint="#33000000"
android:layout_marginHorizontal="@dimen/dp_64"
app:layout_constraintTop_toBottomOf="@id/guideline"
app:tabGravity="fill"
app:tabIndicatorColor="@color/transparent"
app:tabIndicatorFullWidth="false"
app:tabIndicatorHeight="0dp"
app:tabMaxWidth="0dp"
app:tabMinWidth="0dp"
app:tabMode="fixed"
app:tabRippleColor="@color/transparent"
app:tabSelectedTextColor="@color/black"
app:tabTextColor="@color/white"
app:tabPaddingStart="0dp"
app:tabPaddingEnd="0dp"
android:paddingLeft="0dp"
android:paddingRight="0dp" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginTop="@dimen/dp_12"
app:layout_constraintTop_toBottomOf="@id/tabLayout" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:gravity="center"
android:orientation="horizontal"
android:paddingStart="0dp"
android:paddingEnd="0dp"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp">
<TextView
android:id="@+id/tab_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textColor="@drawable/tab_text_color_selector"
android:textSize="14sp"
android:layout_gravity="center"
android:fontFamily="@font/semibold"
android:gravity="center"
android:paddingVertical="@dimen/dp_11"
tools:text="我的家族"
tools:textColor="@color/black"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
/>
</LinearLayout>

View File

@@ -0,0 +1,285 @@
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_31">
<ImageView
android:id="@+id/iv_bj"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@mipmap/net_worth_dialog_bj"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_11"
android:fontFamily="sans-serif-medium"
android:text="身价详情"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!-- 直接在 ImageView 的标签中添加 app:tint 属性(注意是 app: 命名空间,不是 android:)。-->
<ImageView
android:id="@+id/iv_close"
android:layout_width="@dimen/dp_20"
android:layout_height="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_11"
android:layout_marginEnd="@dimen/dp_11"
android:scaleType="fitCenter"
android:src="@mipmap/gb"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="@color/color_FF999999" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_1"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_113"
android:layout_marginHorizontal="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_8"
android:background="@drawable/bg_r8_fff"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title">
<TextView
android:id="@+id/tv_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:gravity="center"
android:padding="@dimen/dp_2"
android:text="当前身价"
android:textColor="#FF7700"
android:textSize="@dimen/sp_14"
app:layout_constraintEnd_toEndOf="@id/cl_1"
app:layout_constraintStart_toStartOf="@+id/cl_1"
app:layout_constraintTop_toTopOf="@+id/cl_1" />
<TextView
android:id="@+id/tv_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableEnd="@mipmap/jinb"
android:gravity="center"
android:padding="@dimen/dp_2"
tools:text="12"
android:textColor="@color/black"
android:textSize="@dimen/sp_18"
app:layout_constraintEnd_toEndOf="@id/tv_1"
app:layout_constraintTop_toBottomOf="@+id/tv_1" />
<TextView
android:id="@+id/tv_user_value_tip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_8"
android:paddingHorizontal="@dimen/dp_16"
android:text="注每个用户默认身价是1金币收到礼物后按照比例进行换算身价"
android:textColor="#CF9D40"
android:textSize="@dimen/sp_12"
app:layout_constraintBottom_toBottomOf="@+id/cl_1"
app:layout_constraintEnd_toEndOf="@+id/cl_1"
app:layout_constraintStart_toStartOf="@+id/cl_1" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_2"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_229"
android:layout_marginHorizontal="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_8"
android:background="@drawable/bg_r8_fff"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cl_1">
<TextView
android:id="@+id/tv_jpyj"
android:layout_width="@dimen/dp_48"
android:layout_height="@dimen/dp_48"
android:layout_marginStart="@dimen/dp_19"
android:layout_marginTop="@dimen/dp_24"
android:background="@mipmap/icon_jpyj"
android:gravity="center"
android:text="竞拍溢价"
android:fontFamily="sans-serif-medium"
android:textColor="#348AD5"
android:textSize="@dimen/sp_10"
app:layout_constraintStart_toStartOf="@id/cl_2"
app:layout_constraintTop_toTopOf="@+id/cl_2" />
<TextView
android:id="@+id/tv_j"
android:layout_width="@dimen/dp_13"
android:layout_height="@dimen/dp_28"
android:gravity="center"
android:text="+"
android:textColor="#ff333333"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/tv_jpyj"
app:layout_constraintEnd_toStartOf="@+id/tv_slsj"
app:layout_constraintStart_toEndOf="@+id/tv_jpyj"
app:layout_constraintTop_toTopOf="@+id/tv_jpyj" />
<TextView
android:id="@+id/tv_slsj"
android:layout_width="@dimen/dp_48"
android:layout_height="@dimen/dp_48"
android:background="@mipmap/icon_slsj"
android:gravity="center"
android:text="收礼身价"
android:textColor="#EDAA19"
android:textSize="@dimen/sp_10"
app:layout_constraintStart_toEndOf="@id/tv_j"
app:layout_constraintEnd_toStartOf="@id/tv_d"
app:layout_constraintTop_toTopOf="@+id/tv_jpyj" />
<TextView
android:id="@+id/tv_d"
android:layout_width="@dimen/dp_13"
android:layout_height="@dimen/dp_28"
android:gravity="center"
android:text="="
android:textColor="#ff333333"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/tv_slsj"
app:layout_constraintEnd_toStartOf="@+id/tv_sj"
app:layout_constraintStart_toEndOf="@+id/tv_slsj"
app:layout_constraintTop_toTopOf="@+id/tv_slsj" />
<TextView
android:id="@+id/tv_sj"
android:layout_width="@dimen/dp_72"
android:layout_height="@dimen/dp_72"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginEnd="@dimen/dp_19"
android:background="@mipmap/icon_sj"
android:gravity="center"
android:fontFamily="sans-serif-medium"
android:text="实际身价"
android:textColor="#008927"
android:textSize="@dimen/sp_15"
app:layout_constraintEnd_toEndOf="@+id/cl_2"
app:layout_constraintTop_toTopOf="@+id/cl_2" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_17"
android:layout_marginEnd="@dimen/dp_16"
android:layout_marginBottom="@dimen/dp_12"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="@id/cl_2"
app:layout_constraintEnd_toEndOf="@id/cl_2"
app:layout_constraintStart_toStartOf="@id/cl_2">
<LinearLayout
android:id="@+id/l1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_7"
android:layout_weight="1"
android:background="@drawable/bg_r8_fff"
android:backgroundTint="#E5F7FF"
android:orientation="vertical">
<TextView
android:id="@+id/tv_jpyj_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_r8_top_aeedff"
android:gravity="center"
android:paddingVertical="@dimen/dp_4"
android:text="竞拍溢价"
android:textColor="#348AD5"
android:textSize="@dimen/sp_12" />
<TextView
android:id="@+id/tv_jpyj_value"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start|center"
android:padding="@dimen/dp_10"
android:text="签约竞拍次数越多,签约成交比签约时身价更高,则竞拍溢价就越高"
android:textColor="#4BA9C4"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:id="@+id/l2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_7"
android:layout_weight="1"
android:background="@drawable/bg_r8_fff"
android:backgroundTint="#F6F8E5"
android:orientation="vertical">
<TextView
android:id="@+id/tv_slsj_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_r8_top_aeedff"
android:backgroundTint="#FFE697"
android:gravity="center"
android:paddingVertical="@dimen/dp_4"
android:text="收礼身价"
android:textColor="#B9931D"
android:textSize="@dimen/sp_12" />
<TextView
android:id="@+id/tv_slsj_value"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start|center"
android:padding="@dimen/dp_10"
android:text="签约竞拍次数越多,签约成交比签约时身价更高,则竞拍溢价就越高"
android:textColor="#EDAA19"
android:textSize="@dimen/sp_12" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_confirm"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_40"
android:text="确认"
android:background="@drawable/cs"
android:gravity="center"
android:textColor="@color/white"
android:textSize="@dimen/sp_14"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginHorizontal="@dimen/dp_17"
android:layout_marginBottom="@dimen/dp_17"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -7,18 +7,19 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
>
<ImageView
android:id="@+id/im_intimate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_34"
android:scaleType="fitXY"
android:src="@mipmap/icon_initimate_ts"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toBottomOf="@+id/smart_refresh_layout"/>
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/smart_refresh_layout"

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.user.fragment.JoinedFamilyFragment">
<!-- 我加入的家族内容 -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="我加入的家族"
android:textColor="@color/white"
android:textSize="16sp" />
</FrameLayout>

View File

@@ -0,0 +1,181 @@
<?xml version="1.0" encoding="utf-8"?>
<layout 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"
tools:context=".activity.user.fragment.MyFamilyFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/refreshLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginHorizontal="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_10"
android:layout_weight="1"
app:srlEnableLoadMore="true"
app:srlEnableRefresh="true">
<!-- 使用 LinearLayout 作为 SmartRefreshLayout 的唯一子布局 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_r12_c5ffc9_f9e9ff_c7ecfa">
<com.xscm.moduleutil.utils.MeHeadView
android:id="@+id/headView"
android:layout_width="@dimen/dp_52"
android:layout_height="@dimen/dp_52"
android:layout_marginStart="@dimen/dp_12"
android:layout_marginTop="@dimen/dp_12"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_launcher_background" />
<TextView
android:id="@+id/tv_user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_6"
android:fontFamily="@font/semibold"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_16"
app:layout_constraintBottom_toBottomOf="@id/headView"
app:layout_constraintStart_toEndOf="@id/headView"
app:layout_constraintTop_toTopOf="@id/headView"
tools:text="家族名称" />
<TextView
android:id="@+id/tv_user_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="家族等级"
android:textColor="@color/color_FF999999"
android:textSize="@dimen/sp_12"
app:layout_constraintStart_toStartOf="@id/tv_user_name"
app:layout_constraintTop_toBottomOf="@id/tv_user_name" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_12"
android:background="@drawable/tv_border_background"
android:paddingHorizontal="@dimen/dp_12"
android:paddingVertical="@dimen/dp_4"
android:text="家族群"
android:textColor="#3ABC6D"
android:textSize="@dimen/sp_13"
app:layout_constraintBottom_toBottomOf="@id/headView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/headView" />
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_34"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginEnd="@dimen/dp_12"
android:background="@drawable/bg_r6_ff6f0_f6d2f2_c2ebff"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/headView"
app:layout_constraintTop_toBottomOf="@+id/headView" />
<TextView
android:id="@+id/tv_zsy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:gravity="center"
android:text="总计收益:"
android:textColor="#FF2727"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/view"
app:layout_constraintStart_toStartOf="@id/view"
app:layout_constraintTop_toTopOf="@+id/view" />
<TextView
android:id="@+id/tv_zsy_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@mipmap/zs_tb"
android:gravity="center"
android:text="0"
android:textColor="#FF2727"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/view"
app:layout_constraintStart_toEndOf="@id/tv_zsy"
app:layout_constraintTop_toTopOf="@+id/view" />
<TextView
android:id="@+id/tv_zsy_num2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_8"
android:gravity="center"
android:paddingVertical="@dimen/dp_6"
android:paddingEnd="@dimen/dp_8"
android:text="查看更多"
android:textColor="#a6000000"
android:textSize="@dimen/sp_12"
app:layout_constraintBottom_toBottomOf="@id/view"
app:layout_constraintEnd_toEndOf="@id/view"
app:layout_constraintTop_toTopOf="@+id/view" />
<TextView
android:id="@+id/tv_sign_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_12"
android:background="@mipmap/sign_num_bg"
android:paddingHorizontal="@dimen/dp_10"
android:paddingVertical="@dimen/dp_4"
android:text="签约次数2"
android:textColor="@color/white"
android:textSize="@dimen/sp_12"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/view" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="@dimen/dp_10"
android:background="@mipmap/bg_family_members"
android:gravity="center"
android:paddingHorizontal="@dimen/dp_38"
android:paddingTop="@dimen/dp_12"
android:paddingBottom="@dimen/dp_7"
android:text="我的家庭"
android:textColor="#ffffff"
android:textSize="@dimen/sp_14"
android:textStyle="bold" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_10"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="1"
tools:listitem="@layout/item_family_members" />
</LinearLayout>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</LinearLayout>
</layout>

View File

@@ -614,12 +614,42 @@
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_my_net_worth"
android:layout_width="0dp"
android:layout_height="@dimen/dp_60"
android:layout_gravity="center"
android:layout_marginEnd="@dimen/dp_8"
android:layout_weight="1"
android:background="@mipmap/bg_net_worth"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/tv_worth"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:fontFamily="@font/semibold"
android:text="0"
android:textColor="#222222"
android:textSize="@dimen/sp_20" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/net_worth"
android:textColor="#333"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_gift_wall"
android:layout_width="0dp"
android:layout_height="@dimen/dp_60"
android:layout_gravity="center"
android:layout_marginStart="@dimen/dp_8"
android:layout_weight="1"
android:background="@drawable/bg_me_gift_wall"
android:gravity="center"
@@ -672,6 +702,32 @@
android:layout_marginTop="@dimen/dp_12"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/ll_jz"
android:layout_width="0dp"
android:layout_height="@dimen/dp_46"
android:layout_gravity="bottom"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical"
android:visibility="visible">
<ImageView
android:layout_width="@dimen/dp_24"
android:layout_height="@dimen/dp_24"
android:src="@mipmap/icon_me_family"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_17"
android:layout_marginTop="@dimen/dp_3"
android:text="@string/me_family"
android:textColor="#CCCDC8"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:id="@+id/me_my_dan"
android:layout_width="0dp"
@@ -744,31 +800,7 @@
</LinearLayout>
<LinearLayout
android:id="@+id/iv_sz"
android:layout_width="0dp"
android:layout_height="@dimen/dp_46"
android:layout_gravity="bottom"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical"
android:visibility="visible">
<ImageView
android:layout_width="@dimen/dp_24"
android:layout_height="@dimen/dp_24"
android:src="@mipmap/me_setting"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_17"
android:layout_marginTop="@dimen/dp_3"
android:text="@string/setting_name"
android:textColor="#CCCDC8"
android:textSize="@dimen/sp_12" />
</LinearLayout>
</LinearLayout>
@@ -997,17 +1029,34 @@
android:textSize="@dimen/sp_12" />
</LinearLayout>
<!-- 占位符确保每行都有4个项目 -->
<LinearLayout
android:id="@+id/iv_sz"
android:layout_width="0dp"
android:layout_height="@dimen/dp_46"
android:layout_height="@dimen/dp_44"
android:layout_gravity="bottom"
android:layout_marginTop="@dimen/dp_5"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical"
android:visibility="invisible"
android:visibility="visible"
app:layout_flexBasisPercent="25%"
app:layout_flexGrow="1"/>
app:layout_flexGrow="1">
<ImageView
android:layout_width="@dimen/dp_24"
android:layout_height="@dimen/dp_24"
android:src="@mipmap/me_setting"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_17"
android:layout_marginTop="@dimen/dp_3"
android:text="@string/setting_name"
android:textColor="#CCCDC8"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"

View File

@@ -0,0 +1,233 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_marginVertical="@dimen/dp_6"
android:background="@drawable/bg_r12_fffac5_f9e9ff_c7d3fa">
<com.xscm.moduleutil.utils.MeHeadView
android:id="@+id/iv_head"
android:layout_width="@dimen/dp_52"
android:layout_height="@dimen/dp_52"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginStart="@dimen/dp_22"
tools:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:textStyle="bold"
android:maxEms="1011"
android:maxLines="1"
android:ellipsize="end"
android:textSize="@dimen/sp_16"
app:layout_constraintStart_toStartOf="@+id/iv_head"
app:layout_constraintTop_toBottomOf="@+id/iv_head"
app:layout_constraintEnd_toEndOf="@id/iv_head"
android:layout_marginTop="@dimen/dp_4"
tools:text="zhangsan" />
<TextView
android:id="@+id/tv_net_worth"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF2727"
android:maxLines="1"
android:gravity="center"
android:drawableStart="@mipmap/jinb"
android:ellipsize="end"
android:textSize="@dimen/sp_14"
app:layout_constraintStart_toStartOf="@+id/iv_head"
app:layout_constraintTop_toBottomOf="@+id/tv_name"
app:layout_constraintEnd_toEndOf="@id/iv_head"
android:layout_marginTop="@dimen/dp_4"
tools:text="9999" />
<ImageView
android:id="@+id/im_online"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_16"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_net_worth"
app:layout_constraintStart_toStartOf="@id/iv_head"
android:layout_marginTop="@dimen/dp_4"
app:layout_constraintEnd_toEndOf="@id/iv_head"
android:src="@mipmap/members_online"
android:scaleType="fitCenter"
android:layout_marginBottom="@dimen/dp_12" />
<com.google.android.flexbox.FlexboxLayout
android:id="@+id/flex_entry"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_17"
android:layout_marginEnd="@dimen/dp_8"
app:alignContent="flex_start"
app:alignItems="flex_start"
app:flexWrap="wrap"
app:layout_constraintStart_toEndOf="@+id/iv_head"
app:layout_constraintTop_toTopOf="@id/iv_head"
app:layout_constraintEnd_toEndOf="parent"
/>
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:textStyle="bold"
android:gravity="center"
android:layout_marginTop="@dimen/dp_10"
android:textSize="@dimen/sp_12"
app:layout_constraintStart_toStartOf="@+id/flex_entry"
app:layout_constraintTop_toBottomOf="@+id/flex_entry"
tools:text="剩余租期5天10小时"
/>
<TextView
android:id="@+id/tv_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:textStyle="bold"
android:gravity="center"
android:layout_marginTop="@dimen/dp_8"
android:textSize="@dimen/sp_12"
app:layout_constraintStart_toStartOf="@+id/flex_entry"
app:layout_constraintTop_toBottomOf="@+id/tv_time"
tools:text="免费续约次数3次"
/>
<LinearLayout
android:id="@+id/l1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@+id/tv_num"
app:layout_constraintStart_toStartOf="@+id/flex_entry"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/l2"
app:layout_constraintHorizontal_weight="1"
android:layout_marginBottom="@dimen/dp_12"
android:layout_marginTop="@dimen/dp_8"
android:background="@drawable/bg_r4_f3ff98_d9ffe1_ffdaed"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="@dimen/dp_4"
android:textColor="@color/black"
android:gravity="center"
android:textSize="@dimen/sp_12"
android:layout_gravity="top|center_vertical|center"
android:text="今日"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:gravity="center"
android:textSize="@dimen/sp_12"
android:layout_gravity="top|center_vertical|center"
android:text="收礼盈利"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_4"
android:drawableStart="@mipmap/zs_tb"
android:textColor="#FF2727"
android:textSize="@dimen/sp_12"
android:gravity="center"
android:layout_gravity="top|center_vertical|center"
tools:text="9999.99"/>
</LinearLayout>
<LinearLayout
android:id="@+id/l2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@+id/tv_num"
android:layout_marginStart="@dimen/dp_5"
app:layout_constraintStart_toEndOf="@+id/l1"
app:layout_constraintEnd_toStartOf="@+id/tv_renew"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_weight="1"
android:layout_marginBottom="@dimen/dp_12"
android:layout_marginTop="@dimen/dp_8"
android:background="@drawable/bg_r4_f3ff98_d9ffe1_ffdaed"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="@dimen/dp_4"
android:textColor="@color/black"
android:gravity="center"
android:textSize="@dimen/sp_12"
android:layout_gravity="top|center_vertical|center"
android:text="昨日"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:gravity="center"
android:textSize="@dimen/sp_12"
android:layout_gravity="top|center_vertical|center"
android:text="收礼盈利"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_4"
android:drawableStart="@mipmap/zs_tb"
android:textColor="#FF2727"
android:textSize="@dimen/sp_12"
android:gravity="center"
android:layout_gravity="top|center_vertical|center"
tools:text="9999.99"/>
</LinearLayout>
<TextView
android:id="@+id/tv_renew"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="续租"
app:layout_constraintStart_toEndOf="@+id/l2"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="@dimen/dp_6"
android:layout_marginBottom="@dimen/dp_12"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="@dimen/dp_8"
android:paddingHorizontal="@dimen/dp_18"
android:paddingVertical="@dimen/dp_6"
android:textColor="@color/white"
android:background="@drawable/cs"
android:textSize="@dimen/sp_14"
app:layout_constraintHorizontal_weight="1"
android:gravity="center"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_12"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<TextView
android:id="@+id/tv_name"
android:layout_width="@dimen/dp_200"
android:layout_height="@dimen/dp_20"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:textSize="@dimen/sp_14"
android:textColor="@color/color_FF333333"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:singleLine="true"
tools:text="名称"
/>
<TextView
android:id="@+id/tv_gift"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_17"
app:layout_constraintTop_toBottomOf="@id/tv_name"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="@dimen/dp_4"
android:textSize="@dimen/sp_12"
android:textColor="#A6A6A6"
android:text="礼物名称:"
/>
<TextView
android:id="@+id/tv_gift_name"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_17"
app:layout_constraintTop_toTopOf="@id/tv_gift"
app:layout_constraintStart_toEndOf="@id/tv_gift"
android:textSize="@dimen/sp_12"
android:textColor="#A6A6A6"
tools:text="娃哈哈:"
/>
<TextView
android:id="@+id/tv_gift_price_title"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_17"
app:layout_constraintTop_toBottomOf="@id/tv_gift"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="@dimen/dp_4"
android:textSize="@dimen/sp_12"
android:textColor="#A6A6A6"
android:text="礼物金额:"
/>
<TextView
android:id="@+id/tv_gift_price"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_17"
app:layout_constraintTop_toTopOf="@id/tv_gift_price_title"
app:layout_constraintStart_toEndOf="@id/tv_gift_price_title"
android:textSize="@dimen/sp_12"
android:textColor="#A6A6A6"
tools:text="2.0"
/>
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_17"
app:layout_constraintTop_toBottomOf="@id/tv_gift_price_title"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="@dimen/dp_4"
android:textSize="@dimen/sp_12"
android:textColor="#A6A6A6"
tools:text="时间2025-5-27 16:43:09"
/>
<TextView
android:id="@+id/tv_jb"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_24"
app:layout_constraintTop_toTopOf="@id/tv_name"
app:layout_constraintEnd_toEndOf="parent"
android:textSize="@dimen/sp_16"
android:textColor="@color/color_ff2727"
android:drawableEnd="@mipmap/zs_tb"
tools:text="+10"
/>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/dp_1"
app:layout_constraintTop_toBottomOf="@+id/tv_time"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginTop="@dimen/dp_12"
android:background="#F1F2F3"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 776 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 709 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 408 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 970 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 309 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 960 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 455 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 975 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 810 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 712 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 888 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 680 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 383 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 971 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Some files were not shown because too many files have changed in this diff Show More