语圈基本完成

2、个人主页完成
This commit is contained in:
2025-06-07 09:00:24 +08:00
parent c24fb05d51
commit c9f5c59ba8
186 changed files with 7140 additions and 1889 deletions

View File

@@ -2,7 +2,13 @@ plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
}
configurations.all {
// 解决注解处理器冲突
resolutionStrategy {
force 'com.alibaba:arouter-compiler:1.5.2'
force 'com.google.auto.service:auto-service:1.0'
}
}
android {
namespace 'com.example.modulevocal'
compileSdk 35
@@ -14,6 +20,16 @@ android {
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {
arguments += [
AROUTER_GENERATE_DOC: "enable",
// 显式指定模块名
AROUTER_MODULE_NAME: project.name
]
}
}
}
buildTypes {
@@ -43,4 +59,9 @@ dependencies {
implementation(project(':moduleUtil'))
implementation(project(':moduletablayout'))
}
implementation 'com.alibaba:arouter-api:1.5.2'
//annotationProcessor
annotationProcessor 'com.alibaba:arouter-compiler:1.5.2'
}
apply plugin: 'com.alibaba.arouter' //

View File

@@ -7,6 +7,15 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/BaseAppTheme">
<activity
android:name=".activity.AlbumDetailActivity"
android:exported="false" />
<activity
android:name=".activity.Setting1Activity"
android:exported="false" />
<activity
android:name=".activity.SettingActivity"
android:exported="false" />
<activity
android:name=".activity.CreateAlbumActivity"
android:exported="false" />
@@ -21,7 +30,8 @@
android:exported="false" />
<activity
android:name=".activity.UserHomepageActivity"
android:exported="false" />
android:exported="false"
/>
<activity
android:name=".activity.MyBagActivity"
android:exported="false" />
@@ -94,9 +104,6 @@
<activity
android:name=".activity.UnderageActivity"
android:exported="true" />
<activity
android:name=".activity.SettingActivity"
android:exported="true" />
</application>
</manifest>

View File

@@ -0,0 +1,392 @@
package com.example.modulevocal.activity;
import static android.view.View.VISIBLE;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.activity.EdgeToEdge;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.facade.annotation.Autowired;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.blankj.utilcode.util.TimeUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.example.modulevocal.R;
import com.example.modulevocal.adapter.AlbumPhotoAdapter;
import com.example.modulevocal.adapter.SingleChoiceAdapter;
import com.example.modulevocal.adapter.UserPhotoWallAdapter;
import com.example.modulevocal.conacts.AlbumDetailConacts;
import com.example.modulevocal.databinding.ActivityAlbumDetailBinding;
import com.example.modulevocal.presenter.AlbumDetailPresenter;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.entity.LocalMedia;
import com.qxcm.moduleutil.activity.BaseMvpActivity;
import com.qxcm.moduleutil.activity.IPresenter;
import com.qxcm.moduleutil.bean.AlbumBean;
import com.qxcm.moduleutil.bean.HeatedBean;
import com.qxcm.moduleutil.utils.ARouteConstants;
import com.qxcm.moduleutil.utils.GlideEngine;
import com.qxcm.moduleutil.utils.ImageUtils;
import com.qxcm.moduleutil.utils.MyPictureParameterStyle;
import com.qxcm.moduleutil.utils.SpUtil;
import com.qxcm.moduleutil.widget.Constants;
import com.qxcm.moduleutil.widget.dialog.ShareDialog;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
import org.greenrobot.eventbus.EventBus;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
*@author qx
*@data 2025/6/6
*@description: 相册详情
*/
@Route(path = ARouteConstants.USER_ALBUM_DETAIL)
public class AlbumDetailActivity extends BaseMvpActivity<AlbumDetailPresenter, ActivityAlbumDetailBinding> implements AlbumDetailConacts.View {
@Autowired
public String albumId;
@Autowired
public String pwd;
@Autowired
public String target_fragment;
private boolean isSelectMode = true; // 默认是 "选择" 状态
private int page;
private List<String> uploadedUrls = new ArrayList<>();//真实图片地址
AlbumPhotoAdapter adapter;
private String userId;
AlbumBean albumBean1;
@Override
protected void initData() {
mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
page++;
MvpPre.getAlbumDetail(albumId, pwd, page + "", "10");
}
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
// EventBus.getDefault().post(new BannerRefreshEvent());
page = 1;
MvpPre.getAlbumDetail(albumId, pwd, page + "", "10");
}
});
mBinding.imCrAlbum.setOnClickListener(this::onClick);
mBinding.tvBj.setOnClickListener(this::onClick);
mBinding.zan.setOnClickListener(this::onClick);
mBinding.lock.setOnClickListener(this::onClick);
mBinding.topBar.setRightText("选择");
mBinding.topBar.setRightColor(Color.parseColor("#FF8ACC"));
mBinding.topBar.getTvRight().setOnClickListener(v -> {
if (isSelectMode) {
mBinding.topBar.setRightText("取消");
// 进入取消逻辑,比如显示删除按钮、多选模式等
showControlInRecyclerView(); // 显示控件
} else {
mBinding.topBar.setRightText("选择");
// 返回选择逻辑,关闭多选或删除模式
hideControlInRecyclerView(); // 隐藏控件
}
isSelectMode = !isSelectMode; // 切换状态
});
adapter = new AlbumPhotoAdapter(null);
mBinding.recycleView.setAdapter(adapter);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
int type = adapter.getItemViewType(position);
if (type == 1) {
return 3; // 占满整行
} else {
return 1; // 每个图片占一列
}
}
});
mBinding.recycleView.setLayoutManager(gridLayoutManager);
mBinding.rlShare.setOnClickListener(this::onClick);
mBinding.rlTransfer.setOnClickListener(this::onClick);
mBinding.rlDelete.setOnClickListener(this::onClick);
}
private void showControlInRecyclerView() {
if (adapter != null) {
adapter.showControl(); // 调用适配器方法来显示控件
}
mBinding.bottomPanel.setVisibility(VISIBLE);
}
private void hideControlInRecyclerView() {
if (adapter != null) {
adapter.hideControl(); // 调用适配器方法来隐藏控件
adapter.clearSelections(); // 清空选中状态
}
mBinding.bottomPanel.setVisibility(View.GONE);
}
@Override
protected void onDestroy() {
super.onDestroy();
hideControlInRecyclerView();
}
private void onClick(View view) {
if (view.getId() == R.id.im_cr_album) {
startChoosePhoto(PictureMimeType.ofImage(), PictureConfig.REQUEST_CAMERA, false, 9);
} else if (view.getId() == R.id.tv_bj) {
ARouter.getInstance().build(ARouteConstants.CREATE_ALBUM).withSerializable("albumBean", albumBean1).navigation();
finish();
} else if (view.getId() == R.id.zan) {
if (albumBean1.getIs_like().equals("1")) {
albumBean1.setIs_like("0");
} else {
albumBean1.setIs_like("1");
}
MvpPre.likeAlbum(albumId);
} else if (view.getId() == R.id.lock) {
} else if (view.getId() == R.id.rl_share) {
if (adapter.getSelectedItems().size() > 2) {
hideControlInRecyclerView();
ToastUtils.showShort("只能选择一张照片");
} else if (adapter.getSelectedItems().isEmpty()) {
ToastUtils.showShort("请选择图片");
} else {
ShareDialog shareDialog = new ShareDialog(this, "", adapter.getSelectedItems().get(0).getImage(), "", 2);
shareDialog.show();
}
} else if (view.getId() == R.id.rl_transfer) {
MvpPre.getAlbumList("1", "10", userId);
} else if (view.getId() == R.id.rl_delete) {
MvpPre.deleteAlbumImage(adapter.getSelectedPhotoIdsAsString());
}
}
private void startChoosePhoto(int mimeType, int requestCode, boolean isVideo, int type) {
PictureSelector.create(this)
.openGallery(mimeType)
.isGif(isVideo)
.imageEngine(GlideEngine.createGlideEngine())
.isPreviewImage(true)
.isCamera(true)
.setOutputCameraPath(Constants.FILE_PATH)
.isCompress(true)
.setPictureStyle(MyPictureParameterStyle.Companion.selectPicture())
.forResult(requestCode); //结果回调onActivityResult code
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && data != null) {
switch (requestCode) {
case PictureConfig.REQUEST_CAMERA:
List<LocalMedia> localMediaList = PictureSelector.obtainMultipleResult(data);
if (localMediaList != null && !localMediaList.isEmpty()) {
List<File> imageFiles = new ArrayList<>();
for (LocalMedia media : localMediaList) {
String path = media.isCompressed() ? media.getCompressPath() : media.getRealPath();
imageFiles.add(new File(path));
}
// 开始批量上传
MvpPre.batchUploadFiles(imageFiles, 0); // 第二个参数是你原来的 type
}
break;
}
}
}
@Override
public void upLoadSuccess(String url, int type, int index, int total) {
if (index >= 0 && index < uploadedUrls.size()) {
uploadedUrls.add(index, url); // 插入到对应位置
} else {
uploadedUrls.add(url); // 添加到最后
}
if (uploadedUrls.size() == total) {
updateAdapterData(); // 所有图片上传完成,更新适配器数据
}
}
@Override
public void upAddAlbum() {
MvpPre.getAlbumDetail(albumId, pwd, page + "", "10");
}
@Override
public void getAlbumList(List<AlbumBean> data) {
BottomSheetDialog dialog = new BottomSheetDialog(this);
dialog.setContentView(com.qxcm.moduleutil.R.layout.bottom_sheet_recyclerview);
RecyclerView recyclerView = dialog.findViewById(com.qxcm.moduleutil.R.id.rv_options);
Button btnCancel = dialog.findViewById(com.qxcm.moduleutil.R.id.btn_cancel);
Button btnConfirm = dialog.findViewById(com.qxcm.moduleutil.R.id.btn_confirm);
assert recyclerView != null;
recyclerView.setLayoutManager(new GridLayoutManager(this,4));
SingleChoiceAdapter sadapter = new SingleChoiceAdapter();
recyclerView.setAdapter(sadapter);
sadapter.setNewData(data);
btnCancel.setOnClickListener(v -> dialog.dismiss());
btnConfirm.setOnClickListener(v -> {
AlbumBean selectedItem = sadapter.getSelectedItem();
if (selectedItem != null) {
MvpPre.moveAlbum(adapter.getSelectedPhotoIdsAsString(), selectedItem.getId());
}
dialog.dismiss();
});
dialog.show();
}
@Override
public void moveAlbum() {
MvpPre.getAlbumDetail(albumId, pwd, "1", "10");
}
@Override
public void deleteAlbum() {
MvpPre.getAlbumDetail(albumId, pwd, "1", "10");
}
@Override
public void likeAlbum() {
updateZanButtonUI(albumBean1);
}
private void updateAdapterData() {
String imageUrlsString = TextUtils.join(",", uploadedUrls);
MvpPre.upAddAlbum(albumId, imageUrlsString, "");
}
@Override
protected void onResume() {
super.onResume();
MvpPre.getAlbumDetail(albumId, pwd, "1", "10");
}
@Override
protected int getLayoutId() {
return R.layout.activity_album_detail;
}
@Override
protected AlbumDetailPresenter bindPresenter() {
return new AlbumDetailPresenter(this, this);
}
private void updateZanButtonUI(AlbumBean albumBean) {
if (albumBean.getIs_like().equals("0")) {
mBinding.zanImage.setImageResource(com.qxcm.moduleutil.R.mipmap.shousz); // 已点赞图标
mBinding.dyComment.setText(Integer.parseInt(albumBean.getLike_num()) - 1 + "");
} else {
mBinding.zanImage.setImageResource(com.qxcm.moduleutil.R.mipmap.showszc); // 未点赞图标
mBinding.dyComment.setText(Integer.parseInt(albumBean.getLike_num()) + 1 + "");
}
}
private List<AlbumBean.ImageList> groupPhotos(List<AlbumBean.ImageList> photoItems) {
List<AlbumBean.ImageList> result = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
Map<String, List<AlbumBean.ImageList>> groupedMap = new LinkedHashMap<>();
// 按日期分组
for (AlbumBean.ImageList item : photoItems) {
try {
long timestamp = Long.parseLong(item.getCreatetime()) * 1000L;
String dateKey = sdf.format(new Date(timestamp));
groupedMap.computeIfAbsent(dateKey, k -> new ArrayList<>()).add(item);
} catch (Exception ignored) {
}
}
// 构建新的列表,插入标题
for (Map.Entry<String, List<AlbumBean.ImageList>> entry : groupedMap.entrySet()) {
// 添加标题
AlbumBean.ImageList header = new AlbumBean.ImageList();
header.setItemViewType(1);
header.setCreatetime(entry.getKey()); // 存储原始时间字符串用于显示
result.add(header);
// 添加该组所有图片
for (AlbumBean.ImageList image : entry.getValue()) {
image.setItemViewType(2);
result.add(image);
}
}
return result;
}
@Override
public void getAlbumDetail(AlbumBean albumBean) {
userId = albumBean.getUser_id();
albumBean1 = albumBean;
ImageUtils.loadHeadCC(albumBean.getImage(), mBinding.ivAlbumDetailBg);
mBinding.tvAlbumName.setText(albumBean.getName());
mBinding.tvAlbumNum.setText(albumBean.getCount() + "张照片");
mBinding.imCrAlbum.setVisibility(userId.equals(SpUtil.getUserId() + "") ? VISIBLE : View.GONE);
mBinding.topBar.setRightTxtVisible(userId.equals(SpUtil.getUserId() + ""));
if (albumBean.getPwd() != null && !albumBean.getPwd().isEmpty()) {
mBinding.imSuo.setVisibility(VISIBLE);
} else {
mBinding.imSuo.setVisibility(View.GONE);
}
mBinding.dyComment.setText(albumBean.getLike_num() != null && !albumBean.getLike_num().isEmpty() ? albumBean.getLike_num() : "0");
mBinding.lockComment.setText(albumBean.getRead_num() != null && !albumBean.getRead_num().isEmpty() ? albumBean.getRead_num() : "0");
List<AlbumBean.ImageList> allImages = albumBean.getImage_list();
List<AlbumBean.ImageList> groupedPhotos = groupPhotos(allImages);
adapter.setNewData(groupedPhotos);
}
}

View File

