Files
yusheng-android/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/PolicyDialog.java

99 lines
3.8 KiB
Java
Raw Normal View History

2025-10-20 10:16:44 +08:00
package com.xscm.moduleutil.dialog;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.LayoutInflater;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.databinding.DataBindingUtil;
import com.alibaba.android.arouter.launcher.ARouter;
import com.blankj.utilcode.util.SpanUtils;
import com.xscm.moduleutil.R;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.databinding.DialogPolicBinding;
import com.xscm.moduleutil.utils.ARouteConstants;
/**
* 隐私协议
*/
public class PolicyDialog extends Dialog {
private final DialogPolicBinding policBinding;
private PolicyClickListener mPolicyClickListener;
public PolicyDialog(@NonNull Context context) {
super(context);
policBinding = DataBindingUtil.inflate(LayoutInflater.from(context), R.layout.dialog_polic, null, false);
policBinding.setClick(new PolicyClickProxy());
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
setContentView(policBinding.getRoot());
setCanceledOnTouchOutside(false);
initView();
}
private void initView() {
SpanUtils spanUtils = new SpanUtils();
ClickableSpan clickSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl()+"/api/Page/page_show?id=6" ).withString("title", "用户协议").navigation();
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
ds.setColor(Color.parseColor("#FFFFD6A2"));
ds.setUnderlineText(true);
}
};
ClickableSpan ysClickSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
ARouter.getInstance().build(ARouteConstants.H5).withString("url", CommonAppContext.getInstance().getCurrentEnvironment().getServerUrl()+"/api/Page/page_show?id=4").withString("title", "隐私协议").navigation();
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
ds.setColor(Color.parseColor("#FFFFD6A2"));
ds.setUnderlineText(true);
}
};
spanUtils.append("欢迎使用羽声!\n").append("在使用我们的产品和服务之前,请您先阅读并了解").append("《用户协议》").setClickSpan(clickSpan).append("").append("《隐私协议》").setClickSpan(ysClickSpan).append("。我们将严格按照上述协议为" +
"您提供服务,保护您的信息安全,点" +
"击“同意”即表示您已阅读并同意全部" +
"条款,可以继续使用我们的产品和服" +
"务。");
policBinding.tvText.setText(spanUtils.create());
policBinding.tvText.setMovementMethod(LinkMovementMethod.getInstance());
}
public void setPolicyClickListener(PolicyClickListener policyClickListener) {
this.mPolicyClickListener = policyClickListener;
}
public class PolicyClickProxy {
public void onAgreeClick() {
if (mPolicyClickListener != null) {
mPolicyClickListener.policyAgree();
}
}
public void onExit() {
if (mPolicyClickListener != null) {
mPolicyClickListener.policyExit();
}
}
}
public interface PolicyClickListener {
void policyAgree();
void policyExit();
}
}