1:修改房间activity

2:修改支付
This commit is contained in:
2025-10-10 09:10:42 +08:00
parent c125f78353
commit 61cd9616b9
103 changed files with 4822 additions and 3073 deletions

View File

@@ -61,5 +61,8 @@ dependencies {
//annotationProcessor
annotationProcessor 'com.alibaba:arouter-compiler:1.5.2'
implementation files('libs/WbCloudFaceLiveSdk-face-v6.6.2-8e4718fc.aar')
implementation files('libs/WbCloudNormal-v5.1.10-4e3e198.aar')
}
apply plugin: 'com.alibaba.arouter' //

Binary file not shown.

View File

@@ -39,7 +39,7 @@
android:exported="false"
android:launchMode="singleTask" />
<activity
android:name=".activity.RealName1Activity"
android:name=".activity.RealNameActivity"
android:exported="false" />
<activity
android:name=".activity.RevenueActivity"

View File

@@ -1,10 +1,13 @@
package com.example.modulevocal.activity;
import android.content.Intent;
import com.alibaba.android.arouter.launcher.ARouter;
import com.example.modulevocal.R;
import com.example.modulevocal.databinding.ActivityAboutUsBinding;
import com.xscm.moduleutil.activity.BaseAppCompatActivity;
import com.xscm.moduleutil.activity.WebViewActivity;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.widget.CommonAppConfig;
@@ -17,12 +20,21 @@ public class AboutUsActivity extends BaseAppCompatActivity<ActivityAboutUsBindin
mBinding.tvAppVersion.setText("Version " + CommonAppConfig.getInstance().getVersion());
mBinding.llYonghu.setOnClickListener(v -> {
ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "/api/Page/page_show?id=6").withString("title", "用户协议").navigation();
Intent intent = new Intent(this, WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "/api/Page/page_show?id=6");
intent.putExtra("title", "用户协议");
startActivity(intent);
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "/api/Page/page_show?id=6").withString("title", "用户协议").navigation();
});
mBinding.llYins.setOnClickListener(v -> {
ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "/api/Page/page_show?id=4").withString("title", "隐私协议").navigation();
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", "file:///android_asset/page_show.html").withString("title", "隐私协议").navigation();
Intent intent = new Intent(this, WebViewActivity.class);
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "/api/Page/page_show?id=4");
intent.putExtra("title", "隐私协议");
startActivity(intent);
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl() + "/api/Page/page_show?id=4").withString("title", "隐私协议").navigation();
});
}

View File