@@ -2,6 +2,7 @@ package com.example.modulevocal.activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
@@ -10,6 +11,7 @@ import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import com.blankj.utilcode.util.ToastUtils;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevocal.R;
@@ -17,9 +19,13 @@ import com.example.modulevocal.conacts.BriefIntroductionConacts;
import com.example.modulevocal.databinding.ActivityBriefIntroductionBinding;
import com.example.modulevocal.presenter.BriefIntroductionPresenter;
import com.qxcm.moduleutil.activity.BaseMvpActivity;
import com.qxcm.moduleutil.bean.UserTagBean;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
*@author qx
@@ -28,8 +34,9 @@ import java.util.List;
*/
public class BriefIntroductionActivity extends BaseMvpActivity<BriefIntroductionPresenter, ActivityBriefIntroductionBinding> implements BriefIntroductionConacts.View{
private BaseQuickAdapter<String, BaseViewHolder> adapter;
private BaseQuickAdapter<UserTagBean, BaseViewHolder> adapter;
private List<UserTagBean> userTagBeans = new ArrayList<>();
private Set<UserTagBean> selectedItems = new HashSet<>();
@Override
protected void initData() {
mBinding.topBar.setTitle("修改简介");
@@ -37,28 +44,46 @@ public class BriefIntroductionActivity extends BaseMvpActivity<BriefIntroduction
mBinding.topBar.setRightText("保存");
mBinding.topBar.setRightColor(Color.parseColor("#FF8ACC"));
mBinding.topBar.getTvRight().setOnClickListener(v -> {
finish();
if (!TextUtils.isEmpty(mBinding.etG.getText().toString())){
MvpPre.editUserInfo("","","","","",mBinding.etG.getText().toString(),getSelectedIds());
}
});
List<String> list = new ArrayList<>();
list.add("可盐可甜");
list.add("小甜甜");
list.add("可盐可甜");
list.add("小甜甜");
list.add("可盐可甜");
list.add("小甜甜");
MvpPre.getUserTagList();
mBinding.recycleView.setLayoutManager(new GridLayoutManager(this, 4));
adapter = new BaseQuickAdapter<String, BaseViewHolder>(R.layout.item_brief_introduction, list) {
adapter = new BaseQuickAdapter<UserTagBean, BaseViewHolder>(R.layout.item_brief_introduction, userTagBeans) {
@Override
protected void convert(BaseViewHolder helper, String item) {
helper.setText(R.id.tv, item);
protected void convert(BaseViewHolder helper, UserTagBean item) {
helper.setText(R.id.tv, item.getTag_name());
if (selectedItems.contains(item)) {
helper.itemView.setBackgroundColor(Color.parseColor("#FF8ACC"));
} else {
helper.itemView.setBackgroundColor(Color.WHITE);
}
helper.itemView.setOnClickListener(v -> {
if (selectedItems.contains(item)) {
selectedItems.remove(item);
} else {
selectedItems.add(item);
}
notifyItemChanged(helper.getAdapterPosition());
});
}
};
mBinding.recycleView.setAdapter(adapter);
adapter.setNewData(list);
}
}
private String getSelectedIds() {
return selectedItems.stream()
.map(UserTagBean::getId)
.collect(Collectors.joining(","));
}
@Override
protected int getLayoutId() {
return R.layout.activity_brief_introduction;
@@ -68,4 +93,15 @@ public class BriefIntroductionActivity extends BaseMvpActivity<BriefIntroduction
protected BriefIntroductionPresenter bindPresenter() {
return new BriefIntroductionPresenter(this, this);
}
@Override
public void getUserTagListSuccess(List<UserTagBean> data) {
adapter.setNewData(data);
}
@Override
public void editUserInfoSuccess(String s) {
ToastUtils.showShort(s);
finish();
}
}

View File

@@ -25,7 +25,7 @@ public class ChangPassActivity extends BaseMvpActivity<ChangePasswordPresenter,
@Override
protected void initData() {
mBinding.topBar.setTitle(getResources().getString(com.qxcm.moduleutil.R.string.set_password));
userBean = SpUtil.getUserInfo();
userBean = SpUtil.getUserBean();
mBinding.tvPhoin.setText(userBean.getMobile());
mBinding.tvSendCode.setOnClickListener(this::onClick);
mBinding.btnSubmit.setOnClickListener(this::onClick);

View File

@@ -2,6 +2,7 @@ package com.example.modulevocal.activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
@@ -9,11 +10,17 @@ import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.blankj.utilcode.util.ToastUtils;
import com.example.modulevocal.R;
import com.example.modulevocal.conacts.ChangeNicknameConacts;
import com.example.modulevocal.databinding.ActivityChangeNicknameBinding;
import com.example.modulevocal.presenter.ChangeNicknamePresenter;
import com.qxcm.moduleutil.activity.BaseMvpActivity;
import com.qxcm.moduleutil.bean.UserInfo;
import com.qxcm.moduleutil.utils.SpUtil;
import org.greenrobot.eventbus.EventBus;
/**
*@author qx
*@data 2025/5/21
@@ -21,17 +28,27 @@ import com.qxcm.moduleutil.activity.BaseMvpActivity;
*/
public class ChangeNicknameActivity extends BaseMvpActivity<ChangeNicknamePresenter, ActivityChangeNicknameBinding> implements ChangeNicknameConacts.View {
private UserInfo userInfo;
@Override
protected void initData() {
mBinding.topBar.setTitle("修改昵称");
mBinding.topBar.setRightTxtVisible(true);
mBinding.topBar.setRightText("保存");
mBinding.topBar.setRightColor(Color.parseColor("#FF8ACC"));
mBinding.topBar.getTvRight().setOnClickListener(v -> {
finish();
if (!TextUtils.isEmpty(mBinding.edNickName.getText().toString())){
MvpPre.editUserInfo(mBinding.edNickName.getText().toString(),"","","","","","");
}
});
userInfo= SpUtil.getUserInfo();
if (userInfo!=null){
mBinding.edNickName.setText(userInfo.getNickname());
}
}
@@ -44,4 +61,12 @@ public class ChangeNicknameActivity extends BaseMvpActivity<ChangeNicknamePresen
protected ChangeNicknamePresenter bindPresenter() {
return new ChangeNicknamePresenter(this, this);
}
@Override
public void editUserInfoSuccess(String s) {
ToastUtils.showShort(s);
userInfo.setNickname(mBinding.edNickName.getText().toString());
EventBus.getDefault().post(userInfo);
finish();
}
}

View File

@@ -1,16 +1,21 @@
package com.example.modulevocal.activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import androidx.activity.EdgeToEdge;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.alibaba.android.arouter.facade.annotation.Autowired;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.blankj.utilcode.util.ToastUtils;
import com.example.modulevocal.R;
import com.example.modulevocal.conacts.MyAlbumConacts;
@@ -23,39 +28,103 @@ import com.luck.picture.lib.entity.LocalMedia;
import com.qxcm.moduleutil.activity.BaseMvpActivity;
import com.qxcm.moduleutil.bean.AlbumBean;
import com.qxcm.moduleutil.bean.UserImgList;
import com.qxcm.moduleutil.utils.ARouteConstants;
import com.qxcm.moduleutil.utils.GlideEngine;
import com.qxcm.moduleutil.utils.ImageUtils;
import com.qxcm.moduleutil.utils.MyPictureParameterStyle;
import com.qxcm.moduleutil.widget.Constants;
import com.zcw.togglebutton.ToggleButton;
import java.io.File;
import java.util.List;
import java.util.Objects;
public class CreateAlbumActivity extends BaseMvpActivity<MyAlbumPresenter, ActivityCreateAlbumBinding> implements MyAlbumConacts.View{
/**
* @author qx
* @data 2025/6/6
* @description: 新建相册
*/
@Route(path = ARouteConstants.CREATE_ALBUM)
public class CreateAlbumActivity extends BaseMvpActivity<MyAlbumPresenter, ActivityCreateAlbumBinding> implements MyAlbumConacts.View {
private String imageUrl="";
@Autowired
public AlbumBean albumBean;
private String imageUrl = "";
boolean aBoolean = false;
boolean albumBeanBoolean = false;
@Override
protected void initData() {
mBinding.topBar.setTitle("新建相册");
if (albumBean != null) {
mBinding.topBar.setTitle("修改相册");
albumBeanBoolean = true;
mBinding.tvDele.setVisibility(View.VISIBLE);
ImageUtils.loadHeadCC(albumBean.getImage(), mBinding.rivAlbum);
imageUrl = albumBean.getImage();
mBinding.edAlbumName.setText(albumBean.getName());
if (albumBean.getPwd() != null && !albumBean.getPwd().isEmpty()) {
mBinding.btnRadio.setToggleOn(true);
mBinding.edAlbumPassword.setText(albumBean.getPwd());
mBinding.edAlbumPassword.setVisibility(View.VISIBLE);
} else {
mBinding.btnRadio.setToggleOn(false);
mBinding.edAlbumPassword.setVisibility(View.GONE);
}
} else {
mBinding.topBar.setTitle("新建相册");
albumBeanBoolean = false;
mBinding.tvDele.setVisibility(View.GONE);
}
mBinding.tvDele.setOnClickListener(this::onClick);
mBinding.rivAlbum.setOnClickListener(this::onClick);
mBinding.tvCancel.setOnClickListener(this::onClick);
mBinding.tvConfirm.setOnClickListener(this::onClick);
mBinding.btnRadio.setOnToggleChanged(new ToggleButton.OnToggleChanged() {
@Override
public void onToggle(boolean on) {
if (on) {
aBoolean = true;
mBinding.edAlbumPassword.setVisibility(View.VISIBLE);
} else {
mBinding.edAlbumPassword.setVisibility(View.GONE);
aBoolean = false;
}
}
});
}
private void onClick(View view) {
if (view.getId() == R.id.riv_album) {
startChoosePhoto(PictureMimeType.ofImage(), PictureConfig.CHOOSE_REQUEST, false, 1);
} else if (view.getId() ==R.id.tv_cancel) {
finish();
}else if (view.getId() ==R.id.tv_confirm) {
if (!Objects.requireNonNull(mBinding.edAlbumName.getText()).toString().trim().isEmpty() || !imageUrl.equals("")){
MvpPre.createAlbum(mBinding.edAlbumName.getText().toString().trim(),imageUrl);
}else {
} else if (view.getId() == R.id.tv_confirm) {
if (!Objects.requireNonNull(mBinding.edAlbumName.getText()).toString().trim().isEmpty() || !imageUrl.equals("")) {
if (mBinding.edAlbumName.getText().toString().length() < 4) {
ToastUtils.showShort("相册名称不能少于4个字");
return;
} else if (aBoolean) {
if (mBinding.edAlbumPassword.getText().toString().length() < 4) {
ToastUtils.showShort("密码不能少于4个字");
return;
} else {
if (albumBeanBoolean){
MvpPre.editAlbum(albumBean.getId(), mBinding.edAlbumName.getText().toString().trim(), mBinding.edAlbumPassword.getText().toString(), imageUrl);
}else {
MvpPre.createAlbum(mBinding.edAlbumName.getText().toString().trim(), mBinding.edAlbumPassword.getText().toString(), imageUrl);
}
return;
}
} else {
if (albumBeanBoolean){
MvpPre.editAlbum(albumBean.getId(), mBinding.edAlbumName.getText().toString().trim(), "", imageUrl);
}else {
MvpPre.createAlbum(mBinding.edAlbumName.getText().toString().trim(), "", imageUrl);
}
}
} else {
ToastUtils.showShort("请输入相册名称并选择相册封面");
}
} else {
MvpPre.deleteAlbum(albumBean.getId());
}
}
@@ -76,7 +145,7 @@ public class CreateAlbumActivity extends BaseMvpActivity<MyAlbumPresenter, Activ
@Override
public void upLoadSuccess(String url, int type) {
imageUrl=url;
imageUrl = url;
if (type == 1) {
ImageUtils.loadHeadCC(url, mBinding.rivAlbum);
} else {
@@ -90,6 +159,17 @@ public class CreateAlbumActivity extends BaseMvpActivity<MyAlbumPresenter, Activ
finish();
}
@Override
public void deleteAlbum() {
ARouter.getInstance().build(ARouteConstants.USER_HOME_PAGE).withString("userId", albumBean.getUser_id()).navigation();
}
@Override
public void editAlbum() {
ARouter.getInstance().build(ARouteConstants.USER_ALBUM_DETAIL).withString("albumId", albumBean.getId()).withString("pwd", albumBean.getPwd()).navigation();
finish();
}
private void startChoosePhoto(int mimeType, int requestCode, boolean isVideo, int type) {
PictureSelector.create(this)

View File

@@ -3,7 +3,9 @@ package com.example.modulevocal.activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Html;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import androidx.activity.EdgeToEdge;
import androidx.annotation.Nullable;
@@ -13,6 +15,7 @@ import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import com.blankj.utilcode.util.ToastUtils;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.example.modulevocal.R;
import com.example.modulevocal.adapter.UserPhotoWallAdapter;
@@ -24,15 +27,26 @@ import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.entity.LocalMedia;
import com.qxcm.moduleutil.activity.BaseMvpActivity;
import com.qxcm.moduleutil.bean.BannerModel;
import com.qxcm.moduleutil.bean.HeatedBean;
import com.qxcm.moduleutil.bean.UserImgList;
import com.qxcm.moduleutil.bean.UserInfo;
import com.qxcm.moduleutil.bean.XBannerData;
import com.qxcm.moduleutil.utils.DateSelectDialog;
import com.qxcm.moduleutil.utils.GlideEngine;
import com.qxcm.moduleutil.utils.ImageUtils;
import com.qxcm.moduleutil.utils.MyPictureParameterStyle;
import com.qxcm.moduleutil.utils.SpUtil;
import com.qxcm.moduleutil.widget.Constants;
import com.qxcm.moduleutil.widget.img.FullScreenUtil;
import com.stx.xhb.xbanner.XBanner;
import com.tencent.qcloud.tuicore.util.SPUtils;
import org.greenrobot.eventbus.EventBus;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -45,13 +59,21 @@ import java.util.Map;
public class EditUserInfoActivity extends BaseMvpActivity<EditUserPresenter, ActivityEditUserBinding> implements EditUserConactos.View
, DateSelectDialog.OnSelectDate {
UserPhotoWallAdapter mUserPhotoWallAdapter;
List<UserImgList> list;
List<String> list;
private DateSelectDialog mDateSelectDialog;
private UserInfo userInfo1;
private List<String> uploadedUrls = new ArrayList<>();//真实图片地址
@Override
protected void onResume() {
super.onResume();
MvpPre.getUserHome(SpUtil.getUserId()+"");
}
@Override
protected void initData() {
mBinding.topBar.setTitle(getResources().getString(com.qxcm.moduleutil.R.string.edit_profile));
int changeCount = 2; // 每月剩余修改次数
int cardCount = 0; // 头像卡数量
@@ -65,15 +87,21 @@ public class EditUserInfoActivity extends BaseMvpActivity<EditUserPresenter, Act
mUserPhotoWallAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
String item = list.get(position);
int id = view.getId();
UserImgList item = mUserPhotoWallAdapter.getItem(position);
if (id == R.id.iv_close) {
// MvpPre.deletePhoto(item.getId(), position);
} else {
if ("0".equals(item.getId())) {
startChoosePhoto(PictureMimeType.ofImage(), PictureConfig.REQUEST_CAMERA, true, 6);
if (id == R.id.iv_close){
uploadedUrls.remove(item);
updateAdapterData();
}else {
if (item.equals(UserPhotoWallAdapter.ADD_PHOTO)) {
// 点击的是“+”号,启动图片选择
startChoosePhoto(PictureMimeType.ofImage(), PictureConfig.REQUEST_CAMERA, false, 9);
} else {
// 查看大图或其他操作
FullScreenUtil.showFullScreenDialog(EditUserInfoActivity.this, position, list);
}
}
}
});
mUserPhotoWallAdapter.setOnItemChildLongClickListener(new BaseQuickAdapter.OnItemChildLongClickListener() {
@@ -84,20 +112,23 @@ public class EditUserInfoActivity extends BaseMvpActivity<EditUserPresenter, Act
}
});
list = new ArrayList<>();
UserImgList userImgList = new UserImgList("0", "");
list.add(userImgList);
mUserPhotoWallAdapter.setNewData(list);
// UserImgList userImgList = new UserImgList("0", "");
// list.add(userImgList);
// mUserPhotoWallAdapter.setNewData(list);
mUserPhotoWallAdapter.setDelete(true);
mBinding.rl1.setOnClickListener(this::onClick);
mBinding.rl3.setOnClickListener(this::onClick);
mBinding.rl4.setOnClickListener(this::onClick);
mBinding.rvUserHead.setOnClickListener(this::onClick);
}
private void onClick(View view) {
if (view.getId() == R.id.rv_user_head) {
startChoosePhoto(PictureMimeType.ofImage(), PictureConfig.CHOOSE_REQUEST, true, 1);
startChoosePhoto(PictureMimeType.ofImage(), PictureConfig.PREVIEW_VIDEO_CODE, false, 1);
} else if (view.getId() == R.id.rl_1) {
startActivity(new Intent(this, ChangeNicknameActivity.class));
} else if (view.getId() == R.id.rl_3) {
@@ -142,6 +173,20 @@ public class EditUserInfoActivity extends BaseMvpActivity<EditUserPresenter, Act
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && data != null) {
switch (requestCode) {
case PictureConfig.PREVIEW_VIDEO_CODE:
List<LocalMedia> localMedia1 = PictureSelector.obtainMultipleResult(data);
if (localMedia1 != null && localMedia1.size() != 0) {
LocalMedia imgMedia = localMedia1.get(0);
String url;
if (imgMedia.isCompressed()) {
url = imgMedia.getCompressPath();
} else {
url = imgMedia.getRealPath();
}
MvpPre.uploadFile(new File(url), 1, 1, 1);
}
break;
case PictureConfig.CHOOSE_REQUEST:
List<LocalMedia> localMedia = PictureSelector.obtainMultipleResult(data);
if (localMedia != null && localMedia.size() != 0) {
@@ -152,47 +197,124 @@ public class EditUserInfoActivity extends BaseMvpActivity<EditUserPresenter, Act
} else {
url = imgMedia.getRealPath();
}
MvpPre.uploadFile(new File(url), 0);
MvpPre.uploadFile(new File(url), 0, 0, 1);
}
break;
case PictureConfig.REQUEST_CAMERA:
List<LocalMedia> localMedia1 = PictureSelector.obtainMultipleResult(data);
if (localMedia1 != null && localMedia1.size() != 0) {
LocalMedia imgMedia = localMedia1.get(0);
MvpPre.uploadFile(new File(imgMedia.getRealPath()), 3);
List<LocalMedia> localMediaList = PictureSelector.obtainMultipleResult(data);
if (localMediaList != null && !localMediaList.isEmpty()) {
List<File> imageFiles = new ArrayList<>();
for (LocalMedia media : localMediaList) {
String path = media.isCompressed() ? media.getCompressPath() : media.getRealPath();
imageFiles.add(new File(path));
}
// 开始批量上传
MvpPre.batchUploadFiles(imageFiles, 0); // 第二个参数是你原来的 type
}
// List<LocalMedia> localMedia2 = PictureSelector.obtainMultipleResult(data);
// if (localMedia2 != null && localMedia2.size() != 0) {
// LocalMedia imgMedia = localMedia2.get(0);
// MvpPre.uploadFile(new File(imgMedia.getRealPath()), 6);
// }
break;
}
}
}
@Override
public void upLoadSuccess(String url, int type) {
// if (uploadType == 1) {
// MvpPre.addPhoto(url);
// } else {
// if (type == 0) {
// MvpPre.updateAvatar(url);
// } else if (type == 1) {
// Map<String, String> map = new HashMap<>();
// map.put("intro_voice", url);
// map.put("intro_voice_time", String.valueOf(mLength));
// MvpPre.upDateUserInfo(map);
// } else {
// MvpPre.updateShortsVideo(url);
// }
// }
if (type == 1) {
ImageUtils.loadHeadCC(url, mBinding.rvUserHead);
} else {
list.add(new UserImgList("1", url));
mUserPhotoWallAdapter.setNewData(list);
public void getUserHomeSuccess(UserInfo userInfo) {
SpUtil.saveUserInfo(userInfo);
ImageUtils.loadHeadCC(userInfo.getAvatar(), mBinding.rvUserHead);
mBinding.tvNickName.setText(userInfo.getNickname());
mBinding.tvSex.setText(userInfo.getSex() == 1 ? "" : "");
mBinding.tvSr.setText(userInfo.getBirthday());
uploadedUrls.clear();
List<String> images =userInfo.getHome_bgimages()!=null && !userInfo.getHome_bgimages().isEmpty() ? Arrays.asList(userInfo.getHome_bgimages().split(",")):new ArrayList<>();
for (int i=0;i<images.size();i++) {
uploadedUrls.add( images.get(i));
}
list.clear();
list.addAll(uploadedUrls);
list.add(UserPhotoWallAdapter.ADD_PHOTO); // 最后加上 ADD_PHOTO
mUserPhotoWallAdapter.setNewData(list);
userInfo1=userInfo;
List<XBannerData> s=new ArrayList<>();
if (userInfo.getHome_bgimages()==null||userInfo.getHome_bgimages().isEmpty()){
if (userInfo.getAvatar()!=null) {
s.add(new XBannerData(0,userInfo.getAvatar(),""));
}
mBinding.xbanner.setBannerData(s);
}else {
for (String s1 : uploadedUrls){
s.add(new XBannerData(0,s1,""));
}
mBinding.xbanner.setBannerData(s);
}
mBinding.xbanner.loadImage(new XBanner.XBannerAdapter() {
@Override
public void loadBanner(XBanner banner, Object model, View view, int position) {
XBannerData xBannerData= (XBannerData) model;
ImageUtils.loadHeadCC(xBannerData.getUrl(), (ImageView) view);
}
});
}
@Override
public void editUserInfoSuccess(String s) {
ToastUtils.showShort(s);
MvpPre.getUserHome(SpUtil.getUserId()+"");
}
@Override
public void topicList(List<HeatedBean> list) {
}
@Override
public void upLoadSuccess(String url, int type, int index, int total) {
if (type == 1) {
ImageUtils.loadHeadCC(url, mBinding.rvUserHead);
userInfo1.setAvatar(url);
EventBus.getDefault().post(userInfo1);
MvpPre.editUserInfo("", "", "", url, "", "", "");
} else {
// list.add(new UserImgList("1", url));
// mUserPhotoWallAdapter.setNewData(list);
if (index >= 0 && index < uploadedUrls.size()) {
uploadedUrls.add(index, url); // 插入到对应位置
} else {
uploadedUrls.add(url); // 添加到最后
}
if (uploadedUrls.size() == total) {
updateAdapterData(); // 所有图片上传完成,更新适配器数据
}
}
}
private void updateAdapterData() {
list.clear();
list.addAll(uploadedUrls); // 添加真实图片
list.add(UserPhotoWallAdapter.ADD_PHOTO); // 最后加上 ADD_PHOTO
mUserPhotoWallAdapter.setNewData(list);
String imageUrlsString = TextUtils.join(",", uploadedUrls);
// MvpPre.editUserInfo("", "", "", "", imageUrlsString, "", "");
MvpPre.editUserBg(imageUrlsString);
}
@Override
public void selectDate(String year, String month, String day) {
mBinding.tvSr.setText(year + "-" + month + "-" + day);
/* map.put("birthday", year + "-" + month + "-" + day);*/
MvpPre.editUserInfo("", year + "-" + month + "-" + day, "", "", "", "", "");
}
}

View File

@@ -14,6 +14,8 @@ import com.example.modulevocal.R;
import com.example.modulevocal.databinding.ActivityNotificationBinding;
import com.qxcm.moduleutil.activity.BaseAppCompatActivity;
import org.greenrobot.eventbus.EventBus;
public class NotificationActivity extends BaseAppCompatActivity<ActivityNotificationBinding> {

View File

@@ -2,34 +2,25 @@ package com.example.modulevocal.activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.blankj.utilcode.util.FileUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.example.modulevocal.R;
import com.example.modulevocal.conacts.SettingConacts;
import com.example.modulevocal.databinding.ActivitySettingBinding;
import com.qxcm.moduleutil.activity.BaseAppCompatActivity;
import com.example.modulevocal.presenter.SettingPresenter;
import com.qxcm.moduleutil.activity.BaseMvpActivity;
import com.qxcm.moduleutil.base.CommonAppContext;
import com.qxcm.moduleutil.dialog.RealNameDialog;
import com.qxcm.moduleutil.utils.SpUtil;
import com.qxcm.moduleutil.utils.config.ConfigManager;
import com.qxcm.moduleutil.utils.config.EnvironmentEnum;
import com.qxcm.moduleutil.utils.config.EnvironmentPrefs;
/**
*@author
*@data
*@description: 设置页面
*/
public class SettingActivity extends BaseAppCompatActivity<ActivitySettingBinding> {
public class SettingActivity extends BaseMvpActivity<SettingPresenter, ActivitySettingBinding> implements SettingConacts.View {
@Override
@@ -37,6 +28,11 @@ public class SettingActivity extends BaseAppCompatActivity<ActivitySettingBindin
}
@Override
protected SettingPresenter bindPresenter() {
return new SettingPresenter(this, this);
}
@Override
protected void initView() {
mBinding.topBar.setTitle("设置");
@@ -50,26 +46,26 @@ public class SettingActivity extends BaseAppCompatActivity<ActivitySettingBindin
mBinding.llSmrz.setOnClickListener(this::onClick);
mBinding.llQhch.setOnClickListener(this::onClick);
mBinding.llTcdl.setOnClickListener(this::onClick);
mBinding.llZhxiao.setOnClickListener(this::onClick);
}
private void onClick(View view) {
if (view.getId()==R.id.ll_youth){
if (view.getId() == R.id.ll_youth) {
startActivity(new Intent(this, UnderageActivity.class));
}else if (view.getId()==R.id.ll_notification){
} else if (view.getId() == R.id.ll_notification) {
startActivity(new Intent(this, NotificationActivity.class));
}else if (view.getId()==R.id.ll_hmd){
Intent intent=new Intent(this, BlacklistActivity.class);
intent.putExtra("type",1);
} else if (view.getId() == R.id.ll_hmd) {
Intent intent = new Intent(this, BlacklistActivity.class);
intent.putExtra("type", 1);
startActivity(intent);
// startActivity(new Intent(this, BlacklistActivity.class));
}else if (view.getId()==R.id.ll_szmm){
} else if (view.getId() == R.id.ll_szmm) {//设置密码
startActivity(new Intent(this, ChangPassActivity.class));
}else if (view.getId()==R.id.ll_shb){
} else if (view.getId() == R.id.ll_shb) {
startActivity(new Intent(this, PhoneReplacementActivity.class));
}else if (view.getId()==R.id.ll_smrz){//实名认证
if (SpUtil.getRealName()){
} else if (view.getId() == R.id.ll_smrz) {//实名认证
if (SpUtil.getRealName()) {
startActivity(new Intent(this, RealDetailActivity.class));
}else {
} else {
RealNameDialog realNameDialog = new RealNameDialog(this);
realNameDialog.show();
realNameDialog.setOnDismissListener(dialog -> {
@@ -77,7 +73,7 @@ public class SettingActivity extends BaseAppCompatActivity<ActivitySettingBindin
startActivity(new Intent(SettingActivity.this, RealName1Activity.class));
});
}
}else if (view.getId()==R.id.ll_qhch){
} else if (view.getId() == R.id.ll_qhch) {
new AlertDialog.Builder(this).setMessage("确认清理缓存?").setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
@@ -88,33 +84,44 @@ public class SettingActivity extends BaseAppCompatActivity<ActivitySettingBindin
mBinding.tvCache.setHint(FileUtils.getSize(getCacheDir()));
}
}).setNegativeButton("取消", null).create().show();
}
else if (view.getId()==R.id.swit){
if (mBinding.swit.isChecked()){
} else if (view.getId() == R.id.swit) {
if (mBinding.swit.isChecked()) {
ConfigManager.getInstance().switchEnvironment(EnvironmentEnum.PRODUCTION);
EnvironmentEnum selectedEnv = EnvironmentEnum.PRODUCTION;
EnvironmentPrefs prefs = new EnvironmentPrefs(this);
prefs.setSelectedEnvironment(selectedEnv);
}else {
} else {
ConfigManager.getInstance().switchEnvironment(EnvironmentEnum.TEST);
EnvironmentEnum selectedEnv = EnvironmentEnum.TEST;
EnvironmentPrefs prefs = new EnvironmentPrefs(this);
prefs.setSelectedEnvironment(selectedEnv);
}
}else if (view.getId()==R.id.ll_tcdl){
} else if (view.getId() == R.id.ll_tcdl) {
new AlertDialog.Builder(this).setMessage("确定要退出登录吗?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
CommonAppContext.getInstance().clearLoginInfo();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
if (MvpPre == null){
MvpPre = bindPresenter();
}
MvpPre.clearLoginInfo();
}
})
.setNegativeButton("取消", null).create().show();
}else if (view.getId() == R.id.ll_zhxiao){
new AlertDialog.Builder(this).setMessage("确定要注销账号吗?")
.setMessage("注销账号后所有的金币将要清零,是否要注销?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (MvpPre==null){
MvpPre=bindPresenter();
}
MvpPre.cancel();
}
})
.setNegativeButton("取消", null).create().show();
}
}
@@ -124,4 +131,21 @@ public class SettingActivity extends BaseAppCompatActivity<ActivitySettingBindin
}
@Override
public void clearLoginInfo(String s) {
try {
CommonAppContext.getInstance().clearLoginInfo();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
@Override
public void cancel(String s) {
try {
CommonAppContext.getInstance().clearLoginInfo();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}

View File

@@ -6,6 +6,8 @@ import android.widget.ImageView;
import androidx.fragment.app.Fragment;
import com.alibaba.android.arouter.facade.annotation.Autowired;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.example.moduletablayout.listener.CustomTabEntity;
import com.example.modulevocal.R;
import com.example.modulevocal.conacts.UserHomepageConacts;
@@ -18,35 +20,40 @@ import com.qxcm.moduleutil.adapter.MyFragmentPagerAdapter;
import com.qxcm.moduleutil.bean.CircleListBean;
import com.qxcm.moduleutil.bean.PhotoWallResp;
import com.qxcm.moduleutil.bean.UserHomeResp;
import com.qxcm.moduleutil.bean.UserInfo;
import com.qxcm.moduleutil.bean.XBannerData;
import com.qxcm.moduleutil.utils.ARouteConstants;
import com.qxcm.moduleutil.utils.ImageLoader;
import com.qxcm.moduleutil.utils.ImageUtils;
import com.qxcm.moduleutil.utils.SpUtil;
import com.tencent.qcloud.tuicore.util.SPUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
*@author qx
*@data 2025/6/4
*@description: 用户主页
*/
@Route(path = ARouteConstants.USER_HOME_PAGE ,group = "modulevocal")
public class UserHomepageActivity extends BaseMvpActivity<UserHomepagePresenter, ActivityUserHomepageBinding> implements UserHomepageConacts.View{
String userId="";
public String emchatUsername;
@Autowired
String userId;
public String from;
private UserHomeResp mUserHomeResp;
// private UserDetailsMoreDialog mUserDetailsMoreDialog;
private String jumpIntentRoomId = "";//跳转的房间id
// private UserSkillsFragment skillsFragment;
// private UserFamiliesFragment familiesFragment;
// private BaseMVVMFragment trendFragment;
private UserGiftWallFragment giftWallFragment;
private String followState = "1";//关注状态 1 未关注 2已关注
private ArrayList<CustomTabEntity> titles = new ArrayList<>();
@Override
protected void initData() {
MvpPre.getUserDetails("0", "0", true);
List<Fragment> fragments = new ArrayList<>();
fragments.add(UserHomepageFragment.newInstance(userId));
mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(fragments, getSupportFragmentManager()));
// userId=getIntent().getStringExtra("userId");
//
}
@Override
protected void onResume() {
super.onResume();
MvpPre.getUserDetails(userId);
}
@Override
@@ -63,138 +70,24 @@ public class UserHomepageActivity extends BaseMvpActivity<UserHomepagePresenter,
@Override
protected void initView() {
super.initView();
// titles.add(new HomePageTabBean("动态"));
// titles.add(new HomePageTabBean("礼物墙"));
// mBinding.meUser.tabLwq.setVisibility(View.GONE);
// mBinding.meUser.tabDt.setVisibility(View.VISIBLE);
// mBinding.meUser.tabDt.setSelected(true);
// initListener();
// scrollInteractive();
//// mBinding.meUser.ivMore.setOnClickListener(this);
//// mBinding.meUser.ivMoreMin.setOnClickListener(this);
//// mBinding.tvChart.setOnClickListener(this);
//// mBinding.meUser.ivEdit.setOnClickListener(this);
//// mBinding.meUser.headerInfo.tvLivingRoomGo.setOnClickListener(this);
// mBinding.meUser.ivBack.setOnClickListener(this::onChock);
// mBinding.meUser.ivBackMin.setOnClickListener(this::onChock);
// mBinding.meUser.headerInfo.tvNickName.setOnClickListener(this::onChock);
// mBinding.meUser.headerInfo.tvUserId.setOnClickListener(this::onChock);
//// mBinding.clFollow.setOnClickListener(this::onFollow);
//// mBinding.meUser.headerInfo.tvShoufufen.setOnClickListener(this);
//// mBinding.meUser.headerInfo.tvMeinfoRenzhengIcon.setOnClickListener(this);
//// mBinding.meUser.headerInfo.tvMeinfoGonghui.setOnClickListener(this);
// mBinding.meUser.headerInfo.rivUserHead.setOnClickListener(this::onChock);
}
// public void setTab(int type) {
// if (titles.size() == 2) {
// titles.clear();
// titles.add(new HomePageTabBean("动态"));
// titles.add(new HomePageTabBean("礼物墙"));
// mBinding.meUser.tabLwq.setVisibility(View.VISIBLE);
// mBinding.meUser.tabDt.setVisibility(View.VISIBLE);
// }
//
// mBinding.meUser.tabDt.setSelected(true);
// }
//
//// private void onFollow(View view) {
//// if ("1".equals(followState)) {
//// MvpPre.follow(userId, "2");
//// } else {
//// MvpPre.follow(userId, "1");
//// }
//// }
//
// private boolean scrollviewFlag = false;//标记是否是scrollview在滑动
//
// protected void initListener() {
//// mBinding.meUser.tabZl.setOnClickListener(v->{
//// mBinding.meUser.abl.setExpanded(true, true);
//// mBinding.nestScroll.scrollTo(0, 0);
//// });
//// mBinding.meUser.tabJn.setOnClickListener(v->{
//// mBinding.meUser.abl.setExpanded(false, true);
//// mBinding.nestScroll.scrollTo(0, (int) mBinding.flSkills.getY());
//// });
// mBinding.meUser.tabLwq.setOnClickListener(v->{
// mBinding.meUser.abl.setExpanded(false, true);
// mBinding.nestScroll.scrollTo(0, (int) mBinding.flGiftWall.getY());
// });
// mBinding.meUser.tabDt.setOnClickListener(v->{
// mBinding.meUser.abl.setExpanded(false, true);
// mBinding.nestScroll.scrollTo(0, (int) mBinding.flTrendContainer.getY());
// });
//
// mBinding.meUser.abl.addOnOffsetChangedListener(new AppBarStateChangeListener() {
// @Override
// public void onStateChanged(AppBarLayout appBarLayout, State state) {
// Logger.e("onStateChanged", appBarLayout.getTotalScrollRange());
// if (state == State.EXPANDED) {
// //展开状态
// mBinding.meUser.rlTopBar.setVisibility(View.VISIBLE);
// } else if (state == State.COLLAPSED) {
// //折叠状态
// mBinding.meUser.rlTopBar.setVisibility(View.GONE);
// }
// }
// });
//
//
//// mUserDetailsMoreDialog = new UserDetailsMoreDialog(this);
//// mUserDetailsMoreDialog.addOnUserDetailsMoreListener(new UserDetailsMoreDialog.OnUserDetailsMoreListener() {
//// @Override
//// public void onBlock() {
//// if (SpUtils.getUserId().equals(userId)) {
//// ToastUtils.show("不能拉黑自己");
//// return;
//// }
//// MvpPre.addBlackUser(userId, 1);
//// }
////
//// @Override
//// public void onReport() {
//// if (SpUtils.getUserId().equals(userId)) {
//// ToastUtils.show("不能举报自己");
//// return;
//// }
//// ARouter.getInstance().build(ARouteConstants.CHAT_REPORT).withString("userId", userId).navigation();
//// }
//// });
//
//
// mBinding.meUser.headerInfo.xbanner.setOnItemClickListener((banner, model, view, position) -> {
// if (mUserHomeResp != null && mUserHomeResp.getUser_photo() != null && mUserHomeResp.getUser_photo().getList() != null) {
// ArrayList<XBannerData> xBannerData = new ArrayList<>(getXBannerData(mUserHomeResp.getUser_photo()));
//// ARouter.getInstance().build(ARouteConstants.IMAGE_BROWSER).withSerializable("list", xBannerData).withInt("position", position).navigation();
// }
// });
//
// mBinding.meUser.headerInfo.xbanner.loadImage((banner, model, view, position) -> {
// XBannerData xBannerData = (XBannerData) model;
// ImageView ivStart = view.findViewById(com.qxcm.moduleutil.R.id.iv_voice_start);
// ImageView imageView = view.findViewById(R.id.iv_img);
// if (xBannerData.getType() == 1) {
// ivStart.setVisibility(View.VISIBLE);
// imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
// ImageLoader.loadImage(getApplicationContext(), imageView, xBannerData.getVedioCover());
// } else {
// ivStart.setVisibility(View.GONE);
// ImageUtils.loadCenterCrop(xBannerData.getUrl(), imageView);
// }
// });
//
//
// }
//
// @Override
public void setUserDetails(UserHomeResp mUserHomeResp) {
List<XBannerData> xBannerData1 = getXBannerData(mUserHomeResp.getUser_photo());
@Override
public void setUserDetails(UserInfo data) {
SpUtil.saveUserInfo(data);
List<String> homeBgimages = new ArrayList<>();
if (!TextUtils.isEmpty(data.getHome_bgimages())){
homeBgimages = Arrays.asList(data.getHome_bgimages().split(","));
}else {
homeBgimages.add(data.getAvatar());
}
List<XBannerData> xBannerData1 = new ArrayList<>();
for (int i=0;i<homeBgimages.size();i++) {
xBannerData1.add(new XBannerData(0, homeBgimages.get(i), ""));
}
mBinding.xbanner.setBannerData(com.qxcm.moduleutil.R.layout.me_xbanner, xBannerData1);
mBinding.xbanner.setOnItemClickListener((banner, model, view, position) -> {
if (mUserHomeResp != null && mUserHomeResp.getUser_photo() != null && mUserHomeResp.getUser_photo().getList() != null) {
// ARouter.getInstance().build(ARouteConstants.IMAGE_BROWSER).withSerializable("list", xBannerData).withInt("position", position).navigation();
}
});
mBinding.xbanner.loadImage((banner, model, view, position) -> {
XBannerData xBannerData = (XBannerData) model;
@@ -209,194 +102,23 @@ public class UserHomepageActivity extends BaseMvpActivity<UserHomepagePresenter,
ImageUtils.loadHeadCC(xBannerData.getUrl(), imageView);
}
});
List<Fragment> fragments = new ArrayList<>();
fragments.add(UserHomepageFragment.newInstance(userId));
mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(fragments, getSupportFragmentManager()));
}
private List<XBannerData> getXBannerData(PhotoWallResp photoWallResp) {
List<XBannerData> xBannerData = new ArrayList<>();
if (!TextUtils.isEmpty(photoWallResp.getVedio_cover())) {
xBannerData.add(new XBannerData(1, photoWallResp.getVedio(), photoWallResp.getVedio_cover()));
}
if (!TextUtils.isEmpty(photoWallResp.getAvatar())) {
xBannerData.add(new XBannerData(0, photoWallResp.getAvatar(), ""));
}
// for (PhotoWallResp.GiftResp item : photoWallResp.getList()) {
// xBannerData.add(new XBannerData(0, item.getUrl(), ""));
// }
return xBannerData;
}
@Override
public void setCircleList(List<CircleListBean> list) {
}
//
// private List<XBannerData> getXBannerData(PhotoWallResp photoWallResp) {
// List<XBannerData> xBannerData = new ArrayList<>();
// if (!TextUtils.isEmpty(photoWallResp.getVedio_cover())) {
// xBannerData.add(new XBannerData(1, photoWallResp.getVedio(), photoWallResp.getVedio_cover()));
// }
// if (!TextUtils.isEmpty(photoWallResp.getAvatar())) {
// xBannerData.add(new XBannerData(0, photoWallResp.getAvatar(), ""));
// }
//// for (PhotoWallResp.GiftResp item : photoWallResp.getList()) {
//// xBannerData.add(new XBannerData(0, item.getUrl(), ""));
//// }
// return xBannerData;
// }
//
//
//
// private void setFollowStyle(String type) {
// if ("1".equals(type)) {
//// mBinding.tvFollow.setBackgroundResource(R.mipmap.meinfo_follow_disable);
// } else {
//// mBinding.tvFollow.setBackgroundResource(R.mipmap.meinfo_follow_normal);
// }
// }
//
//
// private void onChock(View view) {
// if (view.getId() == R.id.iv_back) {
// finish();
// }
// //聊天
//// if (view.getId() == R.id.tv_chart) {
//// if (mUserHomeResp != null) {
//// if ("1".equals(mUserHomeResp.getOnly_friend())) {
//// ToastUtils.show("对方只接受来自好友的消息");
//// } else {
//// ARouter.getInstance().build(ARouteConstants.HOME_CHART)
//// .withString("userId", mUserHomeResp.getEmchat_username())
//// .withString("nickname", mUserHomeResp.getNickname())
//// .withString("avatar", mUserHomeResp.getHead_picture())
//// .navigation();
//// }
//// }
//// }
//// //右上角更多
//// else if (view.getId() == R.id.iv_more) {
//// if (mUserDetailsMoreDialog == null) {
//// mUserDetailsMoreDialog = new UserDetailsMoreDialog(this);
//// }
//// mUserDetailsMoreDialog.show();
////
//// } else if (view.getId() == R.id.iv_more_min) {
//// if (mUserDetailsMoreDialog == null) {
//// mUserDetailsMoreDialog = new UserDetailsMoreDialog(this);
//// }
//// mUserDetailsMoreDialog.show();
//// }
//// //编辑用户信息
//// else if (view.getId() == R.id.iv_edit) {
//// ARouter.getInstance().build(ARouteConstants.ME_MY_EDIT_INFO).navigation();
//// }
//// //正在语聊中
//// else if (view.getId() == R.id.tv_living_room_go) {
//// if (mUserHomeResp != null) {
//// ARouter.getInstance().build(ARouteConstants.LIVE_ROOM).withString("roomId", jumpIntentRoomId).navigation();
//// }
//// }
// //返回
// else if (view.getId() == R.id.iv_back) {
// finish();
// } else if (view.getId() == R.id.iv_back_min) {
// finish();
// }
// //复制昵称
// else if (view.getId() == R.id.tv_nick_name) {
// if (mBinding.meUser.headerInfo.tvUserId.getText().length() > 0) {
// ClipboardManager clipboard = (ClipboardManager) this.getSystemService(Context.CLIPBOARD_SERVICE);
// clipboard.setPrimaryClip(ClipData.newPlainText("text", mUserHomeResp.getNickname()));
// ToastUtils.show("已复制到粘贴板");
// }
// }
// //复制ID
// else if (view.getId() == R.id.tv_user_id) {
// if (mBinding.meUser.headerInfo.tvUserId.getText().length() > 0) {
// ClipboardManager clipboard = (ClipboardManager) this.getSystemService(Context.CLIPBOARD_SERVICE);
// clipboard.setPrimaryClip(ClipData.newPlainText("text", mUserHomeResp.getUser_code()));
// ToastUtils.show("已复制到粘贴板");
// }
// }
// //守护 // 点击头像
// else if ( view.getId() == R.id.riv_user_head) {
//// DialogFragment dialogFragment = (DialogFragment) ARouter.getInstance().build(ARouteConstants.GUARDIAN_GROUP_DIALOG).withString("userId", userId).navigation();
//// if (dialogFragment != null) {
//// dialogFragment.show(getSupportFragmentManager(), "GuardianGroupDialogFragment");
//// }
// }
// // 认证
//// else if (view.getId() == R.id.tv_meinfo_renzheng_icon) {
//// String id = SpUtils.getUserId();
//// if (userId.equals(id)) {
//// //实名认证
//// //判断用户是否已经注册过手机号
//// if (TextUtils.isEmpty(com.qpyy.libcommon.utils.SpUtils.getUserInfo().getMobile())) {
//// ToastUtils.show("请先绑定手机号");
//// return;
//// }
//// MvpPre.getNameAuthResult(0);
//// }
//// }
//// // 公会
//// else if (view.getId() == R.id.tv_meinfo_gonghui) {
//// String id = SpUtils.getUserId();
//// if (userId.equals(id)) {
//// MvpPre.getGuildInfo();
//// }
//// }
// }
// private void scrollInteractive() {
// mBinding.nestScroll.setOnScrollChangeListener((NestedScrollView.OnScrollChangeListener) (v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
// if (scrollviewFlag) {
// return;
// }
//// mBinding.meUser.tabJz.setSelected(false);
// mBinding.meUser.tabLwq.setSelected(false);
// mBinding.meUser.tabDt.setSelected(false);
// if (scrollY < mBinding.flSkills.getTop()) {
// mBinding.meUser.tabDt.setSelected(true);
//// } else if (scrollY < mBinding.flFamilies.getTop()) {
//// mBinding.meUser.tabJn.setSelected(true);
// } else {
//
//
//// mBinding.meUser.tabJz.setSelected(true);
// mBinding.meUser.tabDt.setSelected(true);
//
// }
// });
// }
//
// @Override
// protected void onDestroy() {
//// EventBus.getDefault().unregister(this);
// super.onDestroy();
// MediaPlayerUtiles.getInstance().stopAudio();
//
// }
//
// @Override
// protected void onResume() {
// super.onResume();
// MvpPre.getUserDetails(userId, emchatUsername, this.mUserHomeResp == null);
//// MvpPre.getMemberList(userId, 1);
// }
//
// @Override
// protected void onCreate(@Nullable Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
//// EventBus.getDefault().register(this);
// }
//
//
// @Override
// public void showLoadings() {
// }
//
// @Override
// public void showLoadings(String content) {
// }
//
// @Override
// public void disLoadings() {
// }
@Override
public void userGuanzSuccess(String s) {
}
@Override
public void setLikeZone() {
}
}

View File

@@ -0,0 +1,138 @@
package com.example.modulevocal.adapter;
import android.text.TextUtils;
import android.util.SparseBooleanArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.bumptech.glide.Glide;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevocal.R;
import com.makeramen.roundedimageview.RoundedImageView;
import com.qxcm.moduleutil.bean.AlbumBean;
import com.qxcm.moduleutil.utils.ImageUtils;
import com.qxcm.moduleutil.widget.img.FullScreenUtil;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
public class AlbumPhotoAdapter extends BaseMultiItemQuickAdapter<AlbumBean.ImageList, BaseViewHolder> {
private boolean isControlVisible = false;
private List<Integer> selectedPositions = new ArrayList<>(); // 保存选中的 position
// private SparseBooleanArray selectedPositions = new SparseBooleanArray();
public AlbumPhotoAdapter(List<AlbumBean.ImageList> data) {
super(data);
addItemType(1, R.layout.item_group);
addItemType(2, R.layout.item_photo);
}
public void showControl() {
isControlVisible = true;
notifyDataSetChanged(); // 刷新列表以更新 UI
}
public void hideControl() {
isControlVisible = false;
notifyDataSetChanged(); // 刷新列表以更新 UI
}
@Override
protected void convert(BaseViewHolder helper, AlbumBean.ImageList item) {
if (item.getItemType() == 1) {
helper.setText(R.id.tv_date, item.getCreatetime());
} else {
ImageUtils.loadHeadCC(item.getImage(), helper.getView(R.id.iv_photo));
helper.setVisible(R.id.tb_photo, isControlVisible);
helper.setVisible(R.id.v_checkbox, isControlVisible);
View vCheckbox = helper.getView(R.id.v_checkbox);
vCheckbox.setSelected(item.isSelected());
vCheckbox.setOnClickListener(v -> {
boolean isSelected = !item.isSelected(); // 切换当前状态
item.setSelected(isSelected);
vCheckbox.setSelected(isSelected);
notifyItemChanged(helper.getBindingAdapterPosition()); // 刷新整个列表确保状态正确
});
helper.getView(R.id.tb_photo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isSelected = !item.isSelected();
item.setSelected(isSelected);
vCheckbox.setSelected(isSelected);
notifyItemChanged(helper.getBindingAdapterPosition()); // 刷新整个列表确保状态正确
}
});
helper.getView(R.id.iv_photo).setOnClickListener(v -> {
FullScreenUtil.showFullScreenDialog(mContext,helper.getPosition(),getImageList() );
});
}
}
public List<String> getImageList(){
List<String> stringList=new ArrayList<>();
for (AlbumBean.ImageList item : getData()) {
if (item.getItemType() == 2) {
stringList.add(item.getImage());
}
}
return stringList;
}
public List<AlbumBean.ImageList> getSelectedItems() {
List<AlbumBean.ImageList> selectedItems = new ArrayList<>();
for (AlbumBean.ImageList item : getData()) {
if (item.isSelected()) {
selectedItems.add(item);
}
}
return selectedItems;
}
public String getSelectedPhotoIdsAsString() {
List<AlbumBean.ImageList> selectedPhotos = getSelectedItems();
List<String> idList = new ArrayList<>();
for (AlbumBean.ImageList photo : selectedPhotos) {
idList.add(photo.getId()); // 将每个 id 添加进 list
}
return TextUtils.join(",", idList); // 使用逗号拼接
}
public void clearSelections() {
for (AlbumBean.ImageList item : getData()) {
item.setSelected(false);
}
notifyDataSetChanged();
}
@Override
public void onViewRecycled(@NonNull BaseViewHolder holder) {
super.onViewRecycled(holder);
View vCheckbox = holder.getView(R.id.v_checkbox);
if (vCheckbox instanceof CheckBox) {
((CheckBox) vCheckbox).setChecked(false);
}
}
}

View File

@@ -0,0 +1,80 @@
package com.example.modulevocal.adapter;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.example.modulevocal.R;
import com.qxcm.moduleutil.bean.AlbumBean;
import com.qxcm.moduleutil.utils.ImageUtils;
/**
*@author qx
*@data 2025/6/6
*@description:相册单选弹框适配器
*/
public class SingleChoiceAdapter extends BaseQuickAdapter<AlbumBean, BaseViewHolder> {
/**
* -- GETTER --
* 获取当前选中位置
*/
private int selectedPosition = -1; // 默认未选中
public SingleChoiceAdapter() {
super(R.layout.item_multi_select_t);
}
@Override
protected void convert(BaseViewHolder helper, AlbumBean item) {
int position1 = helper.getAdapterPosition();
boolean isSelected = (position1 == selectedPosition);
TextView tv_album_name1 = helper.getView(R.id.tv_album_name1);
tv_album_name1.setText(item.getName());
helper.setText(R.id.tv_album_count1, "浏览数:"+item.getRead_num());
ImageUtils.loadHeadCC(item.getImage(), helper.getView(R.id.iv_photo1));
helper.getView(R.id.v_checkbox).setSelected(isSelected); // 使用 CheckBox.setChecked()
// 设置点击事件
helper.itemView.setOnClickListener(v -> {
int pos = helper.getAdapterPosition();
if (pos != RecyclerView.NO_POSITION) {
if (selectedPosition == pos) {
selectedPosition = -1; // 如果已选中,则取消
} else {
selectedPosition = pos; // 更新为新的选中项
}
}
notifyDataSetChanged();
});
helper.getView(R.id.v_checkbox).setOnClickListener(v -> {
int pos = helper.getAdapterPosition();
if (pos != RecyclerView.NO_POSITION) {
if (selectedPosition == pos) {
selectedPosition = -1;
} else {
selectedPosition = pos;
}
}
notifyDataSetChanged();
});
}
/**
* 获取当前选中的条目
*/
public AlbumBean getSelectedItem() {
if (selectedPosition == -1 || selectedPosition >= getData().size()) return null;
return getData().get(selectedPosition);
}
}

View File

@@ -6,33 +6,44 @@ import com.example.modulevocal.R;
import com.qxcm.moduleutil.bean.UserImgList;
import com.qxcm.moduleutil.utils.ImageUtils;
public class UserPhotoWallAdapter extends BaseQuickAdapter<UserImgList, BaseViewHolder> {
public class UserPhotoWallAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
private boolean b = false;
private int longClickPos = -1;
public static final String ADD_PHOTO = "ADD_PHOTO";
public UserPhotoWallAdapter() {
super(R.layout.me_item_user_photo_wall);
}
@Override
protected void convert(BaseViewHolder helper, UserImgList item) {
if (helper.getAdapterPosition() == 5) {
helper.setVisible(R.id.riv_user_head, false);
protected void convert(BaseViewHolder helper, String item) {
if (item.equals(ADD_PHOTO)) {
helper.setVisible(R.id.iv_close, false);
// 显示加号图片
helper.setImageResource(com.qxcm.moduleutil.R.id.riv_user_head, com.qxcm.moduleutil.R.mipmap.add_img);
} else {
helper.setVisible(R.id.riv_user_head, true);
if (!"0".equals(item.getId())) {
ImageUtils.loadCenterCrop(item.getUrl(), helper.getView(R.id.riv_user_head));
if (longClickPos == helper.getAdapterPosition()) {
helper.setVisible(R.id.iv_close, true);
} else {
helper.setVisible(R.id.iv_close, false);
}
} else {
helper.setImageResource(R.id.riv_user_head, com.qxcm.moduleutil.R.mipmap.add_img);
helper.setGone(R.id.iv_close, false);
}
helper.setVisible(R.id.iv_close, true);
ImageUtils.loadCenterCrop(item, helper.getView(com.qxcm.moduleutil.R.id.riv_user_head));
}
// if (helper.getAdapterPosition() == 5) {
// helper.setVisible(R.id.riv_user_head, false);
// helper.setVisible(R.id.iv_close, false);
// } else {
// helper.setVisible(R.id.riv_user_head, true);
// if (!"0".equals(item.getId())) {
// ImageUtils.loadCenterCrop(item.getUrl(), helper.getView(R.id.riv_user_head));
// if (longClickPos == helper.getAdapterPosition()) {
// helper.setVisible(R.id.iv_close, true);
// } else {
// helper.setVisible(R.id.iv_close, false);
// }
// } else {
// helper.setImageResource(R.id.riv_user_head, com.qxcm.moduleutil.R.mipmap.add_img);
// helper.setGone(R.id.iv_close, false);
// }
// }
helper.addOnClickListener(R.id.iv_close);
helper.addOnClickListener(R.id.riv_user_head);
helper.addOnLongClickListener(R.id.riv_user_head);

View File

@@ -0,0 +1,43 @@
package com.example.modulevocal.conacts;
import android.app.Activity;
import com.qxcm.moduleutil.activity.IPresenter;
import com.qxcm.moduleutil.activity.IView;
import com.qxcm.moduleutil.bean.AlbumBean;
import java.io.File;
import java.util.List;
public class AlbumDetailConacts {
public interface View extends IView<Activity> {
void getAlbumDetail(AlbumBean albumBean);
void upLoadSuccess(String url, int type, int index, int total);
void upAddAlbum();
void getAlbumList(List<AlbumBean> data);
void moveAlbum();
void deleteAlbum();
void likeAlbum();
}
public interface IMePre extends IPresenter {
void getAlbumDetail(String albumId,String pwd,String page,String page_limit);
void uploadFile(File file, int type, int index, int sice);
void upAddAlbum(String album_id,String images,String content);
void getAlbumList(String page, String page_limit, String userId);
void moveAlbum(String id,String new_album_id);
void deleteAlbumImage(String id);
void likeAlbum(String albumId);
}
}

View File

@@ -4,11 +4,18 @@ import android.app.Activity;
import com.qxcm.moduleutil.activity.IPresenter;
import com.qxcm.moduleutil.activity.IView;
import com.qxcm.moduleutil.bean.UserTagBean;
import java.util.List;
public class BriefIntroductionConacts {
public interface View extends IView<Activity> {
void getUserTagListSuccess(List<UserTagBean> data);
void editUserInfoSuccess(String s);
}
public interface IMePre extends IPresenter {
void getUserTagList();
void editUserInfo(String nickname,String birthday,String sex,String avatar,String images,String profile,String tag_id);
}
}

View File

@@ -7,10 +7,11 @@ import com.qxcm.moduleutil.activity.IView;
public class ChangeNicknameConacts {
public interface View extends IView<Activity> {
void editUserInfoSuccess(String s);
}
public interface IMePre extends IPresenter {
void editUserInfo(String nickname,String birthday,String sex,String avatar,String images,String profile,String tag_id);
}
}

View File

@@ -4,16 +4,33 @@ import android.app.Activity;
import com.qxcm.moduleutil.activity.IPresenter;
import com.qxcm.moduleutil.activity.IView;
import com.qxcm.moduleutil.bean.HeatedBean;
import com.qxcm.moduleutil.bean.UserInfo;
import java.io.File;
import java.util.List;
public class EditUserConactos {
public interface View extends IView<Activity> {
void upLoadSuccess(String url, int type);
void getUserHomeSuccess(UserInfo userInfo);
void editUserInfoSuccess(String s);
void topicList(List<HeatedBean> list);
void upLoadSuccess(String url, int type, int index, int total);
}
public interface IMePre extends IPresenter {
void uploadFile(File file, int type);
void topicList(String page, String page_limit);
void uploadFile(File file, int type,int index,int sice);
void getUserHome(String user_id);
void editUserInfo(String nickname,String birthday,String sex,String avatar,String images,String profile,String tag_id);
void editUserBg(String images);
}
}

View File

@@ -4,12 +4,13 @@ import android.app.Activity;
import com.qxcm.moduleutil.activity.IPresenter;
import com.qxcm.moduleutil.activity.IView;
import com.qxcm.moduleutil.bean.UserInfo;
public final class MeConacts {
public interface View extends IView<Activity> {
// void myInfoSuccess(MyInfoResp data);
void myInfoSuccess(UserInfo data);
void serviceSuccess(String data);

View File

@@ -16,13 +16,21 @@ public class MyAlbumConacts {
void upLoadSuccess(String url, int type);
void sendCodeSuccess();
void deleteAlbum();
void editAlbum();
}
public interface IMePre extends IPresenter {
void getAlbumList(String page, String page_limit);
void getAlbumList(String page, String page_limit, String userId);
void uploadFile(File file, int type);
void createAlbum(String name,String image);
void createAlbum(String name,String pwd,String image);
void deleteAlbum(String albumId);
void editAlbum(String albumId,String name,String pwd,String image);
}
}

View File

@@ -0,0 +1,19 @@
package com.example.modulevocal.conacts;
import android.app.Activity;
import com.qxcm.moduleutil.activity.IPresenter;
import com.qxcm.moduleutil.activity.IView;
public class SettingConacts {
public interface View extends IView<Activity> {
void clearLoginInfo(String s);
void cancel(String s);
}
public interface IMePre extends IPresenter {
void clearLoginInfo();
void cancel();
}
}

View File

@@ -6,20 +6,27 @@ import com.qxcm.moduleutil.activity.IPresenter;
import com.qxcm.moduleutil.activity.IView;
import com.qxcm.moduleutil.bean.CircleListBean;
import com.qxcm.moduleutil.bean.UserHomeResp;
import com.qxcm.moduleutil.bean.UserInfo;
import java.util.List;
public class UserHomepageConacts {
public interface View extends IView<Activity> {
void setUserDetails(UserHomeResp data);
void setUserDetails(UserInfo data);
void setCircleList(List<CircleListBean> list);
void userGuanzSuccess(String s);
void setLikeZone();
}
public interface IMePre extends IPresenter {
void getUserDetails(String userId, String emchatUsername, boolean showLoading);//获取用户数据
void getUserDetails(String userId);//获取用户数据
void getCircleList();
void getCircleList(String user_id,String page,String page_limit);
void userGuanz(String userId,String type);
void deleteZone(String zone_id);
}
}

View File

@@ -1,10 +1,15 @@
package com.example.modulevocal.fragment;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.alibaba.android.arouter.launcher.ARouter;
import com.example.modulevocal.R;
import com.example.modulevocal.activity.UserHomepageActivity;
import com.example.modulevocal.conacts.UserHomepageConacts;
import com.example.modulevocal.databinding.FragmentCirleListBinding;
import com.example.modulevocal.presenter.UserHomepagePresenter;
@@ -12,22 +17,37 @@ import com.qxcm.moduleutil.adapter.CirleListAdapter;
import com.qxcm.moduleutil.base.BaseMvpFragment;
import com.qxcm.moduleutil.bean.CircleListBean;
import com.qxcm.moduleutil.bean.UserHomeResp;
import com.qxcm.moduleutil.bean.UserInfo;
import com.qxcm.moduleutil.utils.ARouteConstants;
import com.qxcm.moduleutil.widget.dialog.RewardGiftDialogFragment;
import com.qxcm.moduleutil.widget.dialog.ShareDialog;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener;
import java.util.List;
/**
*@author qx
*@data 2025/6/4
*@description: 个人主页动态
*/
public class CirleListFragment extends BaseMvpFragment<UserHomepagePresenter, FragmentCirleListBinding> implements UserHomepageConacts.View{
public static CirleListFragment newInstance() {
return new CirleListFragment();
private int page;
private String userId;
public static CirleListFragment newInstance(String userId) {
CirleListFragment fragment = new CirleListFragment();
Bundle bundle = new Bundle();
bundle.putString("userId", userId);
fragment.setArguments(bundle);
return fragment;
}
@Override
public void initArgs(Bundle arguments) {
super.initArgs(arguments);
userId = arguments.getString("userId");
}
private CirleListAdapter cirleListAdapter;
@Override
public void setUserDetails(UserHomeResp data) {
}
@Override
protected UserHomepagePresenter bindPresenter() {
@@ -36,7 +56,7 @@ public class CirleListFragment extends BaseMvpFragment<UserHomepagePresenter, Fr
@Override
protected void initData() {
MvpPre.getCircleList();
MvpPre.getCircleList(userId,"1","10");
}
@Override
@@ -44,6 +64,73 @@ public class CirleListFragment extends BaseMvpFragment<UserHomepagePresenter, Fr
mBinding.recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
cirleListAdapter = new CirleListAdapter();
mBinding.recyclerView.setAdapter(cirleListAdapter);
mBinding.smartRefreshLayout.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
page++;
MvpPre.getCircleList(userId,page + "", "10");
}
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
// EventBus.getDefault().post(new BannerRefreshEvent());
page = 1;
MvpPre.getCircleList(userId,page + "", "10");
}
});
cirleListAdapter.setOnItemClickListener(new CirleListAdapter.OnItemClickListener() {
@Override
public void onDianzanClick(CircleListBean item) {
// MvpPre.likeZone(item.getId() + "");
int position = cirleListAdapter.getData().indexOf(item);
if (position != -1) {
// 更新点赞状态
item.setIs_like(item.getIs_like() == 1 ? 0 : 1);
// 局部刷新
cirleListAdapter.notifyItemChanged(position);
}
}
@Override
public void onHeadImageClick(CircleListBean item) {
// ARouter.getInstance().build(ARouteConstants.USER_HOME_PAGE).navigation();
}
@Override
public void onZsClick(CircleListBean item) {
RewardGiftDialogFragment.show(String.valueOf(item.getId()), getChildFragmentManager());
}
@Override
public void onDiandianClick(CircleListBean item) {
ShareDialog shareDialog = new ShareDialog(getContext(), item.getContent(),item.getShare_url(),item.getTopic_id(),1);
shareDialog.setOnShareDataListener(new ShareDialog.OnShareDataListener() {
@Override
public void onShareDataLoaded(String id) {
MvpPre.deleteZone(id);
}
});
shareDialog.show();
}
@Override
public void onPinglunClick(CircleListBean item) {
ARouter.getInstance().build(ARouteConstants.DYNAMIC_DETAIL).withString("zone_id", item.getId() + "").navigation();
// Intent intent = new Intent(getActivity(), DynamicDetailActivity.class);
// intent.putExtra("zone_id", item.getId() + "");
// startActivity(intent);
}
@Override
public void onRelaClick(CircleListBean item) {
}
});
}
@Override
@@ -51,8 +138,23 @@ public class CirleListFragment extends BaseMvpFragment<UserHomepagePresenter, Fr
return R.layout.fragment_cirle_list;
}
@Override
public void setUserDetails(UserInfo data) {
}
@Override
public void setCircleList(List<CircleListBean> list) {
cirleListAdapter.setNewData(list);
}
@Override
public void userGuanzSuccess(String s) {
}
@Override
public void setLikeZone() {
}
}

View File

@@ -1,8 +1,12 @@
package com.example.modulevocal.fragment;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
@@ -10,7 +14,11 @@ import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.android.arouter.launcher.ARouter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.example.modulevocal.R;
import com.example.modulevocal.activity.CreateAlbumActivity;
@@ -25,6 +33,8 @@ import com.qxcm.moduleutil.activity.IPresenter;
import com.qxcm.moduleutil.base.BaseMvpFragment;
import com.qxcm.moduleutil.bean.AlbumBean;
import com.qxcm.moduleutil.bean.UserImgList;
import com.qxcm.moduleutil.utils.ARouteConstants;
import com.qxcm.moduleutil.utils.SpUtil;
import java.util.List;
@@ -36,6 +46,7 @@ import java.util.List;
public class MyAlbumFragment extends BaseMvpFragment<MyAlbumPresenter, FragmentMyAlbumBinding> implements MyAlbumConacts.View {
private MyAlbumListAdapter mAdapter;
private String userId;
public static MyAlbumFragment newInstance(String userId) {
MyAlbumFragment fragment = new MyAlbumFragment();
@@ -45,6 +56,12 @@ public class MyAlbumFragment extends BaseMvpFragment<MyAlbumPresenter, FragmentM
return fragment;
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
userId = getArguments().getString("userId");
}
@Override
protected MyAlbumPresenter bindPresenter() {
return new MyAlbumPresenter(this, getActivity());
@@ -53,7 +70,7 @@ public class MyAlbumFragment extends BaseMvpFragment<MyAlbumPresenter, FragmentM
@Override
protected void initData() {
MvpPre.getAlbumList("1", "10");
MvpPre.getAlbumList("1", "10",userId);
}
@Override
@@ -66,21 +83,73 @@ public class MyAlbumFragment extends BaseMvpFragment<MyAlbumPresenter, FragmentM
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
AlbumBean item = mAdapter.getItem(position);
if ("0".equals(item.getId())) {
// startChoosePhoto(PictureMimeType.ofImage(), PictureConfig.REQUEST_CAMERA, true, 6);
startActivity(new Intent(getActivity(), CreateAlbumActivity.class));
}
else {
if (!TextUtils.isEmpty(item.getPwd())) {
if (userId.equals(SpUtil.getUserId() + "")){
onPasswordCorrect(item);
}else {
showPasswordInputDialog(item);
}
} else {
// Intent intent = new Intent(getActivity(), AlbumDetailActivity.class);
// intent.putExtra("album_id", item.getId());
// startActivity(intent);
ARouter.getInstance().build(ARouteConstants.USER_ALBUM_DETAIL).withString("albumId", item.getId()).withString("pwd", item.getPwd()).withString("target_fragment",ARouteConstants.FRAGMENT_ALBUM).navigation();
}
}
}
});
}
@SuppressLint({"MissingInflatedId", "LocalSuppress"})
private void showPasswordInputDialog(AlbumBean item) {
// 创建弹出框视图
View dialogView = LayoutInflater.from(getActivity()).inflate(com.qxcm.moduleutil.R.layout.dialog_input_password, null);
// 获取弹出框中的控件
final EditText etPassword = dialogView.findViewById(com.qxcm.moduleutil.R.id.ed_album_password);
TextView btnCancel = dialogView.findViewById(com.qxcm.moduleutil.R.id.tv_cancel);
TextView btnConfirm = dialogView.findViewById(com.qxcm.moduleutil.R.id.tv_confirm);
// 创建并显示弹出框
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(dialogView);
final AlertDialog alertDialog = builder.create();
alertDialog.show();
// 取消按钮点击事件
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
alertDialog.dismiss();
}
});
// 确认按钮点击事件
btnConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String password = etPassword.getText().toString().trim();
if (!TextUtils.isEmpty(password)) {
// 验证密码(这里只是一个示例,实际应调用相应的方法验证密码)
if (item.getPwd().equals(password)) {
alertDialog.dismiss();
// 密码正确后的操作
onPasswordCorrect(item);
} else {
Toast.makeText(getActivity(), "密码错误", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(getActivity(), "请输入密码", Toast.LENGTH_SHORT).show();
}
}
});
}
// 密码正确后的操作方法(示例)
private void onPasswordCorrect(AlbumBean item) {
// 密码正确后的具体操作
ARouter.getInstance().build(ARouteConstants.USER_ALBUM_DETAIL).withString("albumId", item.getId()).withString("pwd", item.getPwd()).navigation();
}
@Override
protected int getLayoutId() {
@@ -89,6 +158,11 @@ public class MyAlbumFragment extends BaseMvpFragment<MyAlbumPresenter, FragmentM
@Override
public void getAlbumList(List<AlbumBean> data) {
if (userId.equals(SpUtil.getUserId()+"")){
AlbumBean albumBean = new AlbumBean();
albumBean.setId("0");
data.add(0,albumBean);
}
mAdapter.setNewData(data);
}
@@ -101,4 +175,14 @@ public class MyAlbumFragment extends BaseMvpFragment<MyAlbumPresenter, FragmentM
public void sendCodeSuccess() {
}
@Override
public void deleteAlbum() {
}
@Override
public void editAlbum() {
}
}

