wjc
2025-01-14 3437ede62f248eaa4597c9475e2b1e426b67704d
2025年01月14日13:32:50
5个文件已修改
153 ■■■■■ 已修改文件
app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_confirm_cancel.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values-en/strings.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values-zh/strings.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/strings.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java
@@ -3,8 +3,16 @@
import android.content.Intent;
import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.text.TextPaint;
import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.linkpm.sdk.user.HDLLinkPMUser;
@@ -13,8 +21,13 @@
import com.hdl.photovoltaic.config.AppConfigManage;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.other.HdlCommonLogic;
import com.hdl.photovoltaic.other.HdlResidenceLogic;
import com.hdl.photovoltaic.ui.bean.HouseIdBean;
import com.hdl.photovoltaic.ui.me.WebActivity;
import com.hdl.photovoltaic.utils.LocalManageUtil;
import com.hdl.photovoltaic.utils.SharedPreUtils;
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog;
import java.util.List;
@@ -65,9 +78,40 @@
                });
            }
        } else {
            Intent intent = new Intent();
            intent.setClass(this, LoginActivity.class);
            openActivity(intent);
            //发布审核小米应用市场要求APP第一次启动提前提示《用户协议》和《隐私政策》才允许上线
            final String key = "is_login";
            boolean isLogin = SharedPreUtils.getBoolean(key);
            if (isLogin) {
                Intent intent = new Intent();
                intent.setClass(StartActivity.this, LoginActivity.class);
                openActivity(intent);
            } else {
                ConfirmationCancelDialog confirmationCancelDialog = new ConfirmationCancelDialog(this);
                confirmationCancelDialog.setTitle(getString(R.string.user_agreement_and_privacy_agreement));
                confirmationCancelDialog.setContent(getString(R.string.thank_you_for_using));
                confirmationCancelDialog.setConfirmation(getString(R.string.agree));
                confirmationCancelDialog.setCancel(getString(R.string.loading_on_agree));
                confirmationCancelDialog.show();
                setStringDifferentColors(confirmationCancelDialog.getContentTextView());
                confirmationCancelDialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() {
                    @Override
                    public void Cancel() {
                        SharedPreUtils.putBoolean(key, false);
                        finish();
                    }
                });
                confirmationCancelDialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() {
                    @Override
                    public void Confirm() {
                        SharedPreUtils.putBoolean(key, true);
                        Intent intent = new Intent();
                        intent.setClass(StartActivity.this, LoginActivity.class);
                        openActivity(intent);
                    }
                });
            }
        }
@@ -91,5 +135,96 @@
        overridePendingTransition(0, 0);
    }
    /**
     * 设置一串字符多种颜色以及点击事件
     *
     * @param textView 当前组件
     */
    private void setStringDifferentColors(TextView textView) {
        try {
            if (textView == null) {
                return;
            }
            String s = textView.getText().toString();
            if (!s.contains("《")) {
                return;
            }
            int startIndex1 = s.indexOf("《");
            int endIndex1 = s.indexOf("》") + 1;
            int startIndex2 = s.lastIndexOf("《");
            int endIndex2 = s.lastIndexOf("》") + 1;
            if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(LocalManageUtil.en)) {
                s = s.replace("《", "").replace("》", "");
                endIndex1 -= 1;
                startIndex2 -= 2;//移除"《"和"》"总长度发生变化,索引也改变;
                endIndex2 -= 4;//移除"《"和"》"总长度发生变化,索引也改变;
            }
            SpannableStringBuilder spannable = new SpannableStringBuilder(s);
            //设置文字的前景色
            if (textView.getTag() != null && textView.getTag().toString().equals("click")) {
                spannable.setSpan(new ClickableSpan() {
                    @Override
                    public void onClick(@NonNull View widget) {
                        //todo 需要跳转到服务协议界面
                        Intent intent = new Intent();
                        intent.putExtra("type", WebActivity.ServiceAgreement);
                        intent.setClass(_mActivity, WebActivity.class);
                        startActivity(intent);
                    }
                    @Override
                    public void updateDrawState(@NonNull TextPaint ds) {
                        super.updateDrawState(ds);
                        //设置字体颜色
                        ds.setColor(getResources().getColor(R.color.text_E6FFFFFF, null));
                        // 去掉下划线
                        ds.setUnderlineText(!UserConfigManage.getInstance().isZh());
                    }
                }, startIndex1, endIndex1, 0);
//                spannable.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), startIndex1, endIndex1, 0);
                spannable.setSpan(new ClickableSpan() {
                    @Override
                    public void onClick(@NonNull View widget) {
                        //todo 需要跳转到隐私界面
                        Intent intent = new Intent();
                        intent.putExtra("type", WebActivity.PrivacyAgreement);
                        intent.setClass(_mActivity, WebActivity.class);
                        startActivity(intent);
                    }
                    @Override
                    public void updateDrawState(@NonNull TextPaint ds) {
                        super.updateDrawState(ds);
                        //设置字体颜色
                        ds.setColor(getResources().getColor(R.color.text_E6FFFFFF, null));
                        // 去掉下划线
                        ds.setUnderlineText(!UserConfigManage.getInstance().isZh());
                    }
                }, startIndex2, endIndex2, 0);
//                spannable.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), startIndex2, endIndex2, 0);
            }
            textView.setText(spannable);
            //中途遇到点击后字体显示高亮,取消高亮
            textView.setHighlightColor(getResources().getColor(R.color.text_66FFFFFF, null));
            //最后设置可点击,必须实现,否则只能显示样式,无法实现点击效果
            textView.setMovementMethod(LinkMovementMethod.getInstance());
        } catch (Exception ignored) {
        }
    }
}
app/src/main/res/layout/dialog_confirm_cancel.xml
@@ -37,7 +37,7 @@
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="@dimen/dp_20"
            android:layout_marginTop="@dimen/dp_25"
            android:layout_marginTop="@dimen/dp_20"
            android:layout_marginEnd="@dimen/dp_20"
            android:layout_marginBottom="@dimen/dp_25"
            android:gravity="center"