@@ -10,6 +10,7 @@ import com.example.modulevocal.conacts.WithdrawalConacts;
import com.example.modulevocal.databinding.ActivityBindCardBinding;
import com.example.modulevocal.presenter.WithdrawalPresenter;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.moduleutil.bean.BindDetail;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.WalletBean;
import com.xscm.moduleutil.bean.WalletConfig;
@@ -75,6 +76,11 @@ public class BindCardActivity extends BaseMvpActivity<WithdrawalPresenter, Activ
}
@Override
public void bindDetai(BindDetail bindDetail) {
}
@Override
protected void initData() {

View File

@@ -11,6 +11,7 @@ import com.example.modulevocal.databinding.ActivityBindCardDetailsBinding;
import com.example.modulevocal.presenter.WithdrawalPresenter;
import com.hjq.toast.ToastUtils;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.moduleutil.bean.BindDetail;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.WalletBean;
import com.xscm.moduleutil.bean.WalletConfig;
@@ -32,6 +33,7 @@ public class BindCardDetailsActivity extends BaseMvpActivity<WithdrawalPresenter
protected void initData() {
type=getIntent().getStringExtra("type");
MvpPre.bindDetai(SpUtil.getUserId()+"",type);
if (type.equals("1")){
mBinding.topBar.setTitle("微信绑卡");
mBinding.cet1.setVisibility(VISIBLE);
@@ -58,6 +60,7 @@ public class BindCardDetailsActivity extends BaseMvpActivity<WithdrawalPresenter
}
mBinding.tvSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -127,6 +130,47 @@ public class BindCardDetailsActivity extends BaseMvpActivity<WithdrawalPresenter
}
@Override
public void bindDetai(BindDetail bindDetail) {
if (bindDetail!=null){
if (type.equals("2")){
mBinding.cet1.setText(bindDetail.getAlipay_account());
return;
}
if (type.equals("3")){
mBinding.cet2.setText(bindDetail.getBank_card_number());
mBinding.cet3.setText(bindDetail.getBank_card());
mBinding.cet4.setText(bindDetail.getOpen_bank());
return;
}
}else {
if (type.equals("1")){
mBinding.topBar.setTitle("微信绑卡");
mBinding.cet1.setVisibility(VISIBLE);
mBinding.cet2.setVisibility(GONE);
mBinding.cet3.setVisibility(GONE);
mBinding.cet4.setVisibility(GONE);
mBinding.cet1.setHint("微信账户");
}else if (type.equals("2")){
mBinding.topBar.setTitle("支付宝绑卡");
mBinding.cet1.setVisibility(VISIBLE);
mBinding.cet2.setVisibility(GONE);
mBinding.cet3.setVisibility(GONE);
mBinding.cet4.setVisibility(GONE);
mBinding.cet1.setHint("支付宝账户");
} else if (type.equals("3")) {
mBinding.topBar.setTitle("银行卡绑卡");
mBinding.cet1.setVisibility(GONE);
mBinding.cet2.setVisibility(VISIBLE);
mBinding.cet3.setVisibility(VISIBLE);
mBinding.cet4.setVisibility(VISIBLE);
mBinding.cet2.setHint("银行卡号");
mBinding.cet3.setHint("所属银行");
mBinding.cet4.setHint("银行卡开户行");
}
}
}
@Override
protected WithdrawalPresenter bindPresenter() {

View File

@@ -0,0 +1,204 @@
package com.example.modulevocal.activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.ForegroundColorSpan;
import android.util.Log;
import android.view.View;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.blankj.utilcode.util.RegexUtils;
import com.example.modulevocal.R;
import com.example.modulevocal.conacts.RealNameConacts;
import com.example.modulevocal.databinding.ActivityRealNameBinding;
import com.example.modulevocal.presenter.RealNamePresenter;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.moduleutil.bean.RealNameBean;
import com.xscm.moduleutil.color.ThemeableDrawableUtils;
import com.xscm.moduleutil.dialog.ConfirmDialog;
import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.utils.ColorManager;
import com.xscm.moduleutil.utils.SpUtil;
import com.tencent.cloud.huiyansdkface.facelight.api.WbCloudFaceContant;
import com.tencent.cloud.huiyansdkface.facelight.api.WbCloudFaceVerifySdk;
import com.tencent.cloud.huiyansdkface.facelight.api.listeners.WbCloudFaceVerifyLoginListener;
import com.tencent.cloud.huiyansdkface.facelight.api.listeners.WbCloudFaceVerifyResultListener;
import com.tencent.cloud.huiyansdkface.facelight.api.result.WbFaceError;
import com.tencent.cloud.huiyansdkface.facelight.api.result.WbFaceVerifyResult;
import com.tencent.cloud.huiyansdkface.facelight.process.FaceVerifyStatus;
/**
*@author qx
*@data 2025/7/15
*@description: 实名认证
*/
@Route(path = ARouteConstants.REAL_NAME_ACTIVITY2)
public class RealNameActivity extends BaseMvpActivity<RealNamePresenter, ActivityRealNameBinding> implements RealNameConacts.View{
@Override
protected void initData() {
mBinding.topBar.setTitle("实名认证");
String fullText = "您知悉并同意应用提供者\n· 收集、使用您本人的身份信息和人脸图像\n· 向合法数据持有者核实您的身份信息\n· 本操作数据仅用于身份核实,安全可靠";
SpannableString spannable = new SpannableString(fullText);
int firstLineEnd = fullText.indexOf('\n');
if (firstLineEnd > 0) {
// 设置第一行字体大小和颜色
spannable.setSpan(
new AbsoluteSizeSpan(16, true), // 18sp基于 TextView 的 sp 值调整
0,
firstLineEnd,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
);
spannable.setSpan(
new ForegroundColorSpan(Color.BLACK),
0,
firstLineEnd,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
);
}
mBinding.tvAgreeTerms.setText(spannable);
mBinding.btnSubmit.setOnClickListener(this::onClick);
ThemeableDrawableUtils.setThemeableRoundedBackground(mBinding.btnSubmit, ColorManager.getInstance().getPrimaryColorInt(), 53);
mBinding.btnSubmit.setTextColor(ColorManager.getInstance().getButtonColorInt());
}
@Override
protected int getLayoutId() {
return R.layout.activity_real_name;
}
@Override
protected RealNamePresenter bindPresenter() {
return new RealNamePresenter(this, this);
}
@Override
public void realNameSuccess(RealNameBean msg) {
finish();
// Bundle data = new Bundle();
// WbCloudFaceVerifySdk.InputData inputData = new WbCloudFaceVerifySdk.InputData(
// msg.getFaceId(),
// msg.getOrderNo(),
// msg.getAppid(),
// msg.getApiVersion(),
// msg.getNonce(),
// msg.getUserid(),
// msg.getSign(),
// FaceVerifyStatus.Mode.GRADE,
// msg.getLicence());
// data.putSerializable(WbCloudFaceContant.INPUT_DATA, inputData);
// //设置是否打开语音提示,默认关闭,此处设置为关闭
// data.putBoolean(WbCloudFaceContant. PLAY_VOICE, true);
//
// //避免用户快速点击导致二次登录,二次拉起刷脸等操作引起问题
// WbCloudFaceVerifySdk.getInstance().
// initAdvSdk(RealNameActivity.this, data, new WbCloudFaceVerifyLoginListener() {
// @Override
// public void onLoginSuccess () {
// //登录成功,拉起 sdk 页面,由 FaceVerifyResultListener 返回刷脸结果
// WbCloudFaceVerifySdk.getInstance().startWbFaceVerifySdk(RealNameActivity.this, new WbCloudFaceVerifyResultListener() {
// @Override
// public void onFinish(WbFaceVerifyResult result) {
// if (result != null) {
// if (result.isSuccess()) {
// Log.d("@@@", "刷脸成功!");
// SpUtil.setRealName(true);
// MvpPre.realNameResult(result.getOrderNo());
//
// } else {
// Log.d("@@@", "刷脸失败!");
// queren1();
// }
// }
// //刷脸结束后,及时释放资源
// WbCloudFaceVerifySdk.getInstance().release();
//
// }
// });
// }
// @Override
// public void onLoginFailed (WbFaceError error){
// Log.d("@@@", "刷脸失败!");
// //刷脸结束后,及时释放资源
// WbCloudFaceVerifySdk.getInstance().release();
// queren1();
//
// }
// });
}
@Override
public void sendCodeSuccess() {
// queren();
finish();
}
private void queren() {
// 创建并显示确认对话框
new ConfirmDialog(this,
"温馨提示",
"恭喜您获得内测资格将获得10万金币",
"确认",
"",
v -> {
// 点击“确认”按钮时执行
finish();
},
v -> {
// 点击“取消”按钮时什么都不做
}, true, 0).show();
}
private void queren1() {
// 创建并显示确认对话框
new ConfirmDialog(this,
"温馨提示",
"实名未通过,重新实名",
"确认",
"",
v -> {
// 点击“确认”按钮时执行
finish();
},
v -> {
// 点击“取消”按钮时什么都不做
}, true, 0).show();
}
private void onClick(View view) {
if (view.getId()== R.id.btnSubmit){
if (mBinding.edName.getText().toString().isEmpty()){
com.blankj.utilcode.util.ToastUtils.showShort("请输入姓名");
return;
}
if (mBinding.edPassword.getText().toString().isEmpty()){
com.blankj.utilcode.util.ToastUtils.showShort("请输入身份证号");
return;
}
if (RegexUtils.isIDCard18Exact(mBinding.edPassword.getText().toString())) {
if (mBinding.btnSubmit.getText().toString().equals("确认")) {
// mBinding.stepNum1.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.num_11));
// mBinding.stepNum2.setBackground(getResources().getDrawable(com.xscm.moduleutil.R.mipmap.num_2));
//
MvpPre.realName(mBinding.edName.getText().toString(),mBinding.edPassword.getText().toString());
} else {
SpUtil.setRealName(true);
finish();
}
}else {
com.blankj.utilcode.util.ToastUtils.showShort("请输入正确的身份证号");
return;
}
}
}
}

View File

@@ -2,6 +2,9 @@ package com.example.modulevocal.activity;
import static com.xscm.moduleutil.utils.permission.PermissionUtils.TAG;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
@@ -12,8 +15,12 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
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.tencent.mm.opensdk.modelmsg.SendMessageToWX;
import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
import com.tencent.mm.opensdk.modelmsg.WXWebpageObject;
import com.xscm.moduleutil.adapter.PayMethodAdapter;
import com.xscm.moduleutil.adapter.BalanceRechargeAdapter;
import com.example.modulevocal.conacts.RechargeConactos;
@@ -111,6 +118,8 @@ public class RechargeActivity extends BaseMvpActivity<RechargePresenter, Activit
return;
}
MvpPre.appPay(SpUtil.getUserId() + "", money, coin, selectedItem.getType());
// openUrlInWeChat("https://wxjs.980city.com/pay/jspay/2025100920433985593/");
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", "https://wxjs.980city.com/pay/jspay/2025100920433985593/").navigation();
}
}
@@ -175,13 +184,50 @@ public class RechargeActivity extends BaseMvpActivity<RechargePresenter, Activit
if (appPay.getAli()!=null) {
PaymentUtil.payAlipay(this, appPay.getAli());
}else if (appPay.getWx()!=null){
IWXAPI wxapi = WXAPIFactory.createWXAPI(this, CommonAppContext.getInstance().getCurrentEnvironment().getWxAppId());
PaymentUtil.payWxMiniProgram2(wxapi,appPay);
}else if (appPay.getXlx()!=null){
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", appPay.getXlx()).navigation();
openInExternalBrowser(appPay.getXlx());
}
}
private void openInExternalBrowser(String url) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
// 确保在新任务中打开
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} catch (ActivityNotFoundException e) {
ToastUtils.showShort("无法找到浏览器应用");
}
}
private void openUrlInWeChat(String url) {
IWXAPI wxapi = WXAPIFactory.createWXAPI(this, CommonAppContext.getInstance().getCurrentEnvironment().getWxAppId());
if (!wxapi.isWXAppInstalled()) {
ToastUtils.showShort("未安装微信");
return;
}
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = url;
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = "支付页面";
msg.description = "点击打开支付页面";
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = String.valueOf(System.currentTimeMillis());
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession;
wxapi.sendReq(req);
}
public void onResp(BaseResp resp){
if(resp.getType()== ConstantsAPI.COMMAND_PAY_BY_WX){
Log.d(TAG,"onPayFinish,errCode="+resp.errCode);
@@ -208,6 +254,15 @@ public class RechargeActivity extends BaseMvpActivity<RechargePresenter, Activit
if (bindType.getWx_tl().getIs_pay_open().equals("1")) {
allData.add(bindType.getWx_tl());
}
if (bindType.getXlx_wx().getIs_pay_open().equals("1")){
allData.add(bindType.getXlx_wx());
}
if (bindType.getXlx_ali().getIs_pay_open().equals("1")){
allData.add(bindType.getXlx_ali());
}
if (bindType.getXlx_bank().getIs_pay_open().equals("1")){
allData.add(bindType.getXlx_bank());
}
bindTypeAdapter.setNewData(allData);
}

View File

@@ -1,6 +1,7 @@
package com.example.modulevocal.activity;
import android.content.Intent;
import android.view.View;
import com.alibaba.android.arouter.facade.annotation.Autowired;
@@ -11,6 +12,7 @@ import com.example.modulevocal.R;
import com.example.modulevocal.databinding.ActivityUnderageBinding;
import com.example.modulevocal.presenter.UnderagePresenter;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.moduleutil.activity.WebViewActivity;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.utils.ColorManager;
@@ -190,12 +192,18 @@ public class UnderageActivity extends BaseMvpActivity<UnderagePresenter, Activit
private void navigateToNextPage() {
// ToastUtils.showShort("密码设置成功");
ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/feedback/teenage?id=" + SpUtil.getToken())
.withString("type", "1").navigation();
// ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/feedback/teenage?id=" + SpUtil.getToken())
// .withString("type", "1").navigation();
Intent intent = new Intent(UnderageActivity.this, WebViewActivity.class);
intent.putExtra("type", "1");
intent.putExtra("url", CommonAppContext.getInstance().getCurrentEnvironment().getH5Url() + "/web/index.html#/pages/feedback/teenage?id=" + SpUtil.getToken());
startActivity(intent);
mBinding.verificationcodeview.setText("");
finish();
// 这里可以添加页面跳转逻辑
finishAll();
finishAll();
}
@Override

View File

@@ -19,6 +19,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.example.modulevocal.R;
import com.xscm.moduleutil.activity.WebViewActivity;
import com.xscm.moduleutil.adapter.PayMethodAdapter;
import com.example.modulevocal.conacts.WithdrawalConacts;
import com.example.modulevocal.databinding.ActivityWithdrawalBinding;
@@ -26,6 +27,7 @@ import com.example.modulevocal.presenter.WithdrawalPresenter;
import com.google.android.material.textfield.TextInputEditText;
import com.hjq.toast.ToastUtils;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.moduleutil.bean.BindDetail;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.WalletBean;
import com.xscm.moduleutil.bean.WalletConfig;
@@ -102,7 +104,11 @@ public class WithdrawalActivity extends BaseMvpActivity<WithdrawalPresenter, Act
});
mBinding.tvLhjy.setOnClickListener(v -> {
ARouter.getInstance().build(ARouteConstants.H5).withString("url",walletBean.getUrl()).withString("title", walletBean.getTitle()).navigation();
Intent intent = new Intent(this, WebViewActivity.class);
intent.putExtra("url", walletBean.getUrl());
intent.putExtra("title", walletBean.getTitle());
startActivity(intent);
// ARouter.getInstance().build(ARouteConstants.H5).withString("url",walletBean.getUrl()).withString("title", walletBean.getTitle()).navigation();
});
@@ -339,4 +345,9 @@ public class WithdrawalActivity extends BaseMvpActivity<WithdrawalPresenter, Act
public void withdrawalList(List<WithdrawalBean> list) {
}
@Override
public void bindDetai(BindDetail bindDetail) {
}
}