View File

@@ -1,15 +1,21 @@
package com.example.modulevocal.fragment;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.recyclerview.widget.GridLayoutManager;
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;
@@ -18,15 +24,31 @@ import com.qxcm.moduleutil.base.BaseMvpFragment;
import com.qxcm.moduleutil.bean.CircleListBean;
import com.qxcm.moduleutil.bean.MyBagBean;
import com.qxcm.moduleutil.bean.UserHomeResp;
import com.qxcm.moduleutil.bean.UserInfo;
import com.qxcm.moduleutil.bean.UserTagBean;
import com.qxcm.moduleutil.utils.ImageUtils;
import com.qxcm.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;
public class UserHomepageFragment extends BaseMvpFragment<UserHomepagePresenter, FragmentUserHompageBinding> implements UserHomepageConacts.View{
/**
* @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<>();
@Override
public void setUserDetails(UserHomeResp mUserHomeResp) {
public void setUserDetails(UserInfo data) {
}
@@ -35,6 +57,23 @@ public class UserHomepageFragment extends BaseMvpFragment<UserHomepagePresenter,
}
@Override
public void userGuanzSuccess(String s) {
if (userInfo.getIs_follow().equals("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(String userId) {
UserHomepageFragment fragment = new UserHomepageFragment();
Bundle args = new Bundle();
@@ -42,26 +81,112 @@ public class UserHomepageFragment extends BaseMvpFragment<UserHomepagePresenter,
fragment.setArguments(args);
return fragment;
}
@Override
public void initArgs(Bundle arguments) {
super.initArgs(arguments);
userId = arguments.getString("userId");
}
@Override
protected UserHomepagePresenter bindPresenter() {
return new UserHomepagePresenter(this,getSelfActivity());
return new UserHomepagePresenter(this, getSelfActivity());
}
@Override
protected void initData() {
list=new ArrayList<>();
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,userId));
mBinding.viewPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), list, userId));
mBinding.slidingTabLayout.setViewPager(mBinding.viewPager);
mBinding.slidingTabLayout.setCurrentTab(0);
mBinding.headerInfo.rivUserHead.setData(userInfo.getAvatar(), "", userInfo.getSex() + "");
mBinding.headerInfo.tvNickName.setText(userInfo.getNickname());
mBinding.headerInfo.tvUserId.setText(userInfo.getId() + "");
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.qxcm.moduleutil.R.dimen.dp_37),
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_15)
);
params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.qxcm.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.getTag_list().isEmpty()) {
adapter.setNewData(userInfo.getTag_list());
}
mBinding.headerInfo.tvGz.setOnClickListener(this::onClick);
mBinding.headerInfo.tvGsSx.setOnClickListener(this::onClick);
refreshView();
}
private void refreshView(){
if (SpUtil.getUserId() == Integer.parseInt(userId)) {
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().equals("0")) {
mBinding.headerInfo.tvGz.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.gz));
} else {
mBinding.headerInfo.tvGz.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.yigz));
}
if (userInfo.getIs_room().equals("0")) {
mBinding.headerInfo.tvGsSx.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.gsui));
} else {
mBinding.headerInfo.tvGsSx.setBackground(getResources().getDrawable(com.qxcm.moduleutil.R.mipmap.six));
}
}
}
private void onClick(View view) {
if (view.getId() == R.id.tv_gz) {
MvpPre.userGuanz(userInfo.getId() + "", "1");
} else if (view.getId() == R.id.tv_gs_sx) {
if (userInfo.getIs_room().equals("0")){
Intent intent=new Intent(getActivity(), TUIC2CChatActivity.class);
intent.putExtra(TUIConstants.TUIChat.CHAT_ID, "u"+userInfo.getId());
intent.putExtra(TUIConstants.TUIChat.CHAT_TYPE, V2TIMConversation.V2TIM_C2C);
startActivity(intent);
}
}
}
@Override
@@ -80,7 +205,7 @@ public class UserHomepageFragment extends BaseMvpFragment<UserHomepagePresenter,
private String userId;
public MyFragmentPagerAdapter(FragmentManager fm, List<MyBagBean> list,String userId) {
public MyFragmentPagerAdapter(FragmentManager fm, List<MyBagBean> list, String userId) {
super(fm);
this.list = list;
this.userId = userId;
@@ -89,11 +214,11 @@ public class UserHomepageFragment extends BaseMvpFragment<UserHomepagePresenter,
@Override
public Fragment getItem(int position) {
MyBagBean model = list.get(position);
if ("1".equals(model.getMyBagType())){
return CirleListFragment.newInstance();
}else if ("2".equals(model.getMyBagType())){
if ("1".equals(model.getMyBagType())) {
return CirleListFragment.newInstance(userId);
} else if ("2".equals(model.getMyBagType())) {
return UserGiftWallFragment.newInstance(userId);
}else {
} else {
return MyAlbumFragment.newInstance(userId);
}
}

View File

@@ -11,6 +11,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.example.modulevocal.R;
import com.example.modulevocal.activity.BlacklistActivity;
@@ -25,10 +27,15 @@ import com.example.modulevocal.activity.UserHomepageActivity;
import com.example.modulevocal.conacts.MeConacts;
import com.example.modulevocal.databinding.FragmentVocalRangeBinding;
import com.example.modulevocal.presenter.MePresenter;
import com.qxcm.moduleutil.activity.WebViewActivity;
import com.qxcm.moduleutil.base.BaseMvpFragment;
import com.qxcm.moduleutil.bean.UserBean;
import com.qxcm.moduleutil.bean.UserInfo;
import com.qxcm.moduleutil.utils.ImageUtils;
import com.qxcm.moduleutil.utils.SpUtil;
import java.util.List;
/**
* 音域--我的
*/
@@ -58,8 +65,8 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
@Override
protected void initData() {
// MvpPre.entranceCheckFirstRecharge();
userBean= SpUtil.getUserInfo();
mBinding.rivUserHead.setData(userBean.getAvatar(), "", String.valueOf(userBean.getSex()));
// userBean= SpUtil.getUserInfo();
// mBinding.rivUserHead.setData(userBean.getAvatar(), "", String.valueOf(userBean.getSex()));
}
@@ -146,6 +153,7 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
mBinding.meDressUp.setOnClickListener(this::onClick);
mBinding.tvMyWallet.setOnClickListener(this::onClick);
mBinding.meDaily.setOnClickListener(this::onClick);
mBinding.meMyGuild.setOnClickListener(this::onClick);
}
@@ -172,6 +180,11 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
Intent intent=new Intent(getContext(), BlacklistActivity.class);
intent.putExtra("type",0);
startActivity(intent);
}else if (id==R.id.me_my_guild){
Intent intent=new Intent(getContext(), WebViewActivity.class);
intent.putExtra("url", "http://vespa.qxmier.com/dist/build/web/index.html?id="+SpUtil.getToken());
intent.putExtra("title", "公会");
startActivity(intent);
}
// else if (id == R.id.me_my_union) {
// if (ProxyCheckerT.isProxySet(getContext())){
@@ -211,7 +224,9 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
}else if (id == R.id.tv_my_wallet){//钱包
startActivity(new Intent(getContext(), MyMoneyActivity.class));
}else if (id == R.id.riv_user_head ){//用户主页
startActivity(new Intent(getContext(), UserHomepageActivity.class));
Intent intent = new Intent(getContext(), UserHomepageActivity.class);
intent.putExtra("userId",SpUtil.getUserId()+"");
startActivity(intent);
}else if (id == R.id.tv_my_jw) {
//我的爵位
// ARouter.getInstance().build(ARouteConstants.ME_GRADEACTIVITY).withString("from", "我的界面").withInt("type", 0).navigation();
@@ -296,6 +311,41 @@ public class VocalRangeFragment extends BaseMvpFragment<MePresenter, FragmentVoc
// mBinding.rivUserHead.setData(data.getHead_picture(), data.getRank_info().getPicture(), data.getSex());
// }
@Override
public void myInfoSuccess(UserInfo data) {
SpUtil.saveUserInfo(data);
mBinding.rivUserHead.setData(data.getAvatar(), "", String.valueOf(data.getSex()));
mBinding.tvNickName.setText(data.getNickname());
mBinding.beautifulView.setText("ID:"+data.getId());
mBinding.tvFollow.setText(data.getFollow_num()+"");
mBinding.tvFans.setText(data.getFans_num()+"");
mBinding.tvFriends.setText(data.getLook_me_num()+"");
LinearLayout llContainer = mBinding.llImageContainer;
llContainer.removeAllViews(); // 清空旧的 ImageView
List<String> images = data.getIcon(); // 获取图片列表
for (String url : images) {
if (url.contains("http")) {
ImageView imageView = new ImageView(getContext());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_37),
getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_15)
);
params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.qxcm.moduleutil.R.dimen.dp_5), 0); // 右边距
imageView.setLayoutParams(params);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
// 使用 Glide 加载图片
ImageUtils.loadHeadCC(url, imageView);
llContainer.addView(imageView);
}
}
}
@Override
public void serviceSuccess(String data) {
try {

View File

@@ -0,0 +1,144 @@
package com.example.modulevocal.presenter;
import android.content.Context;
import com.example.modulevocal.conacts.AlbumDetailConacts;
import com.hjq.toast.ToastUtils;
import com.qxcm.moduleutil.bean.AlbumBean;
import com.qxcm.moduleutil.http.BaseObserver;
import com.qxcm.moduleutil.presenter.BasePresenter;
import com.qxcm.moduleutil.utils.oss.OSSOperUtils;
import java.io.File;
import java.util.List;
import io.reactivex.disposables.Disposable;
public class AlbumDetailPresenter extends BasePresenter<AlbumDetailConacts.View> implements AlbumDetailConacts.IMePre {
public AlbumDetailPresenter(AlbumDetailConacts.View view, Context context) {
super(view, context);
}
@Override
public void getAlbumDetail(String albumId, String pwd, String page, String page_limit) {
api.getAlbumDetail(albumId, pwd, page, page_limit, new BaseObserver<AlbumBean>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(AlbumBean albumBean) {
MvpRef.get().getAlbumDetail(albumBean);
}
});
}
public void batchUploadFiles(List<File> files, int type) {
for (int i = 0; i < files.size(); i++) {
uploadFile(files.get(i), type, i, files.size());
}
}
@Override
public void uploadFile(File file, int type, int index, int size) {
MvpRef.get().showLoadings("上传中...");
String url = OSSOperUtils.getPath(file, type);
OSSOperUtils.newInstance().putObjectMethod(url, file.getPath(), new OSSOperUtils.OssCallback() {
@Override
public void onSuccess() {
if (isViewAttach()) {
MvpRef.get().disLoadings();
MvpRef.get().upLoadSuccess(OSSOperUtils.AliYunOSSURLFile + url, type, index, size);
}
}
@Override
public void onFail() {
if (isViewAttach()) {
ToastUtils.show("上传失败");
MvpRef.get().disLoadings();
}
}
});
}
@Override
public void upAddAlbum(String album_id, String images, String content) {
api.upAddAlbum(album_id, images, content, new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(String s) {
MvpRef.get().upAddAlbum();
}
});
}
@Override
public void getAlbumList(String page, String page_limit, String userId) {
api.getAlbumList(page, page_limit, userId, new BaseObserver<List<AlbumBean>>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(List<AlbumBean> albumBeans) {
MvpRef.get().getAlbumList(albumBeans);
}
});
}
@Override
public void moveAlbum(String id, String new_album_id) {
api.moveAlbum(id, new_album_id, new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(String s) {
MvpRef.get().moveAlbum();
}
});
}
@Override
public void deleteAlbumImage(String id) {
api.deleteAlbum(id,1, new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(String s) {
MvpRef.get().deleteAlbum();
}
});
}
@Override
public void likeAlbum(String albumId) {
api.likeAlbum(albumId, new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(String s) {
MvpRef.get().likeAlbum();
}
});
}
}