@@ -45,6 +45,7 @@
            android:tag="click"
            android:textColor="@color/text_66FFFFFF"
            android:textSize="@dimen/text_14"
            android:lineSpacingExtra="@dimen/dp_2"
            app:layout_constraintBottom_toTopOf="@+id/dialog_confirm_bottom_line_ly"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
app/src/main/res/values-en/strings.xml
@@ -336,5 +336,8 @@
    <string name="camera_storage_instructions">Camera and Storage Permission Usage Instructions:</string>
    <string name="camera_storage_purpose">Used for scanning codes, taking photos, uploading pictures from albums, reading and writing photos on devices, and other scenarios</string>
    <string name="set_location_permissions">Please go to set open location permissions</string>
    <string name="agree">Agree</string>
    <string name="user_agreement_and_privacy_agreement">User Agreement and Privacy Agreement</string>
    <string name="thank_you_for_using">Thank you for using Xenterra Solar. During your use, we may collect and use some of your personal information. Please read carefully, and ensure that you fully understand our rules for handling your personal information. If you agree to the 《User Agreement》 and 《Privacy Agreement》, please click "Agree" to start using Xenterra Solar.</string>
</resources>
app/src/main/res/values-zh/strings.xml
@@ -333,6 +333,9 @@
    <string name="camera_storage_instructions">相机、存储权限使用说明:</string>
    <string name="camera_storage_purpose">用于扫码、拍照、从相册上传图片、读写设备上的照片等场景</string>
    <string name="set_location_permissions">请前往设置打开位置权限</string>
    <string name="agree">同意</string>
    <string name="user_agreement_and_privacy_agreement">用户协议和隐私协议</string>
    <string name="thank_you_for_using">感谢您使用新特锐能 App,在您使用过程中,我们可能会对您的部分个人信息进行收集、使用,请您仔细阅读《用户协议》和《隐私协议》,并确定完全了解我们对您个人信息的处理规则。如您同意用户协议和隐私协议,请点击“同意”,开始使用新特锐能 App。</string>
</resources>
app/src/main/res/values/strings.xml
@@ -333,6 +333,9 @@
    <string name="camera_storage_instructions">相机、存储权限使用说明:</string>
    <string name="camera_storage_purpose">用于扫码、拍照、从相册上传图片、读写设备上的照片等场景</string>
    <string name="set_location_permissions">请前往设置打开位置权限</string>
    <string name="agree">同意</string>
    <string name="user_agreement_and_privacy_agreement">用户协议和隐私协议</string>
    <string name="thank_you_for_using">感谢您使用新特锐能 App,在您使用过程中,我们可能会对您的部分个人信息进行收集、使用,请您仔细阅读《用户协议》和《隐私协议》,并确定完全了解我们对您个人信息的处理规则。如您同意用户协议和隐私协议,请点击“同意”,开始使用新特锐能 App。</string>
</resources>