Files
midi-android/modulevocal/src/main/java/com/example/modulevocal/fragment/UserHomepageFragment.java
2025-08-26 19:34:44 +08:00

275 lines
10 KiB
Java

package com.example.modulevocal.fragment;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.recyclerview.widget.GridLayoutManager;
import com.alibaba.android.arouter.launcher.ARouter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevocal.R;
import com.example.modulevocal.conacts.UserHomepageConacts;
import com.example.modulevocal.databinding.FragmentUserHompageBinding;
import com.example.modulevocal.presenter.UserHomepagePresenter;
import com.xscm.moduleutil.base.BaseMvpFragment;
import com.xscm.moduleutil.bean.CircleListBean;
import com.xscm.moduleutil.bean.MyBagBean;
import com.xscm.moduleutil.bean.UserInfo;
import com.xscm.moduleutil.bean.UserTagBean;
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.utils.ColorManager;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.SpUtil;
import com.tencent.imsdk.v2.V2TIMConversation;
import com.tencent.qcloud.tuicore.TUIConstants;
import com.tencent.qcloud.tuikit.tuichat.classicui.page.TUIC2CChatActivity;
import java.util.ArrayList;
import java.util.List;
/**
* @author qx
* @data 2025/6/4
* @description: 用户主页
*/
public class UserHomepageFragment extends BaseMvpFragment<UserHomepagePresenter, FragmentUserHompageBinding> implements UserHomepageConacts.View {
private List<MyBagBean> list;
private String userId;
private UserInfo userInfo;
private BaseQuickAdapter<UserTagBean, BaseViewHolder> adapter;
private List<UserTagBean> userTagBeans = new ArrayList<>();
private int type;
@Override
public void setUserDetails(UserInfo data) {
}
@Override
public void setCircleList(List<CircleListBean> list) {
}
@Override
public void userGuanzSuccess(String s) {
if (userInfo.getIs_follow() == 1) {
userInfo.setIs_follow(0);
// SpUtil.saveUserInfo(userInfo);
} else {
userInfo.setIs_follow(1);
// SpUtil.saveUserInfo(userInfo);
}
refreshView();
}
@Override
public void setLikeZone() {
}
public static UserHomepageFragment newInstance(UserInfo userInfo, int type) {
UserHomepageFragment fragment = new UserHomepageFragment();
Bundle args = new Bundle();
args.putSerializable("userInfo", userInfo);
args.putInt("type", type);
fragment.setArguments(args);
return fragment;
}
@Override
public void initArgs(Bundle arguments) {
super.initArgs(arguments);
userInfo = (UserInfo) arguments.getSerializable("userInfo");
type = arguments.getInt("type");
}
@Override
protected UserHomepagePresenter bindPresenter() {
return new UserHomepagePresenter(this, getSelfActivity());
}
@Override
protected void initData() {
if (userInfo == null) {
userInfo = SpUtil.getUserInfo();
}
list = new ArrayList<>();
list.add(new MyBagBean("动态", "1"));
list.add(new MyBagBean("礼物墙", "2"));
list.add(new MyBagBean("我的相册", "3"));
mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), list, userInfo.getUser_id()+""));
mBinding.slidingTabLayout.setViewPager(mBinding.viewPager);
if (type == 1) {
mBinding.slidingTabLayout.setCurrentTab(1);
} else {
mBinding.slidingTabLayout.setCurrentTab(0);
}
mBinding.headerInfo.rivUserHead.setData(userInfo.getAvatar(), "", userInfo.getSex() + "");
mBinding.headerInfo.tvNickName.setText(userInfo.getNickname());
mBinding.headerInfo.tvUserId.setText(userInfo.getUser_code());
mBinding.headerInfo.tvAge.setText(userInfo.getAge() + "");
mBinding.headerInfo.tvJj.setText(userInfo.getProfile());
LinearLayout llContainer = mBinding.headerInfo.llImageContainer;
llContainer.removeAllViews(); // 清空旧的 ImageView
List<String> images = userInfo.getIcon(); // 获取图片列表
for (String url : images) {
if (url.contains("http")) {
ImageView imageView = new ImageView(getContext());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_37),
getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_15)
);
params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_5), 0); // 右边距
imageView.setLayoutParams(params);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
// 使用 Glide 加载图片
ImageUtils.loadHeadCC(url, imageView);
llContainer.addView(imageView);
}
}
mBinding.headerInfo.recycleView2.setLayoutManager(new GridLayoutManager(getContext(), 3));
adapter = new BaseQuickAdapter<UserTagBean, BaseViewHolder>(R.layout.item_tag, userTagBeans) {
@Override
protected void convert(BaseViewHolder helper, UserTagBean item) {
helper.setText(R.id.tv, item.getTag_name());
}
};
mBinding.headerInfo.recycleView2.setAdapter(adapter);
if (userInfo != null) {
if (userInfo.getTag_list() != null && !userInfo.getTag_list().isEmpty()) {
adapter.setNewData(userInfo.getTag_list());
}
}
mBinding.headerInfo.tvGz.setOnClickListener(this::onClick);
mBinding.headerInfo.tvGsSx.setOnClickListener(this::onClick);
refreshView();
try {
if (userInfo.getGuild()==null || userInfo.getGuild().isEmpty()){
mBinding.headerInfo.tvGH.setText("所属公会:无");
}else {
mBinding.headerInfo.tvGH.setText("所属公会:"+userInfo.getGuild());
}
} catch (Exception ignored) {
mBinding.headerInfo.tvGH.setText("所属公会:无");
}
}
private void refreshView() {
if (SpUtil.getUserId() == userInfo.getUser_id()) {
mBinding.headerInfo.tvGsSx.setVisibility(View.GONE);
mBinding.headerInfo.tvGz.setVisibility(View.GONE);
} else {
mBinding.headerInfo.tvGsSx.setVisibility(View.VISIBLE);
mBinding.headerInfo.tvGz.setVisibility(View.VISIBLE);
if (userInfo.getIs_follow() == 1) {
// mBinding.headerInfo.tvGz.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.yigz));
ThemeableDrawableUtils.setThemeableRoundedBackground( mBinding.headerInfo.tvGz, ContextCompat.getColor(getContext(), com.xscm.moduleutil.R.color.EFF2F8), 34);
mBinding.headerInfo.tvGz.setTextColor(Color.BLACK);
mBinding.headerInfo.tvGz.setText("已关注");
} else {
// mBinding.headerInfo.tvGz.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.gz));
ThemeableDrawableUtils.setThemeableRoundedBackground( mBinding.headerInfo.tvGz, ColorManager.getInstance().getPrimaryColorInt(), 34);
mBinding.headerInfo.tvGz.setTextColor(ColorManager.getInstance().getButtonColorInt());
mBinding.headerInfo.tvGz.setText("关注");
}
if (userInfo.getRoom_id() == null || userInfo.getRoom_id().equals("0")) {
mBinding.headerInfo.tvGsSx.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.six));
} else {
mBinding.headerInfo.tvGsSx.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.gsui));
}
}
}
private void onClick(View view) {
if (view.getId() == R.id.tv_gz) {
MvpPre.userGuanz(userInfo.getUser_id() + "", "1");
} else if (view.getId() == R.id.tv_gs_sx) {
if (userInfo.getRoom_id() == null || userInfo.getRoom_id().equals("0")) {
Intent intent = new Intent(getActivity(), TUIC2CChatActivity.class);
intent.putExtra(TUIConstants.TUIChat.CHAT_ID, "u" + userInfo.getUser_id());
intent.putExtra(TUIConstants.TUIChat.CHAT_TYPE, V2TIMConversation.V2TIM_C2C);
startActivity(intent);
} else {
ARouter.getInstance().build(ARouteConstants.ROOM_DETAILS).withString("roomId", userInfo.getRoom_id()).navigation();
}
}
}
@Override
protected void initView() {
mBinding.constraintLayout.setVisibility(View.VISIBLE);
}
@Override
protected int getLayoutId() {
return R.layout.fragment_user_hompage;
}
private static class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {
private List<MyBagBean> list;
private String userId;
public MyFragmentPagerAdapter(FragmentManager fm, List<MyBagBean> list, String userId) {
super(fm);
this.list = list;
this.userId = userId;
}
@Override
public Fragment getItem(int position) {
MyBagBean model = list.get(position);
if ("1".equals(model.getMyBagType())) {
return CirleListFragment.newInstance(userId);
} else if ("2".equals(model.getMyBagType())) {
return UserGiftWallFragment.newInstance(userId);
} else {
return MyAlbumFragment.newInstance(userId);
}
}
@Override
public int getCount() {
return list.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
MyBagBean model = list.get(position);
return model.getMyBagTitle();
}
}
}