View File

@@ -3,10 +3,46 @@ package com.example.modulevocal.presenter;
import android.content.Context;
import com.example.modulevocal.conacts.BriefIntroductionConacts;
import com.qxcm.moduleutil.bean.UserTagBean;
import com.qxcm.moduleutil.http.BaseObserver;
import com.qxcm.moduleutil.presenter.BasePresenter;
public class BriefIntroductionPresenter extends BasePresenter<BriefIntroductionConacts.View> {
import java.util.List;
import io.reactivex.disposables.Disposable;
public class BriefIntroductionPresenter extends BasePresenter<BriefIntroductionConacts.View> implements BriefIntroductionConacts.IMePre{
public BriefIntroductionPresenter(BriefIntroductionConacts.View view, Context context) {
super(view, context);
}
@Override
public void getUserTagList() {
api.getUserTagList(new BaseObserver<List<UserTagBean>>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(List<UserTagBean> userTagBeans) {
MvpRef.get().getUserTagListSuccess(userTagBeans);
}
});
}
@Override
public void editUserInfo(String nickname, String birthday, String sex, String avatar, String images, String profile, String tag_id) {
api.editUserInfo(1,nickname, birthday, sex, avatar, images, profile, tag_id, new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(String s) {
MvpRef.get().editUserInfoSuccess(s);
}
});
}
}