View File

@@ -10,6 +10,7 @@ import com.example.modulevocal.conacts.WithdrawalConacts;
import com.example.modulevocal.databinding.ActivityWithdrawalListBinding;
import com.example.modulevocal.presenter.WithdrawalPresenter;
import com.xscm.moduleutil.activity.BaseMvpActivity;
import com.xscm.moduleutil.bean.BindDetail;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.WalletBean;
import com.xscm.moduleutil.bean.WalletConfig;
@@ -89,4 +90,9 @@ public class WithdrawalListActivity extends BaseMvpActivity<WithdrawalPresenter,
public void withdrawalList(List<WithdrawalBean> list) {
adapter.setNewData(list);
}
@Override
public void bindDetai(BindDetail bindDetail) {
}
}

View File

@@ -18,6 +18,7 @@ import com.xscm.moduleutil.utils.ARouteConstants;
import com.xscm.moduleutil.utils.ColorManager;
import com.xscm.moduleutil.utils.ImageUtils;
import com.xscm.moduleutil.utils.MeHeadView;
import com.xscm.moduleutil.widget.ViewUtils;
import java.util.List;
/**
@@ -96,24 +97,38 @@ public class BlackAdapter extends BaseQuickAdapter<BlackUserBean, BaseViewHolder
List<String> images = item.getIcon(); // 获取图片列表
for (String url : images) {
if (url.contains("http")) {
ImageView imageView1 = new ImageView(getContext());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_74),
getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_17)
);
params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_5), 0); // 右边距
imageView1.setLayoutParams(params);
imageView1.setScaleType(ImageView.ScaleType.CENTER_CROP);
// 使用 Glide 加载图片
ImageUtils.loadHeadCC(url, imageView1);
llContainer.addView(imageView1);
}
if (images == null || images.isEmpty()) {
return; // 提前返回,减少嵌套层级
}
for (String url : images) {
if (!url.contains("http")) {
continue; // 跳过非HTTP链接
}
ImageView imageView1 = ViewUtils.createImageView(getContext(),url);
llContainer.addView(imageView1);
}
// for (String url : images) {
// if (url.contains("http")) {
// ImageView imageView1 = new ImageView(getContext());
// LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
// getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_74),
// getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_17)
// );
// params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_5), 0); // 右边距
// imageView1.setLayoutParams(params);
// imageView1.setScaleType(ImageView.ScaleType.CENTER_CROP);
//
// // 使用 Glide 加载图片
// ImageUtils.loadHeadCC(url, imageView1);
//
// llContainer.addView(imageView1);
// }
// }
headView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

View File

@@ -4,6 +4,7 @@ import android.app.Activity;
import com.xscm.moduleutil.activity.IPresenter;
import com.xscm.moduleutil.activity.IView;
import com.xscm.moduleutil.bean.BindDetail;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.WalletBean;
import com.xscm.moduleutil.bean.WalletConfig;
@@ -22,6 +23,8 @@ public final class WithdrawalConacts {
void withdrawal(String s);
void withdrawalList(List<WithdrawalBean> list);
void bindDetai(BindDetail bindDetail);
}
public interface IMePre extends IPresenter {
@@ -37,5 +40,7 @@ public final class WithdrawalConacts {
void withdrawal(String number,String type,String sms_code);
void withdrawalList(String page,String page_limit,String search_stime,String search_etime);
void bindDetai(String userId,String type);
}
}

View File

@@ -1,6 +1,7 @@
package com.example.modulevocal.fragment;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
@@ -35,9 +36,11 @@ import com.xscm.moduleutil.utils.SpUtil;
import com.tencent.imsdk.v2.V2TIMConversation;
import com.tencent.qcloud.tuicore.TUIConstants;
import com.tencent.qcloud.tuikit.tuichat.classicui.page.TUIC2CChatActivity;
import com.xscm.moduleutil.widget.ViewUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* @author qx
@@ -124,25 +127,39 @@ public class UserHomepageFragment extends BaseMvpFragment<UserHomepagePresenter,
LinearLayout llContainer = mBinding.headerInfo.llImageContainer;
llContainer.removeAllViews(); // 清空旧的 ImageView
List<String> images = userInfo.getIcon(); // 获取图片列表
// List<String> images = userInfo.getIcon(); // 获取图片列表
List<String> images = userInfo.getIcon();
if (images == null || images.isEmpty()) {
return; // 提前返回,减少嵌套层级
}
for (String url : images) {
if (url.contains("http")) {
ImageView imageView = new ImageView(getContext());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_74),
getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_17)
);
params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_5), 0); // 右边距
imageView.setLayoutParams(params);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
// 使用 Glide 加载图片
ImageUtils.loadHeadCC(url, imageView);
llContainer.addView(imageView);
if (!url.contains("http")) {
continue; // 跳过非HTTP链接
}
ImageView imageView = ViewUtils.createImageView(requireContext(),url);
llContainer.addView(imageView);
}
// for (String url : images) {
// if (url.contains("http")) {
// ImageView imageView = new ImageView(getContext());
// LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
// getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_74),
// getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_17)
// );
// params.setMargins(0, 0, getContext().getResources().getDimensionPixelSize(com.xscm.moduleutil.R.dimen.dp_5), 0); // 右边距
// imageView.setLayoutParams(params);
// imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
//
// // 使用 Glide 加载图片
// ImageUtils.loadHeadCC(url, imageView);
//
// llContainer.addView(imageView);
// }
// }
mBinding.headerInfo.recycleView2.setLayoutManager(new GridLayoutManager(getContext(), 3));
adapter = new BaseQuickAdapter<UserTagBean, BaseViewHolder>(R.layout.item_tag, userTagBeans) {

View File

@@ -3,6 +3,7 @@ package com.example.modulevocal.presenter;
import android.content.Context;
import com.example.modulevocal.conacts.WithdrawalConacts;
import com.xscm.moduleutil.bean.BindDetail;
import com.xscm.moduleutil.bean.BindType;
import com.xscm.moduleutil.bean.WalletBean;
import com.xscm.moduleutil.bean.WalletConfig;
@@ -10,13 +11,17 @@ import com.xscm.moduleutil.bean.WithdrawalBean;
import com.xscm.moduleutil.http.BaseObserver;
import com.xscm.moduleutil.presenter.BasePresenter;
import java.lang.ref.WeakReference;
import java.util.List;
import io.reactivex.disposables.Disposable;
public class WithdrawalPresenter extends BasePresenter<WithdrawalConacts.View> implements WithdrawalConacts.IMePre {
WithdrawalConacts.View mView;
public WithdrawalPresenter(WithdrawalConacts.View view, Context context) {
super(view, context);
this.mView = view;
}
@Override
@@ -29,6 +34,9 @@ public class WithdrawalPresenter extends BasePresenter<WithdrawalConacts.View> i
@Override
public void onNext(WalletBean walletBean) {
if (MvpRef == null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().wallet(walletBean);
}
});
@@ -44,6 +52,9 @@ public class WithdrawalPresenter extends BasePresenter<WithdrawalConacts.View> i
@Override
public void onNext(BindType bindType) {
if (MvpRef == null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().bindType(bindType);
}
});
@@ -59,6 +70,9 @@ public class WithdrawalPresenter extends BasePresenter<WithdrawalConacts.View> i
@Override
public void onNext(WalletConfig walletConfig) {
if (MvpRef == null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().getWalletConfig(walletConfig);
}
});
@@ -74,6 +88,9 @@ public class WithdrawalPresenter extends BasePresenter<WithdrawalConacts.View> i
@Override
public void onNext(String s) {
if (MvpRef == null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().bind();
}
});
@@ -107,6 +124,9 @@ public class WithdrawalPresenter extends BasePresenter<WithdrawalConacts.View> i
@Override
public void onNext(String s) {
if (MvpRef == null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().withdrawal(s);
}
});
@@ -122,7 +142,28 @@ public class WithdrawalPresenter extends BasePresenter<WithdrawalConacts.View> i
@Override
public void onNext(List<WithdrawalBean> withdrawalBeans) {
MvpRef.get().withdrawalList(withdrawalBeans);
if (MvpRef == null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().withdrawalList(withdrawalBeans);
}
});
}
@Override
public void bindDetai(String userId, String type) {
api.bindDetai(userId, type, new BaseObserver<BindDetail>() {
@Override
public void onSubscribe(Disposable d) {
addDisposable(d);
}
@Override
public void onNext(BindDetail bindDetail) {
if (MvpRef == null){
MvpRef=new WeakReference<>(mView);
}
MvpRef.get().bindDetai(bindDetail);
}
});
}

View File

@@ -0,0 +1,247 @@
<?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="com.example.modulevocal.activity.RealNameActivity">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.xscm.moduleutil.widget.CustomTopBar
android:id="@+id/top_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:id="@+id/steps"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_68"
android:layout_margin="@dimen/dp_16"
android:background="@drawable/bg_r9_fffff"
android:orientation="horizontal"
android:visibility="gone">
<!-- 第一步:验证手机号 -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<!-- 步骤编号 -->
<TextView
android:id="@+id/step_num_1"
android:layout_width="@dimen/dp_23"
android:layout_height="@dimen/dp_23"
android:layout_marginTop="@dimen/dp_8"
android:background="@mipmap/num_1"
android:gravity="center" />
<!-- 步骤描述 -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="@dimen/dp_8"
android:text="@string/fill_identity_info"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_14" />
</LinearLayout>
<!-- 分割线 -->
<View
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_marginTop="@dimen/dp_19"
android:layout_weight="1"
android:background="@mipmap/line9" />
<!-- 第二步:设置新密码 -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<!-- 步骤编号 -->
<TextView
android:id="@+id/step_num_2"
android:layout_width="@dimen/dp_23"
android:layout_height="@dimen/dp_23"
android:layout_marginTop="@dimen/dp_8"
android:background="@mipmap/num_22"
android:gravity="center" />
<!-- 步骤描述 -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="@dimen/dp_8"
android:text="@string/face_recognition"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_14" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/l_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:layout_width="match_parent"
android:layout_height="@dimen/dp_50"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
android:text="@string/real_name_authentication_tips"
android:textColor="@color/color_FF999999"
android:textSize="@dimen/sp_12" />
<RelativeLayout
android:id="@+id/rl_name"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_44"
android:layout_marginLeft="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginRight="@dimen/dp_16"
android:background="@drawable/bg_r16_ffeff2f8"
android:gravity="center">
<TextView
android:id="@+id/tv_send_name"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_14"
android:gravity="left|center"
android:text="@string/real_name"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_16"
tools:visibility="visible" />
<EditText
android:id="@+id/ed_name"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_28"
android:layout_centerInParent="true"
android:layout_marginLeft="13dp"
android:layout_marginRight="25dp"
android:layout_toRightOf="@+id/tv_send_name"
android:background="@android:color/transparent"
android:hint="@string/please_enter_real_name"
android:singleLine="true"
android:textColor="@color/black"
android:textColorHint="@color/color_FF9b9b9b"
android:textSize="@dimen/sp_16" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_code"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_44"
android:layout_marginLeft="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginRight="@dimen/dp_16"
android:background="@drawable/bg_r16_ffeff2f8"
android:gravity="center">
<TextView
android:id="@+id/tv_send_code"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/dp_14"
android:gravity="left|center"
android:text="@string/id_number"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_16"
tools:visibility="visible" />
<EditText
android:id="@+id/ed_password"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_28"
android:layout_centerInParent="true"
android:layout_marginLeft="13dp"
android:layout_marginRight="25dp"
android:layout_toRightOf="@+id/tv_send_code"
android:background="@android:color/transparent"
android:hint="@string/please_enter_id_number"
android:singleLine="true"
android:textColor="@color/black"
android:textColorHint="@color/color_FF9b9b9b"
android:textSize="@dimen/sp_16" />
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/l_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginTop="@dimen/dp_12"
android:gravity="center"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
android:layout_marginEnd="@dimen/dp_16"
android:text="为了保证本人操作,请进行人脸验证"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/real_img"
android:layout_gravity="center"/>
<TextView
android:id="@+id/tv_agree_terms"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_54"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginEnd="@dimen/dp_54"
android:lineSpacingExtra="@dimen/dp_5"
android:text="您知悉并同意应用提供者 \n· 收集、使用您本人的身份信息和人脸图像 \n· 向合法数据持有者核实您的身份信息 \n· 本操作数据仅用于身份核实,安全可靠"
android:textColor="@color/color_FF333333"
android:textSize="@dimen/sp_12" />
</LinearLayout>
<!-- 提交按钮 -->
<Button
android:id="@+id/btnSubmit"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_42"
android:layout_marginStart="@dimen/dp_38"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginEnd="@dimen/dp_38"
android:gravity="center"
android:text="确认"
android:textColor="@color/color_FF333333"
android:textSize="16sp" />
</LinearLayout>
</layout>