PrivacyAgreementDialog.java 4.84 KB
package com.polysoft.nafmii.fragment.dialog;

import android.content.Intent;
import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.ForegroundColorSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.FragmentManager;

import com.alibaba.fastjson.JSON;
import com.polysoft.nafmii.bean.OpenUrlBean;
import com.polysoft.nafmii.utils.FastClickUtils;
import com.polysoft.nafmii.utils.ToastUtils;
import com.whaty.nafmii.BuildConfig;
import com.whaty.nafmii.R;
import com.whaty.nafmii.activity.IActivityEvent;
import com.whaty.nafmii.activity.OutsideWebviewActivity;

public class PrivacyAgreementDialog extends DialogFragment implements View.OnClickListener {
    private CheckBox mAgree;
    private boolean doubleClickFlag = false;

    public static void show(FragmentManager manager) {
        DialogFragment dialog = new PrivacyAgreementDialog();
        dialog.show(manager, "privacy");
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        super.setCancelable(false);
        View view = inflater.inflate(R.layout.privacy_dialog, container, false);
        view.findViewById(R.id.privacy_btn_cancel).setOnClickListener(this);
        view.findViewById(R.id.privacy_btn_ok).setOnClickListener(this);
        this.mAgree = view.findViewById(R.id.privacy_checkbox);
        this.setTextInfo(view.findViewById(R.id.privacy_text));
        return view;
    }


    void setTextInfo(TextView textView) {
        LinkText[] links = new LinkText[]{
                new LinkText("《隐私政策》", "#/user/privacy?type=1"),
                new LinkText("《服务协议》", "#/user/service?type=1"),
        };
        String textStr = textView.getText().toString();
        SpannableStringBuilder builder = new SpannableStringBuilder(textStr);
        for (LinkText link : links) {
            int index = textStr.indexOf(link.text);
            if (index < 0) {
                continue;
            }

            int colorId = getResources().getColor(R.color.theme_color, null);
            ForegroundColorSpan colorSapn = new ForegroundColorSpan(colorId);
            builder.setSpan(colorSapn, index, index + link.text.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

            ClickableSpan clickSpan = new ClickableSpan() {
                @Override
                public void onClick(@NonNull View widget) {
                    if (FastClickUtils.isFastClick()) {
                        link.gotoLinkUrl();
                    }
                }

                @Override
                public void updateDrawState(@NonNull TextPaint ds) {
                    super.updateDrawState(ds);
                    ds.setColor(colorId);
                    ds.setUnderlineText(false);
                }
            };
            builder.setSpan(clickSpan, index, index + link.text.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        }
        textView.setMovementMethod(LinkMovementMethod.getInstance());
        textView.setHighlightColor(getResources().getColor(android.R.color.transparent, null));
        textView.setText(builder);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.privacy_btn_cancel:
//                getActivity().finish();
                System.exit(0);
                break;
            case R.id.privacy_btn_ok:
                if (!this.mAgree.isChecked()) {
                    ToastUtils.showLong("请勾选同意");
                    return;
                }
                if (FastClickUtils.isFastClick(v)) {
                    dismiss();
                    IActivityEvent event = (IActivityEvent) getActivity();
                    event.dispatchEvent(IActivityEvent.EVENT_PRIVACY_ARGEE);
                }
                break;
        }
    }


    class LinkText {
        public final String text;
        public final String webUrl;

        LinkText(String text, String url) {
            this.text = text;
            this.webUrl = BuildConfig.ONLINE_URL + url;
        }

        void gotoLinkUrl() {
            Intent intent = new Intent(getActivity(), OutsideWebviewActivity.class);
            OpenUrlBean bean = new OpenUrlBean();
            bean.setLinkUrl(this.webUrl);
            bean.setTitle(this.text);
            bean.setNav("1");
            intent.putExtra("data", JSON.toJSONString(bean));
            getActivity().startActivity(intent);
        }
    }
}