View File

@@ -3,10 +3,28 @@ package com.example.modulevocal.presenter;
import android.content.Context;
import com.example.modulevocal.conacts.ChangeNicknameConacts;
import com.qxcm.moduleutil.http.BaseObserver;
import com.qxcm.moduleutil.presenter.BasePresenter;
import io.reactivex.disposables.Disposable;
public class ChangeNicknamePresenter extends BasePresenter<ChangeNicknameConacts.View> implements ChangeNicknameConacts.IMePre {
public ChangeNicknamePresenter(ChangeNicknameConacts.View view, Context context) {
super(view, context);
}
@Override
public void editUserInfo(String nickname, String birthday, String sex, String avatar, String images, String profile, String tag_id) {
api.editUserInfo(1,nickname, birthday, sex, avatar, images, profile, tag_id, new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(String s) {
MvpRef.get().editUserInfoSuccess(s);
}
});
}
}

View File

@@ -42,54 +42,19 @@ public class ChangePasswordPresenter extends BasePresenter<ChangePasswordConacto
@Override
public void changePassword(String new_password, String mobile, String code, String userId) {
Retrofit retrofit = new Retrofit.Builder().baseUrl(CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl())
.addConverterFactory(GsonConverterFactory.create())
.build();
Call<BaseModel<String>> call=retrofit.create(ApiServer.class).getPostData(new_password, mobile, code, userId);
call.enqueue(new Callback<BaseModel<String>>() {
api.getPostData(new_password, mobile, code, userId, new BaseObserver<String>(){
@Override
public void onResponse(Call<BaseModel<String>> call, Response<BaseModel<String>> response) {
if (response.code()==200){
BaseModel<String> string=response.body();
if (string!=null){
int code=string.getCode();
if (code==1){
MvpRef.get().sendCodeSuccess("");
}else {
ToastUtils.showShort(string.getMsg());
}
}
}
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onFailure(Call<BaseModel<String>> call, Throwable t) {
ToastUtils.showShort("修改失败");
public void onNext(String s) {
MvpRef.get().sendCodeSuccess(s);
}
});
// api.changePassword(new_password, mobile, code, userId, new BaseObserver<String>() {
//
// @Override
// public void onSuccess(String data) {
// if (data == null) {
// MvpRef.get().sendCodeSuccess("");
// }
// }
//
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(String s) {
// MvpRef.get().sendCodeSuccess(s);
// }
// });
}
}

View File

@@ -4,10 +4,15 @@ import android.content.Context;
import com.example.modulevocal.conacts.EditUserConactos;
import com.hjq.toast.ToastUtils;
import com.qxcm.moduleutil.bean.UserInfo;
import com.qxcm.moduleutil.http.BaseObserver;
import com.qxcm.moduleutil.presenter.BasePresenter;
import com.qxcm.moduleutil.utils.oss.OSSOperUtils;
import java.io.File;
import java.util.List;
import io.reactivex.disposables.Disposable;
public class EditUserPresenter extends BasePresenter<EditUserConactos.View> implements EditUserConactos.IMePre {
public EditUserPresenter(EditUserConactos.View view, Context context) {
@@ -15,7 +20,12 @@ public class EditUserPresenter extends BasePresenter<EditUserConactos.View> impl
}
@Override
public void uploadFile(File file, int type) {
public void topicList(String page, String page_limit) {
}
@Override
public void uploadFile(File file, int type, int index, int size) {
MvpRef.get().showLoadings("上传中...");
String url = OSSOperUtils.getPath(file, type);
OSSOperUtils.newInstance().putObjectMethod(url, file.getPath(), new OSSOperUtils.OssCallback() {
@@ -23,7 +33,7 @@ public class EditUserPresenter extends BasePresenter<EditUserConactos.View> impl
public void onSuccess() {
if (isViewAttach()) {
MvpRef.get().disLoadings();
MvpRef.get().upLoadSuccess(OSSOperUtils.AliYunOSSURLFile + url, type);
MvpRef.get().upLoadSuccess(OSSOperUtils.AliYunOSSURLFile + url, type, index, size);
}
}
@@ -36,4 +46,53 @@ public class EditUserPresenter extends BasePresenter<EditUserConactos.View> impl
}
});
}
public void batchUploadFiles(List<File> files, int type) {
for (int i = 0; i < files.size(); i++) {
uploadFile(files.get(i), type, i, files.size());
}
}
@Override
public void getUserHome(String user_id) {
api.getUserHome(user_id, new BaseObserver<UserInfo>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(UserInfo userInfo) {
MvpRef.get().getUserHomeSuccess(userInfo);
}
});
}
@Override
public void editUserInfo(String nickname, String birthday, String sex, String avatar, String images, String profile, String tag_id) {
api.editUserInfo(1,nickname, birthday, sex, avatar, images, profile, tag_id, new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(String s) {
MvpRef.get().editUserInfoSuccess(s);
}
});
}
@Override
public void editUserBg(String images) {
api.editUserInfo(2,"", "", "", "", images, "", "", new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(String s) {
MvpRef.get().editUserInfoSuccess(s);
}
});
}
}

View File

@@ -5,6 +5,8 @@ import android.content.Context;
import com.blankj.utilcode.util.MetaDataUtils;
import com.example.modulevocal.conacts.MeConacts;
import com.hjq.toast.ToastUtils;
import com.qxcm.moduleutil.bean.UserInfo;
import com.qxcm.moduleutil.http.BaseObserver;
import com.qxcm.moduleutil.presenter.BasePresenter;
import io.reactivex.disposables.Disposable;
@@ -17,38 +19,17 @@ public class MePresenter extends BasePresenter<MeConacts.View> implements MeCona
@Override
public void getMyInfo() {
// ApiClient.getInstance().getMyInfo(new BaseObserver<MyInfoResp>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(MyInfoResp myInfoResp) {
// UserBean user = BaseApplication.getInstance().getUser();
// try {
// user.setRole(Integer.parseInt(myInfoResp.getRole()));
// user.setUser_is_new(Integer.parseInt(myInfoResp.getUser_is_new()));
// } catch (Exception e) {
// e.printStackTrace();
// }
// user.setNickname(myInfoResp.getNickname());
// try {
// user.setSex(Integer.parseInt(myInfoResp.getSex()));
// } catch (Exception e) {
// e.printStackTrace();
// }
// user.setHead_picture(myInfoResp.getHead_picture());
// user.setRank_info(myInfoResp.getRank_info());
// BaseApplication.getInstance().setUser(user);
// MvpRef.get().myInfoSuccess(myInfoResp);
// }
//
// @Override
// public void onComplete() {
//
// }
// });
api.getMyInfo(new BaseObserver<UserInfo>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(UserInfo userInfo) {
MvpRef.get().myInfoSuccess(userInfo);
}
});
}
@Override

View File

@@ -36,33 +36,33 @@ public class MyAlbumPresenter extends BasePresenter<MyAlbumConacts.View> impleme
}
@Override
public void getAlbumList(String page, String page_limit) {
// api.getAlbumList(page, page_limit, new BaseObserver<List<AlbumBean>>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(List<AlbumBean> albumBeans) {
// MvpRef.get().getAlbumList(albumBeans);
// }
// });
public void getAlbumList(String page, String page_limit, String userId) {
api.getAlbumList(page, page_limit,userId, new BaseObserver<List<AlbumBean>>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
List<AlbumBean> albumBeans = new ArrayList<>();
AlbumBean albumBean1 = new AlbumBean();
albumBean1.setId("0");
albumBeans.add(albumBean1);
for (int i = 1; i < 5; i++) {
AlbumBean albumBean = new AlbumBean();
albumBean.setId(i + "");
albumBean.setName("相册" + i);
albumBean.setImage("http://img.alicdn.com/tfs/TB1.XpjQFXXXXX_XpXXXXXXXXXX-1024-1024.png");
albumBean.setPwd(i / 2 == 1 ? "123456" : "");
albumBean.setRead_num("100");
albumBeans.add(albumBean);
}
MvpRef.get().getAlbumList(albumBeans);
@Override
public void onNext(List<AlbumBean> albumBeans) {
MvpRef.get().getAlbumList(albumBeans);
}
});
// List<AlbumBean> albumBeans = new ArrayList<>();
// AlbumBean albumBean1 = new AlbumBean();
// albumBean1.setId("0");
// albumBeans.add(albumBean1);
// for (int i = 1; i < 5; i++) {
// AlbumBean albumBean = new AlbumBean();
// albumBean.setId(i + "");
// albumBean.setName("相册" + i);
// albumBean.setImage("http://img.alicdn.com/tfs/TB1.XpjQFXXXXX_XpXXXXXXXXXX-1024-1024.png");
// albumBean.setPwd(i / 2 == 1 ? "123456" : "");
// albumBean.setRead_num("100");
// albumBeans.add(albumBean);
// }
// MvpRef.get().getAlbumList(albumBeans);
}
@@ -90,21 +90,9 @@ public class MyAlbumPresenter extends BasePresenter<MyAlbumConacts.View> impleme
}
@Override
public void createAlbum(String name, String image) {
// api.createAlbum(name, image, new BaseObserver<String>() {
//
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(String s) {
// MvpRef.get().sendCodeSuccess();
// }
// });
public void createAlbum(String name, String pwd,String image) {
api.createAlbum(name, image, new BaseObserver<String>(){
api.createAlbum(name,pwd, image, new BaseObserver<String>(){
@Override
public void onSubscribe(Disposable d) {
@@ -117,4 +105,35 @@ public class MyAlbumPresenter extends BasePresenter<MyAlbumConacts.View> impleme
}
});
}
@Override
public void deleteAlbum(String albumId) {
api.deleteAlbum(albumId,2, new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(String s) {
MvpRef.get().deleteAlbum();
}
});
}
@Override
public void editAlbum(String albumId, String name, String pwd, String image) {
api.editAlbum(albumId,name,pwd,image, new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(String s) {
MvpRef.get().editAlbum();
}
});
}
}

View File

@@ -0,0 +1,46 @@
package com.example.modulevocal.presenter;
import android.content.Context;
import com.example.modulevocal.conacts.SettingConacts;
import com.qxcm.moduleutil.http.BaseObserver;
import com.qxcm.moduleutil.presenter.BasePresenter;
import io.reactivex.disposables.Disposable;
public class SettingPresenter extends BasePresenter<SettingConacts.View> implements SettingConacts.IMePre {
public SettingPresenter(SettingConacts.View view, Context context) {
super(view, context);
}
@Override
public void clearLoginInfo() {
api.clearLoginInfo(new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(String s) {
MvpRef.get().clearLoginInfo(s);
}
});
}
@Override
public void cancel() {
api.cancel(new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(String s) {
MvpRef.get().cancel(s);
}
});
}
}

View File

@@ -6,6 +6,8 @@ import com.example.modulevocal.conacts.UserHomepageConacts;
import com.qxcm.moduleutil.bean.CircleListBean;
import com.qxcm.moduleutil.bean.PhotoWallResp;
import com.qxcm.moduleutil.bean.UserHomeResp;
import com.qxcm.moduleutil.bean.UserInfo;
import com.qxcm.moduleutil.http.BaseObserver;
import com.qxcm.moduleutil.presenter.BasePresenter;
import java.util.ArrayList;
@@ -19,90 +21,64 @@ public class UserHomepagePresenter extends BasePresenter<UserHomepageConacts.Vie
}
@Override
public void getUserDetails(String userId, String emchatUsername, boolean showLoading) {
// if (showLoading) {
// MvpRef.get().showLoadings();
// }
// ApiClient.getInstance().userHomePage(userId, emchatUsername, new BaseObserver<UserHomeResp>() {
// @Override
// public void onSubscribe(Disposable d) {
// addDisposable(d);
// }
//
// @Override
// public void onNext(UserHomeResp userHomeResp) {
// MvpRef.get().setUserDetails(userHomeResp);
// }
//
// @Override
// public void onComplete() {
// MvpRef.get().disLoadings();
// }
//
// @Override
// public void onError(Throwable e) {
// super.onError(e);
// MvpRef.get().onFail();
// }
// });
public void getUserDetails(String userId) {
api.getUserHome(userId, new BaseObserver<UserInfo>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
UserHomeResp userHomeResp = new UserHomeResp();
userHomeResp.setUser_id("1");
userHomeResp.setNickname("小明");
@Override
public void onNext(UserInfo userInfo) {
MvpRef.get().setUserDetails(userInfo);
}
});
userHomeResp.setHead_picture("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setSex("");
userHomeResp.setSignature("个性签名");
userHomeResp.setBirthday("1990-01-01");
userHomeResp.setConstellation("摩羯");
userHomeResp.setProfession("学生");
userHomeResp.setEmchat_username("小明");
userHomeResp.setNobility_icon("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setNobility_image("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setRank_icon("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setIntro_voice("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setIntro_voice_time("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setFollow("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setFollow_count("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setFans_count("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setAge("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setCity("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setIs_online("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setOnly_friend("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setPicture("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setSignature("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setHead_picture("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
PhotoWallResp photoWallResp = new PhotoWallResp();
photoWallResp.setAvatar("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3042118352,1578432634&fm=26&gp=0.jpg");
userHomeResp.setUser_photo(photoWallResp);
MvpRef.get().setUserDetails(userHomeResp);
}
@Override
public void getCircleList() {
// List<String> images=new ArrayList<>();
// images.add("https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=false&word=%E7%BE%8E%E5%A5%B3%E5%9B%BE%E7%89%87&hs=0&pn=0&spn=0&di=7490230549689139201&pi=0&rn=1&tn=baiduimagedetail&is=2160705940%2C3901940110&ie=utf-8&oe=utf-8&cl=2&lm=-1&cs=2056927850%2C430353020&os=2160705940%2C3901940110&simid=3513174432%2C352671812&adpicid=0&lpn=0&ln=0&fm=&sme=&cg=girl&bdtype=0&oriquery=&objurl=https%3A%2F%2Fq4.itc.cn%2Fimages01%2F20240627%2Fd30dbf39840a4c0bbeb277a6d773db2f.jpeg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bf5i7_z%26e3Bv54AzdH3FwAzdH3F0blaabmca_8d8n8lbaa&gsm=&islist=&querylist=");
// images.add("https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=false&word=%E7%BE%8E%E5%A5%B3%E5%9B%BE%E7%89%87&hs=0&pn=0&spn=0&di=7490230549689139201&pi=0&rn=1&tn=baiduimagedetail&is=2160705940%2C3901940110&ie=utf-8&oe=utf-8&cl=2&lm=-1&cs=2056927850%2C430353020&os=2160705940%2C3901940110&simid=3513174432%2C352671812&adpicid=0&lpn=0&ln=0&fm=&sme=&cg=girl&bdtype=0&oriquery=&objurl=https%3A%2F%2Fq4.itc.cn%2Fimages01%2F20240627%2Fd30dbf39840a4c0bbeb277a6d773db2f.jpeg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bf5i7_z%26e3Bv54AzdH3FwAzdH3F0blaabmca_8d8n8lbaa&gsm=&islist=&querylist=");
// images.add("https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=false&word=%E7%BE%8E%E5%A5%B3%E5%9B%BE%E7%89%87&hs=0&pn=0&spn=0&di=7490230549689139201&pi=0&rn=1&tn=baiduimagedetail&is=2160705940%2C3901940110&ie=utf-8&oe=utf-8&cl=2&lm=-1&cs=2056927850%2C430353020&os=2160705940%2C3901940110&simid=3513174432%2C352671812&adpicid=0&lpn=0&ln=0&fm=&sme=&cg=girl&bdtype=0&oriquery=&objurl=https%3A%2F%2Fq4.itc.cn%2Fimages01%2F20240627%2Fd30dbf39840a4c0bbeb277a6d773db2f.jpeg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bf5i7_z%26e3Bv54AzdH3FwAzdH3F0blaabmca_8d8n8lbaa&gsm=&islist=&querylist=");
// images.add("https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=false&word=%E7%BE%8E%E5%A5%B3%E5%9B%BE%E7%89%87&hs=0&pn=0&spn=0&di=7490230549689139201&pi=0&rn=1&tn=baiduimagedetail&is=2160705940%2C3901940110&ie=utf-8&oe=utf-8&cl=2&lm=-1&cs=2056927850%2C430353020&os=2160705940%2C3901940110&simid=3513174432%2C352671812&adpicid=0&lpn=0&ln=0&fm=&sme=&cg=girl&bdtype=0&oriquery=&objurl=https%3A%2F%2Fq4.itc.cn%2Fimages01%2F20240627%2Fd30dbf39840a4c0bbeb277a6d773db2f.jpeg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bf5i7_z%26e3Bv54AzdH3FwAzdH3F0blaabmca_8d8n8lbaa&gsm=&islist=&querylist=");
// List<CircleListBean> list=new ArrayList<>();
// for (int i = 0; i < 10; i++){
// CircleListBean bean=new CircleListBean();
// bean.setId(""+i);
// bean.setUserNickName("萌新驾到"+i);
// bean.setUserAvatar("");
// bean.setTime("发布于 12:5"+i);
// bean.setContent("任何关系,都需要谦逊谨慎");
// bean.setImages(images);
// bean.setType("1");
// bean.setComment(""+i);
// bean.setLike(""+i);
// bean.setIsShare(""+i);
// list.add(bean);
// }
// MvpRef.get().setCircleList(list);
public void getCircleList(String user_id, String page, String page_limit) {
api.getCircleUserList(user_id,page,page_limit,new BaseObserver<List<CircleListBean>>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(List<CircleListBean> circleListBeans) {
MvpRef.get().setCircleList(circleListBeans);
}
});
}
@Override
public void userGuanz(String userId, String type) {
api.userGuanz(userId,type, new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(String s) {
MvpRef.get().userGuanzSuccess(s);
}
});
}
@Override
public void deleteZone(String zone_id) {
api.deleteZone(zone_id, new BaseObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(String s) {
MvpRef.get().setLikeZone();
}
});
}
}

View File

@@ -0,0 +1,270 @@
<?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.AlbumDetailActivity">
<data>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_album_detail_bg"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_216"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_2"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_216"
app:layout_constraintTop_toTopOf="parent">
<com.github.mmin18.widget.RealtimeBlurView
android:id="@+id/realt"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView
android:id="@+id/tv_album_name"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_27"
android:layout_marginTop="@dimen/dp_73"
android:gravity="center"
android:text="我是标题"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_18"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/tv_bj"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_27"
android:layout_marginStart="@dimen/dp_5"
android:scaleType="fitCenter"
android:src="@mipmap/bj"
app:layout_constraintStart_toEndOf="@+id/tv_album_name"
app:layout_constraintTop_toTopOf="@+id/tv_album_name" />
<ImageView
android:id="@+id/im_suo"
android:layout_width="@dimen/dp_21"
android:layout_height="@dimen/dp_21"
android:layout_marginTop="@dimen/dp_6"
android:layout_marginEnd="@dimen/dp_5"
android:src="@mipmap/suo"
app:layout_constraintEnd_toStartOf="@+id/tv_album_num"
app:layout_constraintTop_toBottomOf="@+id/tv_album_name" />
<TextView
android:id="@+id/tv_album_num"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_21"
android:layout_marginTop="@dimen/dp_6"
android:gravity="center"
android:text="@string/guild"
android:textColor="@color/color_FF666666"
android:textSize="@dimen/sp_14"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_album_name" />
<LinearLayout
android:id="@+id/zan"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_22"
android:layout_marginStart="@dimen/dp_41"
android:layout_marginBottom="@dimen/dp_16"
android:gravity="left|center"
android:orientation="horizontal"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent">
<ImageView
android:id="@+id/zan_image"
android:layout_width="@dimen/dp_14"
android:layout_height="@dimen/dp_14"
android:src="@mipmap/shousz" />
<TextView
android:id="@+id/dy_comment"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_21"
android:layout_marginLeft="5dp"
android:gravity="center_vertical"
android:text="0"
android:textColor="@color/color_FF333333"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/lock"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_22"
android:layout_marginEnd="@dimen/dp_41"
android:layout_marginBottom="@dimen/dp_16"
android:gravity="left|center"
android:orientation="horizontal"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<ImageView
android:id="@+id/lock_image"
android:layout_width="@dimen/dp_14"
android:layout_height="@dimen/dp_14"
android:src="@mipmap/lock" />
<TextView
android:id="@+id/lock_comment"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_21"
android:layout_marginLeft="5dp"
android:gravity="center_vertical"
android:text="0"
android:textColor="@color/color_FF333333"
android:textSize="14sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<com.qxcm.moduleutil.widget.CustomTopBar
android:id="@+id/top_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/smart_refresh_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cl_2"
app:srlEnableLoadMore="true"
app:srlEnableRefresh="false">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycle_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_10"
android:layout_marginStart="@dimen/dp_12"
android:layout_marginEnd="@dimen/dp_12"
android:background="@color/white"
android:overScrollMode="never"
android:scrollbars="none" />
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
<ImageView
android:id="@+id/im_cr_album"
android:layout_width="@dimen/dp_48"
android:layout_height="@dimen/dp_48"
android:layout_marginEnd="@dimen/dp_16"
android:layout_marginBottom="@dimen/dp_86"
android:src="@mipmap/cr_album"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<LinearLayout
android:id="@+id/bottom_panel"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_76"
android:background="@color/white"
android:gravity="center"
android:orientation="horizontal"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent">
<LinearLayout
android:id="@+id/rl_share"
android:layout_width="@dimen/dp_0"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_2"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="@dimen/dp_20"
android:layout_height="@dimen/dp_20"
android:gravity="center_horizontal"
android:scaleType="fitXY"
android:src="@mipmap/im_share" />
<TextView
android:layout_width="@dimen/dp_28"
android:layout_height="@dimen/dp_21"
android:layout_marginTop="@dimen/dp_2"
android:text="分享"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_14" />
</LinearLayout>
<LinearLayout
android:id="@+id/rl_transfer"
android:layout_width="@dimen/dp_0"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_2"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="@dimen/dp_20"
android:layout_height="@dimen/dp_20"
android:gravity="center_horizontal"
android:scaleType="fitXY"
android:src="@mipmap/im_transfer" />
<TextView
android:layout_width="@dimen/dp_28"
android:layout_height="@dimen/dp_21"
android:layout_marginTop="@dimen/dp_2"
android:text="转移"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_14" />
</LinearLayout>
<LinearLayout
android:id="@+id/rl_delete"
android:layout_width="@dimen/dp_0"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_2"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="@dimen/dp_20"
android:layout_height="@dimen/dp_20"
android:gravity="center_horizontal"
android:scaleType="fitXY"
android:src="@mipmap/im_delete" />
<TextView
android:layout_width="@dimen/dp_28"
android:layout_height="@dimen/dp_21"
android:layout_marginTop="@dimen/dp_2"
android:text="删除"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_14" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -10,7 +10,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
android:layout_height="match_parent">
<com.qxcm.moduleutil.widget.CustomTopBar
android:id="@+id/top_bar"
@@ -18,6 +18,32 @@
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/riv_album"
android:layout_width="@dimen/dp_103"
android:layout_height="@dimen/dp_103"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_12"
android:scaleType="fitXY"
android:src="@mipmap/add_img"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/top_bar"
app:riv_corner_radius="@dimen/dp_5" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_12"
android:text="相册封面"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_14"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/riv_album" />
<com.qxcm.moduleutil.widget.ClearEditText
android:id="@+id/ed_album_name"
android:layout_width="match_parent"
@@ -36,29 +62,50 @@
android:textColor="#333333"
android:textColorHint="#9B9B9B"
android:textSize="@dimen/sp_16"
app:layout_constraintTop_toBottomOf="@+id/top_bar" />
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/riv_album"
android:layout_width="@dimen/dp_103"
android:layout_height="@dimen/dp_103"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_12"
android:scaleType="fitXY"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ed_album_name"
app:riv_corner_radius="@dimen/dp_5"
android:src="@mipmap/add_img" />
app:layout_constraintTop_toBottomOf="@+id/tv_title" />
<TextView
android:id="@+id/tv_cancel"
android:layout_width="@dimen/dp_95"
android:layout_height="@dimen/dp_42"
android:layout_marginStart="@dimen/dp_38"
android:layout_marginTop="@dimen/dp_34"
android:background="@mipmap/cancel"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/riv_album" />
android:id="@+id/tv_sm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginEnd="@dimen/dp_5"
android:text="是否开启私密"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_14"
app:layout_constraintEnd_toStartOf="@+id/btn_radio"
app:layout_constraintTop_toBottomOf="@+id/ed_album_name" />
<com.qxcm.moduleutil.widget.ClearEditText
android:id="@+id/ed_album_password"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_44"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginEnd="@dimen/dp_16"
android:background="@drawable/bg_r100_hui"
android:gravity="center|left"
android:hint="请设置密码"
android:inputType="textPassword"
android:maxLength="8"
android:paddingStart="@dimen/dp_12"
android:paddingEnd="@dimen/dp_10"
android:singleLine="true"
android:text=""
android:textColor="#333333"
android:textColorHint="#9B9B9B"
android:textSize="@dimen/sp_16"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@+id/tv_sm" />
<com.zcw.togglebutton.ToggleButton
android:id="@+id/btn_radio"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_24"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginEnd="@dimen/dp_16"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ed_album_name" />
<TextView
android:id="@+id/tv_confirm"
@@ -67,9 +114,28 @@
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_34"
android:layout_marginEnd="@dimen/dp_38"
android:layout_marginBottom="@dimen/dp_30"
android:background="@mipmap/sure"
app:layout_constraintStart_toEndOf="@+id/tv_cancel"
app:layout_constraintTop_toBottomOf="@+id/riv_album" />
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/tv_dele"
android:layout_width="@dimen/dp_188"
android:layout_height="@dimen/dp_42"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_34"
android:layout_marginEnd="@dimen/dp_38"
android:layout_marginBottom="@dimen/dp_85"
android:background="@drawable/bg_r53_33333"
app:layout_constraintBottom_toBottomOf="parent"
android:text="删除"
android:gravity="center"
android:textColor="@color/white"
android:textSize="@dimen/sp_14"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -17,6 +17,14 @@
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"/>
<com.stx.xhb.xbanner.XBanner
android:id="@+id/xbanner"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_230"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<LinearLayout
android:layout_width="match_parent"
@@ -58,6 +66,7 @@
android:layout_alignParentStart="true"
/>
<TextView
android:id="@+id/tv_nick_name"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_24"
tools:text="姓名"
@@ -98,6 +107,7 @@
android:layout_alignParentStart="true"
/>
<TextView
android:id="@+id/tv_sex"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_24"
tools:text="男"
@@ -181,6 +191,7 @@
android:layout_alignParentStart="true"
/>
<TextView
android:id="@+id/tv_jj"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_24"
tools:text="测试数据"

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.Setting1Activity">
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -13,72 +13,6 @@
android:layout_height="match_parent"
android:animateLayoutChanges="true">
<!-- <androidx.coordinatorlayout.widget.CoordinatorLayout-->
<!-- android:id="@+id/coordinator_layout"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="0dp"-->
<!-- app:layout_constraintTop_toTopOf="parent">-->
<!-- <include-->
<!-- android:id="@+id/me_user"-->
<!-- layout="@layout/user_home" />-->
<!-- <com.scwang.smartrefresh.layout.SmartRefreshLayout-->
<!-- android:id="@+id/smart_refresh_layout"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:background="@color/transparent"-->
<!-- app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior"-->
<!-- app:srlEnableAutoLoadMore="false"-->
<!-- app:srlEnableLoadMore="false"-->
<!-- app:srlEnableRefresh="false">-->
<!-- <androidx.core.widget.NestedScrollView-->
<!-- android:id="@+id/nest_scroll"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:background="@color/transparent"-->
<!-- app:layout_constraintTop_toTopOf="parent">-->
<!-- <LinearLayout-->
<!-- android:id="@+id/ll_parent"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:descendantFocusability="blocksDescendants"-->
<!-- android:orientation="vertical">-->
<!-- <FrameLayout-->
<!-- android:id="@+id/fl_skills"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content" />-->
<!-- <FrameLayout-->
<!-- android:id="@+id/fl_gift_wall"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content" />-->
<!-- <FrameLayout-->
<!-- android:id="@+id/fl_trend_container"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content" />-->
<!-- <TextView-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginTop="@dimen/dp_15"-->
<!-- android:gravity="center"-->
<!-- android:paddingBottom="@dimen/dp_10"-->
<!-- android:text="人家是有底线的~"-->
<!-- android:textColor="@color/black"-->
<!-- android:textSize="@dimen/sp_12" />-->
<!-- </LinearLayout>-->
<!-- </androidx.core.widget.NestedScrollView>-->
<!-- </com.scwang.smartrefresh.layout.SmartRefreshLayout>-->
<!-- </androidx.coordinatorlayout.widget.CoordinatorLayout>-->
<RelativeLayout
android:id="@+id/rl_head"
android:layout_width="match_parent"
@@ -90,7 +24,7 @@
android:id="@+id/xbanner"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:isAutoPlay="false"
app:isAutoPlay="true"
app:pointsVisibility="false"
app:pointNormal="@drawable/xbanner_point_normal"
app:pointSelect="@drawable/xbanner_point_selected"

View File

@@ -5,13 +5,24 @@
<data>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/smart_refresh_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/recyclerView"
app:layout_constraintTop_toTopOf="parent"/>
app:layout_constraintTop_toTopOf="parent"
app:srlEnableLoadMore="false"
app:srlEnableRefresh="true">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

View File

@@ -126,51 +126,47 @@
android:textColor="@color/color_666666"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_image_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="@dimen/dp_4"
>
<TextView
android:layout_width="@dimen/dp_38"
android:layout_height="@dimen/dp_16"
android:background="@mipmap/xinr" />
<!-- <ImageView-->
<!-- android:id="@+id/iv_icon"-->
<!-- android:layout_width="@dimen/dp_38"-->
<!-- android:layout_height="@dimen/dp_16"-->
<!-- android:background="@mipmap/xinr" />-->
<TextView
android:layout_width="@dimen/dp_38"
android:layout_height="@dimen/dp_16"
android:layout_marginStart="@dimen/dp_5"
android:background="@mipmap/dengj" />
<!-- <TextView-->
<!-- android:id="@+id/tv_charm"-->
<!-- android:layout_width="@dimen/dp_38"-->
<!-- android:layout_height="@dimen/dp_16"-->
<!-- android:layout_marginStart="@dimen/dp_5"-->
<!-- android:background="@mipmap/dengj" />-->
<TextView
android:layout_width="@dimen/dp_38"
android:layout_height="@dimen/dp_16"
android:layout_marginStart="@dimen/dp_5"
android:background="@mipmap/renz" />
<!-- <TextView-->
<!-- android:layout_width="@dimen/dp_38"-->
<!-- android:layout_height="@dimen/dp_16"-->
<!-- android:layout_marginStart="@dimen/dp_5"-->
<!-- android:background="@mipmap/renz" />-->
</LinearLayout>
</LinearLayout>
<LinearLayout
<TextView
android:id="@+id/tv_home"
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_23"
android:layout_height="@dimen/dp_33"
android:background="@mipmap/me_edit"
android:gravity="center"
android:layout_marginEnd="@dimen/dp_16"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginEnd="@dimen/dp_16"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent">
app:layout_constraintEnd_toEndOf="parent"
/>
<ImageView
android:id="@+id/tv_home"
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_27"
android:src="@mipmap/me_edit"
android:scaleType="centerCrop"
/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -263,24 +259,27 @@
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal"
android:visibility="invisible">
<TextView
android:id="@+id/tv_friends"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="0"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_20" />
android:visibility="visible">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_1"
android:text="好友"
android:text="访客"
android:textColor="@color/color_666666"
android:textSize="@dimen/sp_12" />
<TextView
android:id="@+id/tv_friends"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:singleLine="true"
android:text="0"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_16" />
</LinearLayout>
<View

View File

@@ -0,0 +1,15 @@
<?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="wrap_content"
android:orientation="vertical"
android:padding="8dp">
<TextView
android:id="@+id/tv_date"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_24"
android:textSize="16sp"
android:textStyle="bold"
android:textColor="@color/color_FF333333" />
</LinearLayout>

View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/iv_photo1"
android:layout_width="@dimen/dp_70"
android:layout_height="@dimen/dp_70"
android:scaleType="centerCrop"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:riv_corner_radius="@dimen/dp_5"
tools:src="@mipmap/default_avatar"/>
<View
android:id="@+id/v_checkbox"
android:layout_width="@dimen/dp_20"
android:layout_height="@dimen/dp_20"
android:background="@drawable/selector_custom_checkbox"
android:focusable="false"
android:clickable="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"/> />
<TextView
android:id="@+id/tv_album_name1"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_22"
android:layout_marginTop="@dimen/dp_6"
app:layout_constraintTop_toBottomOf="@+id/iv_photo1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:gravity="left|center"
tools:text="我的相册"
android:textColor="#333333"
android:textSize="@dimen/sp_14" />
<TextView
android:id="@+id/tv_album_count1"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_18"
app:layout_constraintTop_toBottomOf="@+id/tv_album_name1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:gravity="left|center"
tools:text="共0张"
android:textColor="#999999"
android:textSize="@dimen/sp_12" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/dp_103"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_8"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<!-- res/layout/item_photo.xml -->
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/iv_photo"
android:layout_width="@dimen/dp_103"
android:layout_height="@dimen/dp_103"
android:scaleType="centerCrop"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:riv_corner_radius="@dimen/dp_5"
tools:src="@mipmap/default_avatar"/>
<com.github.mmin18.widget.RealtimeBlurView
android:layout_width="@dimen/dp_103"
android:layout_height="@dimen/dp_103"
android:id="@+id/tb_photo"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone"
/>
<View
android:id="@+id/v_checkbox"
android:layout_width="24dp"
android:layout_height="24dp"
android:background="@drawable/selector_custom_checkbox"
android:focusable="false"
android:clickable="true"
android:visibility="gone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,27 @@
<?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="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_24"
android:background="@drawable/bg_r48_bbffeb"
android:layout_marginStart="@dimen/dp_6"
android:layout_marginEnd="@dimen/dp_6"
android:gravity="center"
android:paddingStart="@dimen/dp_6"
android:paddingEnd="@dimen/dp_6"
android:paddingTop="@dimen/dp_2"
android:paddingBottom="@dimen/dp_2"
android:textColor="#006B4C"
android:textSize="@dimen/sp_14"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="简介" />
</LinearLayout>

View File

@@ -29,6 +29,25 @@
android:layout_marginTop="-20dp"
/>
<TextView
android:id="@+id/tv_gz"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_29"
android:layout_marginTop="@dimen/dp_19"
android:layout_marginEnd="@dimen/dp_6"
android:layout_toStartOf="@+id/tv_gs_sx"
android:background="@mipmap/gz"
/>
<TextView
android:id="@+id/tv_gs_sx"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_29"
android:layout_marginTop="@dimen/dp_19"
android:layout_marginEnd="@dimen/dp_12"
android:layout_alignParentEnd="true"
android:background="@mipmap/gsui"
/>
<TextView
android:id="@+id/tv_nick_name"
android:layout_width="wrap_content"
@@ -78,14 +97,24 @@
android:textColor="@color/color_FF999999"
android:textSize="@dimen/sp_12" />
<androidx.recyclerview.widget.RecyclerView
<!-- <androidx.recyclerview.widget.RecyclerView-->
android:id="@+id/recycle_view1"
<!-- android:id="@+id/recycle_view1"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="@dimen/dp_16"-->
<!-- android:layout_toRightOf="@+id/tv_age"-->
<!-- android:layout_marginStart="@dimen/dp_8"-->
<!-- android:layout_alignTop="@+id/tv_age"/>-->
<LinearLayout
android:id="@+id/ll_image_container"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_16"
android:layout_toRightOf="@+id/tv_age"
android:layout_marginStart="@dimen/dp_8"
android:layout_alignTop="@+id/tv_age"/>
android:layout_alignTop="@+id/tv_age"
android:orientation="horizontal"
/>
<TextView
android:id="@+id/tv_jj"
@@ -113,13 +142,5 @@
/>
</RelativeLayout>
</RelativeLayout>
</layout>