瀏覽代碼

v1.0.0开发:登录注册页面开发

maijinpei 3 年之前
父節點
當前提交
c9b0b285f9
共有 41 個文件被更改,包括 1255 次插入216 次删除
  1. 17 2
      demo/src/main/java/com/demo/xinrui/DemoActivity.kt
  2. 二進制
      library_xinrui/libs/yyxx_support_1.0.1.jar
  3. 4 1
      library_xinrui/src/main/cpp/include/tool_kit.h
  4. 22 0
      library_xinrui/src/main/cpp/tool_kit.cpp
  5. 21 7
      library_xinrui/src/main/cpp/xinrui.cpp
  6. 2 0
      library_xinrui/src/main/java/com/yyrh/core/SDKDrive.java
  7. 4 4
      library_xinrui/src/main/java/com/yyrh/core/entity/ClickType.java
  8. 33 0
      library_xinrui/src/main/java/com/yyrh/core/entity/Session.java
  9. 16 0
      library_xinrui/src/main/java/com/yyrh/core/entity/SmsAction.java
  10. 12 1
      library_xinrui/src/main/java/com/yyrh/core/entity/bean/InitBean.java
  11. 10 0
      library_xinrui/src/main/java/com/yyrh/core/impl/charge/InAppBillingActivity.java
  12. 27 13
      library_xinrui/src/main/java/com/yyrh/core/impl/login/LoginActivity.java
  13. 97 3
      library_xinrui/src/main/java/com/yyrh/core/impl/login/fragment/AccountLauncherFragment.java
  14. 245 1
      library_xinrui/src/main/java/com/yyrh/core/impl/login/fragment/PhoneRegisterFragment.java
  15. 142 0
      library_xinrui/src/main/java/com/yyrh/core/impl/login/fragment/QuickRegisterFragment.java
  16. 1 0
      library_xinrui/src/main/java/com/yyrh/core/network/Host.java
  17. 47 2
      library_xinrui/src/main/java/com/yyrh/core/network/SdkRequest.java
  18. 7 0
      library_xinrui/src/main/java/com/yyrh/factory/SdkManager.java
  19. 0 2
      library_xinrui/src/main/java/com/yyrh/sdk/YyrhSdkManager.java
  20. 139 0
      library_xinrui/src/main/java/com/yyrh/ui/dialog/AgreementDialog.java
  21. 8 0
      library_xinrui/src/main/java/com/yyrh/ui/dialog/TipsToast.java
  22. 2 14
      library_xinrui/src/main/java/com/yyrh/ui/widget/EventEditText.java
  23. 1 13
      library_xinrui/src/main/java/com/yyrh/ui/widget/VerifyEditText.java
  24. 1 1
      library_xinrui/src/main/java/com/yyrh/utils/MMKVUtils.java
  25. 197 0
      library_xinrui/src/main/java/com/yyrh/utils/SessionUtils.java
  26. 42 30
      library_xinrui/src/main/java/com/yyrh/utils/TimeDownUtils.java
  27. 二進制
      library_xinrui/src/main/res/drawable-xhdpi/hnyy_hide_img.png
  28. 二進制
      library_xinrui/src/main/res/drawable-xhdpi/hnyy_return_img.png
  29. 二進制
      library_xinrui/src/main/res/drawable-xhdpi/hnyy_show_img.png
  30. 1 1
      library_xinrui/src/main/res/drawable/hnyy_btn_purple_bg.xml
  31. 1 1
      library_xinrui/src/main/res/drawable/hnyy_btn_white_bg.xml
  32. 1 1
      library_xinrui/src/main/res/drawable/hnyy_et_frame_focused_bg.xml
  33. 1 1
      library_xinrui/src/main/res/drawable/hnyy_et_frame_normal_bg.xml
  34. 43 0
      library_xinrui/src/main/res/layout/hnyy_agreement_dialog.xml
  35. 7 29
      library_xinrui/src/main/res/layout/hnyy_event_edit_text.xml
  36. 29 0
      library_xinrui/src/main/res/layout/hnyy_iab_activity.xml
  37. 0 2
      library_xinrui/src/main/res/layout/hnyy_login_account_launcher.xml
  38. 31 33
      library_xinrui/src/main/res/layout/hnyy_privacy_policy_dialog.xml
  39. 12 7
      library_xinrui/src/main/res/layout/hnyy_tips_dialog.xml
  40. 3 10
      library_xinrui/src/main/res/layout/hnyy_verify_edit_text.xml
  41. 29 37
      library_xinrui/src/main/res/values/styles.xml

+ 17 - 2
demo/src/main/java/com/demo/xinrui/DemoActivity.kt

@@ -11,11 +11,14 @@ import android.widget.LinearLayout
 import android.widget.ScrollView
 import android.widget.TextView
 import cn.yyxx.support.hawkeye.LogUtils
+import com.yyrh.core.entity.Session
 import com.yyrh.core.impl.login.LoginActivity
 import com.yyrh.sdk.SDKEntry
 import com.yyrh.sdk.callback.InitCallback
 import com.yyrh.sdk.callback.LoginCallback
 import com.yyrh.ui.dialog.TipsToast
+import com.yyrh.utils.SessionUtils
+import com.yyrh.utils.YYLog
 
 /**
  * @author #Suyghur.
@@ -31,8 +34,7 @@ class DemoActivity : Activity(), View.OnClickListener {
         Item(5, "05 角色升级上报"),
         Item(6, "06 测试测试"),
         Item(7, "07 测试测试"),
-
-        )
+    )
 
     private lateinit var layout: LinearLayout
     private lateinit var mTextView: TextView
@@ -134,6 +136,19 @@ class DemoActivity : Activity(), View.OnClickListener {
 
                     })
                 }
+                2 -> {
+//                    for (i in 0 until 6) {
+//                        val session = Session()
+//                        session.userId = "user_id_$i"
+//                        session.userName = "user_name_$i"
+//                        session.pwd = "pwd123456"
+//                        SessionUtils.getInstance().saveSession(session)
+//                    }
+                    val list = SessionUtils.getInstance().localSessionLimit3
+                    for (item in list) {
+                        YYLog.d(item.toString())
+                    }
+                }
                 6 -> {
                     LoginActivity.start(this@DemoActivity, false, false) { code, result ->
 

二進制
library_xinrui/libs/yyxx_support_1.0.1.jar


+ 4 - 1
library_xinrui/src/main/cpp/include/tool_kit.h

@@ -36,13 +36,16 @@ public:
 
     static std::string GetAndroidDeviceId(JNIEnv *env, jobject context);
 
+    static jstring RsaEncrypt(JNIEnv *env, const char *data);
+
     static std::string ToJsonString(const Json::Value &root);
 
     static Json::Value ToJsonObject(const std::string &json);
 
     static std::string GetJsonSortSignature(const Json::Value &root);
 
-    static std::string  GenerateRandString(int len);
+    static std::string GenerateRandString(int len);
+
 
 };
 

+ 22 - 0
library_xinrui/src/main/cpp/tool_kit.cpp

@@ -16,6 +16,9 @@ static const unsigned char CHAR_SET[62] = {'0', '1', '2', '3', '4', '5', '6', '7
                                            'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
                                            'Y', 'Z'};
 
+#define RSA_PUBLIC_KEY "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3eXf1JxdFtx6c8AJTdlSverL8WqRE11yFB6Q+GbQeEVXjSCgQN48qePat7mXbH4LAtjaSEqXHruP4hJO8777wYtEKNKIN2VZgWQElrllAuAtaHyA+UGKwulOKmkR8k1Oxmfd46fnQBwzy+Giab4lqQRQAObCT0QtUrlrsU1U+zwIDAQAB"
+
+
 jbyteArray ToolKit::GetJbyteArray(JNIEnv *Env, const char *src) {
     return nullptr;
 }
@@ -158,6 +161,24 @@ std::string ToolKit::GetAndroidDeviceId(JNIEnv *env, jobject context) {
 }
 
 
+jstring ToolKit::RsaEncrypt(JNIEnv *env, const char *data) {
+    jclass clz = env->FindClass("cn/yyxx/support/encryption/rsa/RsaUtils");
+    if (clz == nullptr) {
+        LOGE("RsaUtils is nullptr !!!");
+        return nullptr;
+    }
+    const char *method_name = "encryptByPublicKey";
+    const char *sig = "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;";
+    jmethodID mid = env->GetStaticMethodID(clz, method_name, sig);
+    jstring raw = env->NewStringUTF(data);
+    jstring key = env->NewStringUTF(RSA_PUBLIC_KEY);
+    auto result = (jstring) env->CallStaticObjectMethod(clz, mid, raw, key);
+    env->DeleteLocalRef(clz);
+    env->DeleteLocalRef(raw);
+    env->DeleteLocalRef(key);
+    return result;
+}
+
 std::string ToolKit::ToJsonString(const Json::Value &root) {
     Json::StreamWriterBuilder builder;
     std::ostringstream oss;
@@ -202,3 +223,4 @@ std::string ToolKit::GenerateRandString(int len) {
 
 
 
+

+ 21 - 7
library_xinrui/src/main/cpp/xinrui.cpp

@@ -53,13 +53,18 @@ jstring InvokeJob(JNIEnv *env, jobject clz, jstring data) {
         root[member] = CommMap::GetInstance()->comm_params[member];
     }
     // 加入时间戳
-    root["time"] = std::to_string(ts);
+    std::string timestamp = std::to_string(ts);
     std::string sort_signature = ToolKit::GetJsonSortSignature(root);
 
-    sort_signature.append(API_KEY);
+    // time不参与排序,放到签名串最后一个
+    sort_signature.append("&time=").append(timestamp).append(API_KEY);
+
+    YYLog::D(env, "before md5: " + sort_signature);
     std::string sign = md5(sort_signature);
 
+    root["time"] = timestamp;
     root["sign"] = sign;
+
     std::string random_str = ToolKit::GenerateRandString(5);
     std::string request_data = random_str.append(ToolKit::ToJsonString(root));
     jstring result = AesKit::Encrypt(env, request_data.c_str());
@@ -85,13 +90,22 @@ jstring ParseJob(JNIEnv *env, jobject clz, jstring data) {
     return result;
 }
 
+jstring RsaEncrypt(JNIEnv *env, jobject clz, jstring data) {
+    const char *_data = env->GetStringUTFChars(data, JNI_FALSE);
+    jstring result = ToolKit::RsaEncrypt(env, _data);
+    if (_data) {
+        env->ReleaseStringUTFChars(data, _data);
+    }
+    return result;
+}
 
 static JNINativeMethod gMethods[] = {
-        {"initDrive", "(Landroid/content/Context;)V",            (void *) InitSdkDrive},
-        {"setParam",  "(Ljava/lang/String;Ljava/lang/String;)V", (void *) SetParam},
-        {"getParam",  "(Ljava/lang/String;)Ljava/lang/String;",  (void *) GetParam},
-        {"invokeJob", "(Ljava/lang/String;)Ljava/lang/String;",  (void *) InvokeJob},
-        {"parseJob",  "(Ljava/lang/String;)Ljava/lang/String;",  (void *) ParseJob}
+        {"initDrive",  "(Landroid/content/Context;)V",            (void *) InitSdkDrive},
+        {"setParam",   "(Ljava/lang/String;Ljava/lang/String;)V", (void *) SetParam},
+        {"getParam",   "(Ljava/lang/String;)Ljava/lang/String;",  (void *) GetParam},
+        {"invokeJob",  "(Ljava/lang/String;)Ljava/lang/String;",  (void *) InvokeJob},
+        {"parseJob",   "(Ljava/lang/String;)Ljava/lang/String;",  (void *) ParseJob},
+        {"RsaEncrypt", "(Ljava/lang/String;)Ljava/lang/String;",  (void *) RsaEncrypt}
 };
 
 JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {

+ 2 - 0
library_xinrui/src/main/java/com/yyrh/core/SDKDrive.java

@@ -30,6 +30,8 @@ public final class SDKDrive {
 
     public native String parseJob(String data);
 
+    public native String RsaEncrypt(String data);
+
     private static final class SDKDriveHolder {
         private static final SDKDrive INSTANCE = new SDKDrive();
     }

+ 4 - 4
library_xinrui/src/main/java/com/yyrh/core/entity/ClickType.java

@@ -16,8 +16,8 @@ public @interface ClickType {
     int ACTION_REGISTER = 1003;
     int ACTION_QUICK_REGISTER = 1004;
     int ACTION_PHONE_REGISTER = 1005;
-
-    int ACTION_CHECK = 1006;
-    int ACTION_AGREEMENT = 1007;
-    int ACTION_PRIVACY = 1008;
+    int ACTION_GET_CAPTCHA = 1006;
+    int ACTION_CHECK = 1007;
+    int ACTION_AGREEMENT = 1008;
+    int ACTION_PRIVACY = 1009;
 }

+ 33 - 0
library_xinrui/src/main/java/com/yyrh/core/entity/Session.java

@@ -1,8 +1,41 @@
 package com.yyrh.core.entity;
 
+import org.json.JSONObject;
+
 /**
  * @author #Suyghur.
  * Created on 2021/10/19
  */
 public class Session {
+
+    public String userId = "";
+    public String userName = "";
+    public String pwd = "";
+
+    public void reset() {
+        userId = "";
+        userName = "";
+        pwd = "";
+    }
+
+    public JSONObject toJsonObject() {
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("user_id", userId);
+            jsonObject.put("user_name", userName);
+            jsonObject.put("pwd", pwd);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return jsonObject;
+    }
+
+    @Override
+    public String toString() {
+        return "Session{" +
+                "userId='" + userId + '\'' +
+                ", userName='" + userName + '\'' +
+                ", pwd='" + pwd + '\'' +
+                '}';
+    }
 }

+ 16 - 0
library_xinrui/src/main/java/com/yyrh/core/entity/SmsAction.java

@@ -0,0 +1,16 @@
+package com.yyrh.core.entity;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * @author #Suyghur.
+ * Created on 2021/10/20
+ */
+@Retention(RetentionPolicy.SOURCE)
+public @interface SmsAction {
+
+    String REGISTER = "register";
+    String MODIFY_PWD = "modify_pwd";
+    String BIND_PHONE="bind_phone";
+}

+ 12 - 1
library_xinrui/src/main/java/com/yyrh/core/entity/bean/InitBean.java

@@ -68,5 +68,16 @@ public class InitBean {
         return bean;
     }
 
-
+    @Override
+    public String toString() {
+        return "InitBean{" +
+                "sdkLogin=" + sdkLogin +
+                ", h5WebHost='" + h5WebHost + '\'' +
+                ", bswitch=" + bswitch +
+                ", regTabs=" + regTabs +
+                ", agreementPrivacy='" + agreementPrivacy + '\'' +
+                ", serviceCenter='" + serviceCenter + '\'' +
+                ", agreementUser='" + agreementUser + '\'' +
+                '}';
+    }
 }

+ 10 - 0
library_xinrui/src/main/java/com/yyrh/core/impl/charge/InAppBillingActivity.java

@@ -0,0 +1,10 @@
+package com.yyrh.core.impl.charge;
+
+import android.support.v4.app.FragmentActivity;
+
+/**
+ * @author #Suyghur.
+ * Created on 2021/10/20
+ */
+public class InAppBillingActivity extends FragmentActivity {
+}

+ 27 - 13
library_xinrui/src/main/java/com/yyrh/core/impl/login/LoginActivity.java

@@ -1,6 +1,7 @@
 package com.yyrh.core.impl.login;
 
 import android.app.Activity;
+import android.app.Dialog;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Build;
@@ -14,12 +15,12 @@ import android.view.View;
 import android.view.WindowManager;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.EditText;
-import android.widget.FrameLayout;
 
 import com.yyrh.core.impl.login.fragment.AccountLauncherFragment;
 import com.yyrh.core.impl.login.fragment.PhoneRegisterFragment;
 import com.yyrh.core.impl.login.fragment.QuickRegisterFragment;
 import com.yyrh.core.internal.IImplCallback;
+import com.yyrh.ui.dialog.AgreementDialog;
 
 import java.util.LinkedList;
 
@@ -33,11 +34,14 @@ import cn.yyxx.support.ResUtils;
 public class LoginActivity extends FragmentActivity {
 
     private static boolean isLandscape = false;
-    private FrameLayout rootContainer;
-    private Fragment accountLauncherFragment, quickRegisterFragment, phoneRegisterFragment;
+    private AccountLauncherFragment accountLauncherFragment;
+    private QuickRegisterFragment quickRegisterFragment;
+    private PhoneRegisterFragment phoneRegisterFragment;
     private final LinkedList<String> fragmentStack = new LinkedList<>();
     private String currentFragmentTag;
 
+    private Dialog agreementDialog;
+
     public static void start(Activity activity, boolean autoLogin, boolean isLand, IImplCallback callback) {
         activity.startActivity(new Intent(activity, LoginActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
     }
@@ -59,8 +63,6 @@ public class LoginActivity extends FragmentActivity {
         if (!isLandscape) {
             AndroidBug5497Workaround.assistActivity(this);
         }
-
-        rootContainer = findViewById(ResUtils.getResId(this, "hnyy_login_container", "id"));
         initFragment();
     }
 
@@ -94,10 +96,6 @@ public class LoginActivity extends FragmentActivity {
     }
 
     public void switchFragment(Fragment fragment, String tag) {
-        if (fragmentStack == null) {
-            return;
-        }
-
         if (fragmentStack.contains(tag)) {
             //栈里最后一个与tag相同才执行删除
             if (fragmentStack.size() > 1 && !fragmentStack.getLast().equals(tag)) {
@@ -126,6 +124,17 @@ public class LoginActivity extends FragmentActivity {
         transaction.commitAllowingStateLoss();
     }
 
+    public void showAgreementDialog(String url) {
+        if (agreementDialog != null) {
+            if (agreementDialog.isShowing()) {
+                agreementDialog.dismiss();
+            }
+            agreementDialog = null;
+        }
+        agreementDialog = new AgreementDialog(this, url, false);
+        agreementDialog.show();
+    }
+
 
     @Override
     public boolean dispatchTouchEvent(MotionEvent ev) {
@@ -192,10 +201,15 @@ public class LoginActivity extends FragmentActivity {
 
     @Override
     public void onBackPressed() {
-        if (fragmentStack != null && !fragmentStack.isEmpty() && fragmentStack.size() > 1) {
-//            if (fragmentStack.getLast().equals(WKLoginFragmentTag.ACCOUNT_LOGIN)) {
-//                //隐藏账号列表
-//            }
+        if (!fragmentStack.isEmpty() && fragmentStack.size() > 1) {
+            switch (fragmentStack.getLast()) {
+                case LoginFragmentTag.QUICK_REGISTER:
+                    quickRegisterFragment.onBack();
+                    break;
+                case LoginFragmentTag.PHONE_REGISTER:
+                    phoneRegisterFragment.onBack();
+                    break;
+            }
 
             fragmentStack.removeLast();
             String tag = fragmentStack.getLast();

+ 97 - 3
library_xinrui/src/main/java/com/yyrh/core/impl/login/fragment/AccountLauncherFragment.java

@@ -3,6 +3,8 @@ package com.yyrh.core.impl.login.fragment;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
+import android.text.InputType;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -11,9 +13,19 @@ import android.widget.ImageView;
 import android.widget.TextView;
 
 import com.yyrh.core.entity.ClickType;
+import com.yyrh.core.entity.ResultInfo;
+import com.yyrh.core.entity.Session;
 import com.yyrh.core.impl.login.LoginActivity;
 import com.yyrh.core.impl.login.LoginFragmentTag;
+import com.yyrh.core.internal.IRequestCallback;
+import com.yyrh.core.network.SdkRequest;
+import com.yyrh.factory.SdkManager;
+import com.yyrh.ui.dialog.TipsToast;
 import com.yyrh.ui.widget.EventEditText;
+import com.yyrh.utils.SessionUtils;
+
+import org.json.JSONException;
+import org.json.JSONObject;
 
 import cn.yyxx.support.ResUtils;
 
@@ -29,8 +41,10 @@ public class AccountLauncherFragment extends Fragment implements View.OnClickLis
     private Button btnLauncher, btnRegister;
     private ImageView ivCheck;
     private TextView tvAgreement, tvPrivacy;
-    private int imgCheck, imgUnckeck, imgShow, imgHide;
+    private int imgCheck, imgUncheck, imgShow, imgHide;
     private boolean check = false;
+    private boolean showText = false;
+
 
     @Nullable
     @Override
@@ -49,7 +63,7 @@ public class AccountLauncherFragment extends Fragment implements View.OnClickLis
     private void initView(View view) {
 
         imgCheck = ResUtils.getResId(getActivity(), "hnyy_check_img", "drawable");
-        imgUnckeck = ResUtils.getResId(getActivity(), "hnyy_uncheck_img", "drawable");
+        imgUncheck = ResUtils.getResId(getActivity(), "hnyy_uncheck_img", "drawable");
         imgShow = ResUtils.getResId(getActivity(), "hnyy_show_img", "drawable");
         imgHide = ResUtils.getResId(getActivity(), "hnyy_hide_img", "drawable");
 
@@ -57,11 +71,30 @@ public class AccountLauncherFragment extends Fragment implements View.OnClickLis
         eetAccount.getLeftImageView().setBackgroundResource(ResUtils.getResId(getActivity(), "hnyy_account_img", "drawable"));
         eetAccount.getLeftImageView().setVisibility(View.VISIBLE);
         eetAccount.getEditText().setHint("请输入账号");
+        eetAccount.getEditText().setText("test1231");
 
         eetPwd = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_eet_pwd", "id"));
         eetPwd.getLeftImageView().setBackgroundResource(ResUtils.getResId(getActivity(), "hnyy_pwd_img", "drawable"));
         eetPwd.getLeftImageView().setVisibility(View.VISIBLE);
         eetPwd.getEditText().setHint("请输入密码");
+        eetPwd.getEditText().setText("a123456");
+        eetPwd.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);
+        eetPwd.getRightImageView().setBackgroundResource(imgShow);
+        eetPwd.getRightImageView().setVisibility(View.VISIBLE);
+        eetPwd.getRightImageView().setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (!showText) {
+                    showText = true;
+                    eetPwd.getRightImageView().setBackgroundResource(imgHide);
+                    eetPwd.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
+                } else {
+                    showText = false;
+                    eetPwd.getRightImageView().setBackgroundResource(imgShow);
+                    eetPwd.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);
+                }
+            }
+        });
 
         btnLauncher = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_btn_launcher", "id"));
         btnLauncher.setOnClickListener(this);
@@ -72,33 +105,94 @@ public class AccountLauncherFragment extends Fragment implements View.OnClickLis
         btnRegister.setTag(ClickType.ACTION_QUICK_REGISTER);
 
         ivCheck = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_iv_check", "id"));
+        ivCheck.setBackgroundResource(imgUncheck);
         ivCheck.setOnClickListener(this);
         ivCheck.setTag(ClickType.ACTION_CHECK);
 
+        tvAgreement = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_tv_agreement", "id"));
+        tvAgreement.setOnClickListener(this);
+        tvAgreement.setTag(ClickType.ACTION_AGREEMENT);
+
+        tvPrivacy = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_tv_privacy", "id"));
+        tvPrivacy.setOnClickListener(this);
+        tvPrivacy.setTag(ClickType.ACTION_PRIVACY);
+
     }
 
     private void changeCheck() {
         if (check) {
             check = false;
-            ivCheck.setBackgroundResource(imgUnckeck);
+            ivCheck.setBackgroundResource(imgUncheck);
         } else {
             check = true;
             ivCheck.setBackgroundResource(imgCheck);
         }
     }
 
+    private void accountLauncher() {
+        final String userName = eetAccount.getEditText().getText().toString();
+        final String pwd = eetPwd.getEditText().getText().toString();
+        if (TextUtils.isEmpty(userName)) {
+            TipsToast.showErrorMsg(getActivity(), "用户名不能为空");
+            return;
+        }
+        if (TextUtils.isEmpty(pwd)) {
+            TipsToast.showErrorMsg(getActivity(), "密码不能为空");
+            return;
+        }
+        if (!check) {
+            TipsToast.showErrorMsg(getActivity(), "请您先勾选同意下方协议");
+            return;
+        }
+        SdkRequest.accountLauncher(getActivity(), userName, pwd, new IRequestCallback() {
+            @Override
+            public void onResponse(ResultInfo resultInfo) {
+                if (resultInfo.code == 1) {
+                    try {
+                        JSONObject jsonObject = new JSONObject(resultInfo.data);
+                        Session session = new Session();
+                        session.userId = jsonObject.getString("channel_uid");
+                        session.userName = userName;
+                        session.pwd = pwd;
+                        SessionUtils.getInstance().saveSession(session);
+                    } catch (JSONException e) {
+                        e.printStackTrace();
+                    }
+                    TipsToast.showSuccessMsg(getActivity(), resultInfo.msg);
+                    getActivity().finish();
+                } else {
+                    String msg = resultInfo.msg;
+                    if (TextUtils.isEmpty(msg)) {
+                        msg = "登录发生异常,请重试";
+                    }
+                    TipsToast.showErrorMsg(getActivity(), msg);
+                }
+            }
+        });
+    }
+
+
     @Override
     public void onClick(View v) {
         if (v == null) {
             return;
         }
         switch ((Integer) v.getTag()) {
+            case ClickType.ACTION_LAUNCHER:
+                accountLauncher();
+                break;
             case ClickType.ACTION_QUICK_REGISTER:
                 loginImpl.switchFragment(LoginFragmentTag.QUICK_REGISTER);
                 break;
             case ClickType.ACTION_CHECK:
                 changeCheck();
                 break;
+            case ClickType.ACTION_AGREEMENT:
+                loginImpl.showAgreementDialog(SdkManager.defaultManager().initBean.agreementPrivacy);
+                break;
+            case ClickType.ACTION_PRIVACY:
+                loginImpl.showAgreementDialog(SdkManager.defaultManager().initBean.agreementUser);
+                break;
         }
     }
 }

+ 245 - 1
library_xinrui/src/main/java/com/yyrh/core/impl/login/fragment/PhoneRegisterFragment.java

@@ -1,14 +1,37 @@
 package com.yyrh.core.impl.login.fragment;
 
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
+import android.text.InputType;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
 
+import com.yyrh.core.entity.ClickType;
+import com.yyrh.core.entity.ResultInfo;
+import com.yyrh.core.entity.Session;
+import com.yyrh.core.entity.SmsAction;
+import com.yyrh.core.impl.login.LoginActivity;
+import com.yyrh.core.internal.IRequestCallback;
+import com.yyrh.core.network.SdkRequest;
+import com.yyrh.factory.SdkManager;
+import com.yyrh.ui.dialog.TipsToast;
 import com.yyrh.ui.widget.EventEditText;
 import com.yyrh.ui.widget.VerifyEditText;
+import com.yyrh.utils.SessionUtils;
+import com.yyrh.utils.TimeDownUtils;
+
+import org.json.JSONException;
+import org.json.JSONObject;
 
 import cn.yyxx.support.ResUtils;
 
@@ -19,13 +42,34 @@ import cn.yyxx.support.ResUtils;
 public class PhoneRegisterFragment extends Fragment implements View.OnClickListener {
 
     private View view;
+    private LoginActivity loginImpl;
     private EventEditText eetPhone, eetPwd;
     private VerifyEditText vetSms;
+    private Button btnRegister;
+    private ImageView ivCheck;
+    private TextView tvAgreement, tvPrivacy;
+    private int imgCheck, imgUncheck, imgShow, imgHide;
+    private boolean check = false;
+    private boolean showText = false;
+
+    private final Handler handler = new Handler(Looper.getMainLooper()) {
+        @Override
+        public void handleMessage(@NonNull Message msg) {
+            if (msg.what == 101) {
+                //倒计时
+                changeTimeView((Integer) msg.obj);
+            }
+        }
+    };
 
     @Nullable
     @Override
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         super.onCreateView(inflater, container, savedInstanceState);
+        if (getActivity() instanceof LoginActivity) {
+            loginImpl = (LoginActivity) getActivity();
+        }
+
         if (view == null) {
             view = inflater.inflate(ResUtils.getResId(getActivity(), "hnyy_login_phone_register", "layout"), container, false);
             initView(view);
@@ -35,6 +79,11 @@ public class PhoneRegisterFragment extends Fragment implements View.OnClickListe
 
     private void initView(View view) {
 
+        imgCheck = ResUtils.getResId(getActivity(), "hnyy_check_img", "drawable");
+        imgUncheck = ResUtils.getResId(getActivity(), "hnyy_uncheck_img", "drawable");
+        imgShow = ResUtils.getResId(getActivity(), "hnyy_show_img", "drawable");
+        imgHide = ResUtils.getResId(getActivity(), "hnyy_hide_img", "drawable");
+
         eetPhone = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_eet_phone", "id"));
         eetPhone.getLeftImageView().setBackgroundResource(ResUtils.getResId(getActivity(), "hnyy_phone_img", "drawable"));
         eetPhone.getLeftImageView().setVisibility(View.VISIBLE);
@@ -46,17 +95,212 @@ public class PhoneRegisterFragment extends Fragment implements View.OnClickListe
         vetSms.getEditText().setHint("请输入验证码");
         vetSms.getRightTextView().setText("获取验证码");
         vetSms.getRightTextView().setVisibility(View.VISIBLE);
+        vetSms.getRightTextView().setOnClickListener(this);
+        vetSms.getRightTextView().setTag(ClickType.ACTION_GET_CAPTCHA);
+
 
         eetPwd = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_eet_pwd", "id"));
         eetPwd.getLeftImageView().setBackgroundResource(ResUtils.getResId(getActivity(), "hnyy_pwd_img", "drawable"));
         eetPwd.getLeftImageView().setVisibility(View.VISIBLE);
         eetPwd.getEditText().setHint("请输入密码");
+        eetPwd.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);
+        eetPwd.getRightImageView().setBackgroundResource(imgShow);
+        eetPwd.getRightImageView().setVisibility(View.VISIBLE);
+        eetPwd.getRightImageView().setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (!showText) {
+                    showText = true;
+                    eetPwd.getRightImageView().setBackgroundResource(imgHide);
+                    eetPwd.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
+                } else {
+                    showText = false;
+                    eetPwd.getRightImageView().setBackgroundResource(imgShow);
+                    eetPwd.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);
+                }
+            }
+        });
+
+        btnRegister = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_btn_register", "id"));
+        btnRegister.setOnClickListener(this);
+        btnRegister.setTag(ClickType.ACTION_REGISTER);
+
+        ivCheck = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_iv_check", "id"));
+        ivCheck.setBackgroundResource(imgUncheck);
+        ivCheck.setOnClickListener(this);
+        ivCheck.setTag(ClickType.ACTION_CHECK);
 
 
+        tvAgreement = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_tv_agreement", "id"));
+        tvAgreement.setOnClickListener(this);
+        tvAgreement.setTag(ClickType.ACTION_AGREEMENT);
+
+        tvPrivacy = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_tv_privacy", "id"));
+        tvPrivacy.setOnClickListener(this);
+        tvPrivacy.setTag(ClickType.ACTION_PRIVACY);
+    }
+
+    private void changeCheck() {
+        if (check) {
+            check = false;
+            ivCheck.setBackgroundResource(imgUncheck);
+        } else {
+            check = true;
+            ivCheck.setBackgroundResource(imgCheck);
+        }
+    }
+
+    private void getCaptcha() {
+
+        String phone = eetPhone.getEditText().getText().toString();
+        if (TextUtils.isEmpty(phone)) {
+            TipsToast.showErrorMsg(getActivity(), "手机号不能为空");
+            return;
+        }
+        if (phone.length() != 11) {
+            TipsToast.showErrorMsg(getActivity(), "请填写正确的手机号");
+            return;
+        }
+
+        SdkRequest.getCaptcha(getActivity(), SmsAction.REGISTER, phone, new IRequestCallback() {
+            @Override
+            public void onResponse(ResultInfo resultInfo) {
+                if (resultInfo.code == 1) {
+                    changeTimeNum();
+                    TipsToast.showSuccessMsg(getActivity(), resultInfo.msg);
+                } else {
+                    String msg = resultInfo.msg;
+                    if (TextUtils.isEmpty(msg)) {
+                        msg = "验证码发送异常,请重试";
+                    }
+                    TipsToast.showErrorMsg(getActivity(), msg);
+                }
+            }
+        });
+    }
+
+    private void phoneRegister() {
+        String phone = eetPhone.getEditText().getText().toString();
+        String captcha = vetSms.getEditText().getText().toString();
+        final String pwd = eetPwd.getEditText().getText().toString();
+        if (TextUtils.isEmpty(phone)) {
+            TipsToast.showErrorMsg(getActivity(), "手机号不能为空");
+            return;
+        }
+        if (phone.length() != 11) {
+            TipsToast.showErrorMsg(getActivity(), "请填写正确的手机号");
+            return;
+        }
+        if (TextUtils.isEmpty(captcha)) {
+            TipsToast.showErrorMsg(getActivity(), "请填写有效的验证码");
+            return;
+        }
+        if (TextUtils.isEmpty(pwd)) {
+            TipsToast.showErrorMsg(getActivity(), "密码不能为空");
+            return;
+        }
+        if (!check) {
+            TipsToast.showErrorMsg(getActivity(), "请您先勾选同意下方协议");
+            return;
+        }
+        SdkRequest.phoneRegister(getActivity(), phone, pwd, captcha, new IRequestCallback() {
+            @Override
+            public void onResponse(ResultInfo resultInfo) {
+                if (resultInfo.code == 1) {
+                    try {
+                        JSONObject jsonObject = new JSONObject(resultInfo.data);
+                        Session session = new Session();
+                        session.userId = jsonObject.getString("channel_uid");
+                        session.userName = jsonObject.getString("uname");
+                        session.pwd = pwd;
+                        SessionUtils.getInstance().saveSession(session);
+                    } catch (JSONException e) {
+                        e.printStackTrace();
+                    }
+                    TipsToast.showSuccessMsg(getActivity(), resultInfo.msg);
+                    getActivity().finish();
+                } else {
+                    String msg = resultInfo.msg;
+                    if (TextUtils.isEmpty(msg)) {
+                        msg = "注册发生异常,请重试";
+                    }
+                    TipsToast.showErrorMsg(getActivity(), msg);
+                }
+            }
+        });
+    }
+
+    private void changeTimeNum() {
+        if (!TimeDownUtils.isRunning()) {
+            TimeDownUtils.start(59, new TimeDownUtils.TimeCallback() {
+                @Override
+                public void onTime(int time) {
+                    Message msg = new Message();
+                    msg.what = 101;
+                    msg.obj = time;
+                    handler.sendMessage(msg);
+                }
+            });
+        } else {
+            TimeDownUtils.resetCallback(new TimeDownUtils.TimeCallback() {
+                @Override
+                public void onTime(int time) {
+                    Message msg = new Message();
+                    msg.what = 101;
+                    msg.obj = time;
+                    handler.sendMessage(msg);
+                }
+            });
+        }
+    }
+
+    private void changeTimeView(int time) {
+        if (vetSms.getRightTextView() == null) {
+            return;
+        }
+        if (time <= 0) {
+            vetSms.getRightTextView().setText("获取验证码");
+            vetSms.getRightTextView().setEnabled(true);
+
+        } else {
+            vetSms.getRightTextView().setText(time + "s");
+            vetSms.getRightTextView().setEnabled(false);
+        }
+    }
+
+    public void onBack() {
+        check = false;
+        ivCheck.setBackgroundResource(imgUncheck);
+
+        showText = false;
+        eetPwd.getRightImageView().setBackgroundResource(imgShow);
+
+        vetSms.getEditText().setText("");
+        eetPhone.getEditText().setText("");
+        eetPwd.getEditText().setText("");
     }
 
     @Override
     public void onClick(View v) {
-
+        if (v == null) {
+            return;
+        }
+        switch ((Integer) v.getTag()) {
+            case ClickType.ACTION_CHECK:
+                changeCheck();
+                break;
+            case ClickType.ACTION_GET_CAPTCHA:
+                getCaptcha();
+                break;
+            case ClickType.ACTION_AGREEMENT:
+                loginImpl.showAgreementDialog(SdkManager.defaultManager().initBean.agreementPrivacy);
+                break;
+            case ClickType.ACTION_PRIVACY:
+                loginImpl.showAgreementDialog(SdkManager.defaultManager().initBean.agreementUser);
+                break;
+            case ClickType.ACTION_REGISTER:
+                phoneRegister();
+                break;
+        }
     }
 }

+ 142 - 0
library_xinrui/src/main/java/com/yyrh/core/impl/login/fragment/QuickRegisterFragment.java

@@ -3,15 +3,29 @@ package com.yyrh.core.impl.login.fragment;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
+import android.text.InputType;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
 
 import com.yyrh.core.entity.ClickType;
+import com.yyrh.core.entity.ResultInfo;
+import com.yyrh.core.entity.Session;
 import com.yyrh.core.impl.login.LoginActivity;
 import com.yyrh.core.impl.login.LoginFragmentTag;
+import com.yyrh.core.internal.IRequestCallback;
+import com.yyrh.core.network.SdkRequest;
+import com.yyrh.factory.SdkManager;
+import com.yyrh.ui.dialog.TipsToast;
 import com.yyrh.ui.widget.EventEditText;
+import com.yyrh.utils.SessionUtils;
+
+import org.json.JSONException;
+import org.json.JSONObject;
 
 import cn.yyxx.support.ResUtils;
 
@@ -25,6 +39,12 @@ public class QuickRegisterFragment extends Fragment implements View.OnClickListe
     private EventEditText eetAccount, eetPwd;
     private Button btnRegister, btnPhoneRegister, btnAccountLauncher;
 
+    private ImageView ivCheck;
+    private TextView tvAgreement, tvPrivacy;
+    private int imgCheck, imgUncheck, imgShow, imgHide;
+    private boolean check = false;
+    private boolean showText = false;
+
     @Nullable
     @Override
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@@ -42,6 +62,11 @@ public class QuickRegisterFragment extends Fragment implements View.OnClickListe
 
     private void initView(View view) {
 
+        imgCheck = ResUtils.getResId(getActivity(), "hnyy_check_img", "drawable");
+        imgUncheck = ResUtils.getResId(getActivity(), "hnyy_uncheck_img", "drawable");
+        imgShow = ResUtils.getResId(getActivity(), "hnyy_show_img", "drawable");
+        imgHide = ResUtils.getResId(getActivity(), "hnyy_hide_img", "drawable");
+
         eetAccount = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_eet_account", "id"));
         eetAccount.getLeftImageView().setBackgroundResource(ResUtils.getResId(getActivity(), "hnyy_account_img", "drawable"));
         eetAccount.getLeftImageView().setVisibility(View.VISIBLE);
@@ -51,11 +76,113 @@ public class QuickRegisterFragment extends Fragment implements View.OnClickListe
         eetPwd.getLeftImageView().setBackgroundResource(ResUtils.getResId(getActivity(), "hnyy_pwd_img", "drawable"));
         eetPwd.getLeftImageView().setVisibility(View.VISIBLE);
         eetPwd.getEditText().setHint("请输入密码");
+        eetPwd.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);
+        eetPwd.getRightImageView().setBackgroundResource(imgShow);
+        eetPwd.getRightImageView().setVisibility(View.VISIBLE);
+        eetPwd.getRightImageView().setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (!showText) {
+                    showText = true;
+                    eetPwd.getRightImageView().setBackgroundResource(imgHide);
+                    eetPwd.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
+                } else {
+                    showText = false;
+                    eetPwd.getRightImageView().setBackgroundResource(imgShow);
+                    eetPwd.getEditText().setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT);
+                }
+            }
+        });
+
+        btnRegister = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_btn_register", "id"));
+        btnRegister.setOnClickListener(this);
+        btnRegister.setTag(ClickType.ACTION_REGISTER);
 
         btnPhoneRegister = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_btn_phone_register", "id"));
         btnPhoneRegister.setOnClickListener(this);
         btnPhoneRegister.setTag(ClickType.ACTION_PHONE_REGISTER);
 
+        btnAccountLauncher = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_btn_has_account", "id"));
+        btnAccountLauncher.setOnClickListener(this);
+        btnAccountLauncher.setTag(ClickType.ACTION_RETURN);
+
+
+        ivCheck = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_iv_check", "id"));
+        ivCheck.setBackgroundResource(imgUncheck);
+        ivCheck.setOnClickListener(this);
+        ivCheck.setTag(ClickType.ACTION_CHECK);
+
+
+        tvAgreement = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_tv_agreement", "id"));
+        tvAgreement.setOnClickListener(this);
+        tvAgreement.setTag(ClickType.ACTION_AGREEMENT);
+
+        tvPrivacy = view.findViewById(ResUtils.getResId(getActivity(), "hnyy_tv_privacy", "id"));
+        tvPrivacy.setOnClickListener(this);
+        tvPrivacy.setTag(ClickType.ACTION_PRIVACY);
+    }
+
+    private void changeCheck() {
+        if (check) {
+            check = false;
+            ivCheck.setBackgroundResource(imgUncheck);
+        } else {
+            check = true;
+            ivCheck.setBackgroundResource(imgCheck);
+        }
+    }
+
+    public void onBack() {
+        check = false;
+        ivCheck.setBackgroundResource(imgUncheck);
+
+        showText = false;
+        eetPwd.getRightImageView().setBackgroundResource(imgShow);
+
+        eetAccount.getEditText().setText("");
+        eetPwd.getEditText().setText("");
+    }
+
+    private void accountRegister() {
+        final String userName = eetAccount.getEditText().getText().toString();
+        final String pwd = eetPwd.getEditText().getText().toString();
+        if (TextUtils.isEmpty(userName)) {
+            TipsToast.showErrorMsg(getActivity(), "用户名不能为空");
+            return;
+        }
+        if (TextUtils.isEmpty(pwd)) {
+            TipsToast.showErrorMsg(getActivity(), "密码不能为空");
+            return;
+        }
+        if (!check) {
+            TipsToast.showErrorMsg(getActivity(), "请您先勾选同意下方协议");
+            return;
+        }
+        SdkRequest.accountRegister(getActivity(), userName, pwd, new IRequestCallback() {
+            @Override
+            public void onResponse(ResultInfo resultInfo) {
+                if (resultInfo.code == 1) {
+                    try {
+                        JSONObject jsonObject = new JSONObject(resultInfo.data);
+                        Session session = new Session();
+                        session.userId = jsonObject.getString("channel_uid");
+                        session.userName = userName;
+                        session.pwd = pwd;
+                        SessionUtils.getInstance().saveSession(session);
+                    } catch (JSONException e) {
+                        e.printStackTrace();
+                    }
+                    TipsToast.showSuccessMsg(getActivity(), resultInfo.msg);
+                    getActivity().finish();
+                } else {
+                    String msg = resultInfo.msg;
+                    if (TextUtils.isEmpty(msg)) {
+                        msg = "注册发生异常,请重试";
+                    }
+                    TipsToast.showErrorMsg(getActivity(), msg);
+                }
+            }
+        });
     }
 
     @Override
@@ -64,9 +191,24 @@ public class QuickRegisterFragment extends Fragment implements View.OnClickListe
             return;
         }
         switch ((Integer) v.getTag()) {
+            case ClickType.ACTION_RETURN:
+                loginImpl.onBackPressed();
+                break;
             case ClickType.ACTION_PHONE_REGISTER:
                 loginImpl.switchFragment(LoginFragmentTag.PHONE_REGISTER);
                 break;
+            case ClickType.ACTION_CHECK:
+                changeCheck();
+                break;
+            case ClickType.ACTION_AGREEMENT:
+                loginImpl.showAgreementDialog(SdkManager.defaultManager().initBean.agreementPrivacy);
+                break;
+            case ClickType.ACTION_PRIVACY:
+                loginImpl.showAgreementDialog(SdkManager.defaultManager().initBean.agreementUser);
+                break;
+            case ClickType.ACTION_REGISTER:
+                accountRegister();
+                break;
         }
     }
 }

+ 1 - 0
library_xinrui/src/main/java/com/yyrh/core/network/Host.java

@@ -24,5 +24,6 @@ public class Host {
     public static final String BASIC_ROUTE_QUERY_ORDER = "order_query";
     public static final String BASIC_ROUTE_INIT_AGREEMENT = "agreement_int";
     public static final String BASIC_ROUTE_PAYMENT_WAY = "payment_way";
+    public static int MODEL = 0;
 
 }

+ 47 - 2
library_xinrui/src/main/java/com/yyrh/core/network/SdkRequest.java

@@ -2,6 +2,7 @@ package com.yyrh.core.network;
 
 import android.content.Context;
 
+import com.yyrh.core.SDKDrive;
 import com.yyrh.core.internal.IRequestCallback;
 
 import org.json.JSONObject;
@@ -19,12 +20,56 @@ public final class SdkRequest {
     public static void initSdk(Context context, IRequestCallback callback) {
         JSONObject jsonObject = new JSONObject();
         try {
-            jsonObject.put("ifa", "3a511f03f0262d08");
-            jsonObject.put("ifa_type", 3);
             jsonObject.put("route_path", Host.BASIC_ROUTE_INIT_SDK);
         } catch (Exception e) {
             e.printStackTrace();
         }
         VolleyRequest.post(context, jsonObject, callback);
     }
+
+    public static void accountRegister(Context context, String userName, String pwd, IRequestCallback callback) {
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("uname_pwd", SDKDrive.getInstance().RsaEncrypt(userName + "|" + pwd));
+            jsonObject.put("route_path", Host.BASIC_ROUTE_FAST_REGISTER);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        VolleyRequest.post(context, jsonObject, callback);
+    }
+
+    public static void accountLauncher(Context context, String userName, String pwd, IRequestCallback callback) {
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("uname_pwd", SDKDrive.getInstance().RsaEncrypt(userName + "|" + pwd));
+            jsonObject.put("route_path", Host.BASIC_ROUTE_USER_LOGIN);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        VolleyRequest.post(context, jsonObject, callback);
+    }
+
+    public static void phoneRegister(Context context, String phone, String pwd, String captcha, IRequestCallback callback) {
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("uname_pwd", SDKDrive.getInstance().RsaEncrypt(phone + "|" + pwd));
+            jsonObject.put("sms", captcha);
+            jsonObject.put("route_path", Host.BASIC_ROUTE_PHONE_REGISTER);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        VolleyRequest.post(context, jsonObject, callback);
+    }
+
+    public static void getCaptcha(Context context, String action, String phone, IRequestCallback callback) {
+        JSONObject jsonObject = new JSONObject();
+        try {
+            jsonObject.put("action", action);
+            jsonObject.put("phone", phone);
+            jsonObject.put("route_path", Host.BASIC_ROUTE_PHONE_CAPTCHA);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        VolleyRequest.post(context, jsonObject, callback);
+    }
 }

+ 7 - 0
library_xinrui/src/main/java/com/yyrh/factory/SdkManager.java

@@ -21,6 +21,7 @@ import com.yyrh.core.SDKDrive;
 import com.yyrh.core.entity.ResultInfo;
 import com.yyrh.core.entity.bean.InitBean;
 import com.yyrh.core.internal.IRequestCallback;
+import com.yyrh.core.network.Host;
 import com.yyrh.core.network.SdkRequest;
 import com.yyrh.networking.NetRequestApi;
 import com.yyrh.sdk.SDKEntry;
@@ -211,6 +212,11 @@ public class SdkManager {
     public void attachBaseContext(Application application, Context context) {
         YYLog.initZap(application);
         SDKDrive.getInstance().initDrive(application);
+        if (Host.BASEURL.equals("https://sdkapi.ykklayo.com")) {
+            Host.MODEL = 1;
+        }else {
+            Host.MODEL=0;
+        }
     }
 
     public void initApplication(Application application) {
@@ -284,6 +290,7 @@ public class SdkManager {
                 if (resultInfo.code == 1) {
                     // 初始化成功
                     initBean = InitBean.toBean(resultInfo.data);
+                    YYLog.d("bean: " + initBean.toString());
                     initSdkOperation();
                     callback.onInitSuccess("sdk初始化成功");
                 } else {

+ 0 - 2
library_xinrui/src/main/java/com/yyrh/sdk/YyrhSdkManager.java

@@ -549,7 +549,6 @@ public class YyrhSdkManager {
 
     public void yyrhPay(final Activity activity, final HashMap<String, Object> map) {
 
-
         final String url = (String) map.get("url");
         if (Utils.judgeStrNull(url)) {
             return;
@@ -563,7 +562,6 @@ public class YyrhSdkManager {
             }
         });
 
-
     }
 
     public void yyrhExitGame(final Activity activity) {

+ 139 - 0
library_xinrui/src/main/java/com/yyrh/ui/dialog/AgreementDialog.java

@@ -0,0 +1,139 @@
+package com.yyrh.ui.dialog;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.view.WindowManager;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.webkit.CookieSyncManager;
+import android.webkit.WebChromeClient;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.Button;
+import android.widget.ImageView;
+
+import cn.yyxx.support.DensityUtils;
+import cn.yyxx.support.ResUtils;
+import cn.yyxx.support.device.DeviceInfoUtils;
+
+/**
+ * @author #Suyghur.
+ * Created on 2021/10/20
+ */
+public class AgreementDialog extends Dialog {
+
+    private Button btnConfirm;
+    private ImageView ivLoading;
+    private WebView webView;
+    private Animation rotateAnimation;
+
+
+    public AgreementDialog(Context context, String url, boolean isLandscape) {
+        super(context);
+        initView(context, isLandscape);
+        initWebView(context, url);
+    }
+
+    private void initView(Context context, boolean isLandscape) {
+        setCanceledOnTouchOutside(false);
+        getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+        requestWindowFeature(Window.FEATURE_NO_TITLE);
+
+        View view = LayoutInflater.from(context).inflate(ResUtils.getResId(context, "hnyy_agreement_dialog", "layout"), null);
+        setContentView(view);
+
+        WindowManager.LayoutParams attr = getWindow().getAttributes();
+        attr.height = ViewGroup.LayoutParams.WRAP_CONTENT;
+        if (isLandscape) {
+            attr.width = DensityUtils.getHeightAndWidth(context)[0] / 2;
+        } else {
+            attr.width = DensityUtils.getHeightAndWidth(context)[0] - 80;
+        }
+        attr.width = ViewGroup.LayoutParams.WRAP_CONTENT;
+        attr.gravity = Gravity.CENTER;
+
+        webView = view.findViewById(ResUtils.getResId(context, "hnyy_webview", "id"));
+
+        ivLoading = view.findViewById(ResUtils.getResId(context, "hnyy_iv_loading", "id"));
+        rotateAnimation = AnimationUtils.loadAnimation(context, ResUtils.getResId(context, "hnyy_rotate_anim", "anim"));
+        ivLoading.startAnimation(rotateAnimation);
+
+        btnConfirm = view.findViewById(ResUtils.getResId(context, "hnyy_btn_confirm", "id"));
+        btnConfirm.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                dismiss();
+            }
+        });
+    }
+
+    private void initWebView(Context context, String url) {
+        WebSettings settings = webView.getSettings();
+        settings.setAllowFileAccess(true);
+        settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
+        settings.setSupportZoom(true);
+        settings.setSaveFormData(true);
+        settings.setSavePassword(true);
+        settings.setBuiltInZoomControls(false);
+        settings.setUseWideViewPort(true);
+        settings.setSupportMultipleWindows(false);
+        settings.setAppCacheEnabled(true);
+        settings.setDomStorageEnabled(true);
+        settings.setJavaScriptEnabled(true);
+        settings.setGeolocationEnabled(true);
+        settings.setAppCacheMaxSize(Long.MAX_VALUE);
+        settings.setAppCachePath(context.getDir("appcache", 0).getPath());
+        settings.setDatabasePath(context.getDir("databases", 0).getPath());
+        settings.setGeolocationDatabasePath(context.getDir("geolocation", 0).getPath());
+        settings.setPluginState(WebSettings.PluginState.ON_DEMAND);
+        CookieSyncManager.createInstance(context);
+        CookieSyncManager.getInstance().sync();
+
+        if (DeviceInfoUtils.isNetworkConnected(context)) {
+            webView.loadUrl(url);
+        } else {
+            webView.loadData("网络异常,请检查重试", "text/html; charset=UTF-8", null);
+        }
+
+        webView.setWebViewClient(new WebViewClient() {
+            @Override
+            public boolean shouldOverrideUrlLoading(WebView view, String url) {
+                if (url.startsWith("http:") || url.startsWith("https:")) {
+                    if (!view.canGoBack()) {
+                        return false;
+                    }
+                    if (view.getHitTestResult().getType() == WebView.HitTestResult.UNKNOWN_TYPE) {
+                        return false;
+                    }
+                    view.loadUrl(url);
+                }
+                return false;
+            }
+        });
+
+        webView.setWebChromeClient(new WebChromeClient() {
+            @Override
+            public void onProgressChanged(WebView view, int newProgress) {
+                if (newProgress == 100 && ivLoading != null && ivLoading.getVisibility() == View.VISIBLE) {
+                    ivLoading.clearAnimation();
+                    ivLoading.setVisibility(View.GONE);
+                }
+            }
+        });
+    }
+
+    @Override
+    public void dismiss() {
+        super.dismiss();
+        ivLoading.clearAnimation();
+        ivLoading.setVisibility(View.GONE);
+    }
+}

+ 8 - 0
library_xinrui/src/main/java/com/yyrh/ui/dialog/TipsToast.java

@@ -50,4 +50,12 @@ public class TipsToast {
             mToast.show();
         }
     }
+
+    public static void showSuccessMsg(Context context, String message) {
+        new TipsToast(context, message, false).show();
+    }
+
+    public static void showErrorMsg(Context context, String message) {
+        new TipsToast(context, message, true).show();
+    }
 }

+ 2 - 14
library_xinrui/src/main/java/com/yyrh/ui/widget/EventEditText.java

@@ -6,7 +6,7 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.EditText;
 import android.widget.ImageView;
-import android.widget.RelativeLayout;
+import android.widget.LinearLayout;
 
 import cn.yyxx.support.ResUtils;
 
@@ -14,9 +14,8 @@ import cn.yyxx.support.ResUtils;
  * @author #Suyghur.
  * Created on 2021/05/11
  */
-public class EventEditText extends RelativeLayout implements View.OnFocusChangeListener {
+public class EventEditText extends LinearLayout {
 
-    private View focusView;
     private ImageView leftImageView;
     private ImageView rightImageView;
     private EditText editText;
@@ -36,8 +35,6 @@ public class EventEditText extends RelativeLayout implements View.OnFocusChangeL
 
     private void initView(Context context) {
         LayoutInflater.from(context).inflate(ResUtils.getResId(context, "hnyy_event_edit_text", "layout"), this);
-        focusView = findViewById(ResUtils.getResId(context, "hnyy_eet_focus_view", "id"));
-        focusView.setVisibility(View.GONE);
 
         leftImageView = findViewById(ResUtils.getResId(context, "hnyy_eet_iv_left", "id"));
         leftImageView.setVisibility(View.GONE);
@@ -46,7 +43,6 @@ public class EventEditText extends RelativeLayout implements View.OnFocusChangeL
         rightImageView.setVisibility(View.GONE);
 
         editText = findViewById(ResUtils.getResId(context, "hnyy_eet_input", "id"));
-        editText.setOnFocusChangeListener(this);
     }
 
     public ImageView getLeftImageView() {
@@ -61,12 +57,4 @@ public class EventEditText extends RelativeLayout implements View.OnFocusChangeL
         return editText;
     }
 
-    @Override
-    public void onFocusChange(View v, boolean hasFocus) {
-        if (hasFocus) {
-            focusView.setVisibility(View.VISIBLE);
-        } else {
-            focusView.setVisibility(View.GONE);
-        }
-    }
 }

+ 1 - 13
library_xinrui/src/main/java/com/yyrh/ui/widget/VerifyEditText.java

@@ -15,9 +15,8 @@ import cn.yyxx.support.ResUtils;
  * @author #Suyghur.
  * Created on 2021/10/19
  */
-public class VerifyEditText extends LinearLayout implements View.OnFocusChangeListener {
+public class VerifyEditText extends LinearLayout {
 
-    private View focusView;
     private ImageView leftImageView;
     private EditText editText;
     private TextView rightTextView;
@@ -37,14 +36,11 @@ public class VerifyEditText extends LinearLayout implements View.OnFocusChangeLi
 
     private void initView(Context context) {
         LayoutInflater.from(context).inflate(ResUtils.getResId(context, "hnyy_verify_edit_text", "layout"), this);
-        focusView = findViewById(ResUtils.getResId(context, "hnyy_vet_focus_view", "id"));
-        focusView.setVisibility(View.GONE);
 
         leftImageView = findViewById(ResUtils.getResId(context, "hnyy_vet_iv_left", "id"));
         leftImageView.setVisibility(View.GONE);
 
         editText = findViewById(ResUtils.getResId(context, "hnyy_vet_input", "id"));
-        editText.setOnFocusChangeListener(this);
 
         rightTextView = findViewById(ResUtils.getResId(context, "hnyy_vet_tv_right", "id"));
         rightTextView.setVisibility(View.GONE);
@@ -62,12 +58,4 @@ public class VerifyEditText extends LinearLayout implements View.OnFocusChangeLi
         return editText;
     }
 
-    @Override
-    public void onFocusChange(View v, boolean hasFocus) {
-        if (hasFocus) {
-            focusView.setVisibility(View.VISIBLE);
-        } else {
-            focusView.setVisibility(View.GONE);
-        }
-    }
 }

+ 1 - 1
library_xinrui/src/main/java/com/yyrh/utils/MMKVUtils.java

@@ -15,7 +15,7 @@ import java.util.Locale;
  */
 public class MMKVUtils implements MMKVHandler {
 
-    private MMKV userKV = null;
+    public MMKV userKV = null;
 
     private MMKVUtils() {
 

+ 197 - 0
library_xinrui/src/main/java/com/yyrh/utils/SessionUtils.java

@@ -0,0 +1,197 @@
+package com.yyrh.utils;
+
+import android.text.TextUtils;
+
+import com.yyrh.core.entity.Session;
+import com.yyrh.core.network.Host;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+
+import cn.yyxx.support.JsonUtils;
+
+/**
+ * @author #Suyghur.
+ * Created on 2021/10/20
+ */
+public class SessionUtils {
+
+    private SessionUtils() {
+
+    }
+
+    private static final class SessionUtilsHolder {
+        private static final SessionUtils INSTANCE = new SessionUtils();
+    }
+
+    public static SessionUtils getInstance() {
+        return SessionUtilsHolder.INSTANCE;
+    }
+
+    public void saveSession(Session currentSession) {
+        if (currentSession == null) {
+            return;
+        }
+        ArrayList<Session> userList = getLocalSession();
+        if (null == userList) {
+            userList = new ArrayList<>();
+        }
+        if (userList.size() > 0) {
+            boolean isExist = false;
+            for (int i = 0; i < userList.size(); i++) {
+                // 当前登录用户已经存在用户列表里,更新用户数据(移除旧的,在0的位置插入)
+                Session session = userList.get(i);
+                if (currentSession.userId.equals(session.userId)) {
+                    isExist = true;
+                    //移除
+                    userList.remove(session);
+                    userList.add(0, currentSession);
+                    break;
+                }
+            }
+            if (!isExist) {
+                // 当前登录用户不存在用户列表里,在0的位置插入
+                userList.add(0, currentSession);
+            }
+        } else {
+            userList.add(currentSession);
+        }
+
+        JSONArray jsonArray = new JSONArray();
+        JSONObject jsonObject = new JSONObject();
+        for (Session session : userList) {
+            jsonArray.put(session.toJsonObject());
+        }
+
+        try {
+            jsonObject.put("info", jsonArray);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        String model = "online";
+        if (Host.MODEL == 0) {
+            model = "test";
+        }
+        MMKVUtils.getInstance().userKV.encode(model, jsonObject.toString());
+    }
+
+    public Session getLocalLastSession() {
+        ArrayList<Session> list = getLocalSession();
+        if (null == list) {
+            return null;
+        }
+        Session session = list.get(0);
+        YYLog.d("最后登陆的用户信息:" + session.toString());
+        return session;
+
+    }
+
+    public ArrayList<Session> getLocalSessionLimit3() {
+        ArrayList<Session> list = getLocalSession();
+        if (null == list) {
+            return null;
+        }
+        if (list.size() <= 3) {
+            return list;
+        } else {
+            ArrayList<Session> temp = new ArrayList<>();
+            for (int i = 0; i < list.size(); i++) {
+                Session session = list.get(i);
+                temp.add(session);
+                if (temp.size() == 3) {
+                    break;
+                }
+            }
+            return temp;
+        }
+    }
+
+    /**
+     * {"info":{"abc123":{"uid":"abc123","username":"","userpwd":"","token":"","auto_login":1}}}
+     */
+    public ArrayList<Session> getLocalSession() {
+        String model = "online";
+        if (Host.MODEL == 0) {
+            model = "test";
+        }
+        String json = MMKVUtils.getInstance().userKV.decodeString(model, "");
+        return toList(json);
+    }
+
+    /**
+     * 删除用户信息
+     */
+    public void removeSession(String userId) {
+        ArrayList<Session> userLists = getLocalSession();
+        if (userLists == null || userLists.size() == 0) {
+            return;
+        }
+        Session deleteUser = null;
+        for (Session session : userLists) {
+            if (session.userId.equals(userId)) {
+                deleteUser = session;
+                break;
+            }
+        }
+        if (deleteUser != null) {
+            userLists.remove(deleteUser);
+        }
+
+        JSONArray jsonArray = new JSONArray();
+        JSONObject jsonObject = new JSONObject();
+        for (Session session : userLists) {
+            YYLog.d(session.toString());
+            jsonArray.put(session.toJsonObject());
+        }
+
+        try {
+            jsonObject.put("info", jsonArray);
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        YYLog.d("写入用户信息:" + jsonObject.toString());
+        String model = "online";
+        if (Host.MODEL == 0) {
+            model = "test";
+        }
+        MMKVUtils.getInstance().userKV.encode(model, jsonObject.toString());
+    }
+
+    private static ArrayList<Session> toList(String json) {
+        if (TextUtils.isEmpty(json)) {
+            return null;
+        }
+        YYLog.d("文件读出来:" + json);
+        ArrayList<Session> infoList = null;
+        try {
+            JSONObject jsonObject = new JSONObject(json);
+            infoList = new ArrayList<>();
+            if (!JsonUtils.hasJsonKey(jsonObject, "info")) {
+                return null;
+            }
+            JSONArray infoObject = jsonObject.getJSONArray("info");
+            for (int i = 0; i < infoObject.length(); i++) {
+                Session session = new Session();
+                JSONObject obj = infoObject.getJSONObject(i);
+                if (JsonUtils.hasJsonKey(obj, "user_id")) {
+                    session.userId = obj.getString("user_id");
+                }
+                if (JsonUtils.hasJsonKey(obj, "user_name")) {
+                    session.userName = obj.getString("user_name");
+                }
+                if (JsonUtils.hasJsonKey(obj, "pwd")) {
+                    session.pwd = obj.getString("pwd");
+                }
+
+                infoList.add(session);
+            }
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+        return infoList;
+    }
+
+}

+ 42 - 30
library_xinrui/src/main/java/com/yyrh/utils/TimeDownUtils.java

@@ -1,73 +1,85 @@
 package com.yyrh.utils;
 
+
 /**
- * @author #Suyghur.
- * Created on 2021/05/11
+ * 手机验证码倒计时
  */
 public class TimeDownUtils {
 
-    public static boolean isRunning = false;
-    private static boolean isCancel = false;
-
-
-    private volatile static Times times = null;
-
+    private static boolean isRunning;
+    private static boolean isCancel;
+    private static volatile Times times;
 
-    public static void start(int time,TimeDownCallback callback) {
+    public static void start(int total,TimeCallback timeCallback) {
         if (isRunning) {
-            YYLog.d("TimeDownUtils 倒计时还在执行中...");
+            YYLog.d("倒计时还在执行中...");
         } else {
-
             isRunning = true;
             isCancel = false;
-            times = new Times(time,callback);
+            times = new Times(total,timeCallback);
             times.start();
         }
     }
 
     public static void cancel() {
         isCancel = true;
-        if (isRunning && times != null) {
-            times.interrupt();
-            times = null;
+        if (isRunning) {
+            if (times != null) {
+                times.interrupt();
+                times = null;
+            }
         }
         isRunning = false;
-        YYLog.d("TimeDownUtils 倒计时取消...");
+        YYLog.d("TimeDownUtils.cancel");
     }
 
-    public static void resetCallback(TimeDownCallback callback) {
+    public static void resetCallback(TimeCallback timeCallback) {
         if (times != null) {
-            times.callback = callback;
+            times.setCallback(timeCallback);
         }
     }
 
-    public interface TimeDownCallback {
+    public static boolean isRunning() {
+        return isRunning;
+    }
+
+    public interface TimeCallback {
         void onTime(int time);
     }
 
-    private static class Times extends Thread {
-        private TimeDownCallback callback;
-        int time = 0;
-        Times(int time,TimeDownCallback callback) {
-            this.time = time;
+    /**
+     * 倒计时
+     */
+    static class Times extends Thread {
+        TimeCallback callback;
+        int total;
+
+        public Times(int total, TimeCallback callback) {
+            this.total = total;
+            this.callback = callback;
+        }
+
+        public void setCallback(TimeCallback callback) {
             this.callback = callback;
         }
 
         @Override
         public void run() {
-            callback.onTime(time);
-            YYLog.d("TimeDownUtils 倒计时开始...  + time :" + time);
-            for (int i = time; i >= 0; i--) {
+            if (callback != null)
+                callback.onTime(total);
+            YYLog.d("TimeDownUtils 倒计时开始...");
+            for (int i = total; i >= 0; i--) {
                 try {
-                    sleep(1000);
+                    Thread.sleep(1000);
                 } catch (InterruptedException e) {
                     e.printStackTrace();
                 }
                 if (isCancel) {
-                    YYLog.d("TimeDownUtils 线程已退出...");
+                    YYLog.d("TimeDownUtils 线程已退出");
                     return;
                 }
-                callback.onTime(i);
+                if (callback != null)
+                    callback.onTime(i);
             }
             cancel();
         }

二進制
library_xinrui/src/main/res/drawable-xhdpi/hnyy_hide_img.png


二進制
library_xinrui/src/main/res/drawable-xhdpi/hnyy_return_img.png


二進制
library_xinrui/src/main/res/drawable-xhdpi/hnyy_show_img.png


+ 1 - 1
library_xinrui/src/main/res/drawable/hnyy_btn_purple_bg.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <corners android:radius="15dp" />
+    <corners android:radius="20dp" />
     <gradient
         android:angle="0"
         android:endColor="@color/hnyy_color_deep_purple"

+ 1 - 1
library_xinrui/src/main/res/drawable/hnyy_btn_white_bg.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <corners android:radius="15dp" />
+    <corners android:radius="20dp" />
     <stroke
         android:width="1dp"
         android:color="@color/hnyy_color_purple" />

+ 1 - 1
library_xinrui/src/main/res/drawable/hnyy_et_frame_focused_bg.xml

@@ -2,7 +2,7 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
 
     <solid android:color="@color/hnyy_color_white" />
-    <corners android:radius="8dp" />
+    <corners android:radius="20dp" />
     <stroke
         android:width="1dp"
         android:color="@color/hnyy_color_gray" />

+ 1 - 1
library_xinrui/src/main/res/drawable/hnyy_et_frame_normal_bg.xml

@@ -2,7 +2,7 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
 
     <solid android:color="@color/hnyy_color_white" />
-    <corners android:radius="8dp" />
+    <corners android:radius="20dp" />
     <stroke
         android:width="1dp"
         android:color="@color/hnyy_color_gray_30" />

+ 43 - 0
library_xinrui/src/main/res/layout/hnyy_agreement_dialog.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="360dp"
+    android:layout_height="wrap_content"
+    android:background="@drawable/hnyy_container_white_bg"
+    android:orientation="vertical">
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="240dp"
+        android:layout_marginLeft="20dp"
+        android:layout_marginTop="10dp"
+        android:layout_marginRight="20dp">
+
+        <WebView
+            android:id="@+id/hnyy_webview"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_gravity="center" />
+
+        <ImageView
+            android:id="@+id/hnyy_iv_loading"
+            android:layout_width="40dp"
+            android:layout_height="40dp"
+            android:layout_gravity="center"
+            android:src="@drawable/hnyy_loading_img" />
+    </FrameLayout>
+
+    <Button
+        android:id="@+id/hnyy_btn_confirm"
+        style="?android:attr/borderlessButtonStyle"
+        android:layout_width="match_parent"
+        android:layout_height="35dp"
+        android:layout_marginLeft="20dp"
+        android:layout_marginTop="10dp"
+        android:layout_marginRight="20dp"
+        android:layout_marginBottom="10dp"
+        android:background="@drawable/hnyy_btn_purple_bg"
+        android:text="确认"
+        android:textColor="@color/hnyy_color_white"
+        android:textSize="16sp" />
+
+</LinearLayout>

+ 7 - 29
library_xinrui/src/main/res/layout/hnyy_event_edit_text.xml

@@ -1,45 +1,26 @@
 <?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:layout_gravity="center"
-    android:background="@drawable/hnyy_et_frame_selector_bg">
-
-
-    <View
-        android:id="@+id/hnyy_eet_focus_view"
-        android:layout_width="2dp"
-        android:layout_height="24dp"
-        android:layout_alignParentStart="true"
-        android:layout_alignParentLeft="true"
-        android:layout_centerVertical="true"
-        android:layout_marginStart="1dp"
-        android:layout_marginLeft="1dp"
-        android:background="@color/hnyy_color_purple" />
-
+    android:background="@drawable/hnyy_et_frame_selector_bg"
+    android:gravity="center"
+    android:orientation="horizontal">
 
     <ImageView
         android:id="@+id/hnyy_eet_iv_left"
         android:layout_width="18dp"
         android:layout_height="18dp"
-        android:layout_alignParentStart="true"
-        android:layout_alignParentLeft="true"
-        android:layout_centerInParent="true"
-        android:layout_centerVertical="true"
         android:layout_marginStart="10dp"
         android:layout_marginLeft="10dp"
         android:padding="7dp" />
 
     <EditText
         android:id="@+id/hnyy_eet_input"
-        android:layout_width="match_parent"
+        android:layout_width="0dp"
         android:layout_height="match_parent"
-        android:layout_centerInParent="true"
-        android:layout_centerVertical="true"
         android:layout_marginStart="10dp"
         android:layout_marginLeft="10dp"
-        android:layout_toEndOf="@id/hnyy_eet_iv_left"
-        android:layout_toRightOf="@id/hnyy_eet_iv_left"
+        android:layout_weight="1"
         android:background="@android:color/transparent"
         android:singleLine="true"
         android:textColor="@color/hnyy_color_gray"
@@ -50,11 +31,8 @@
         android:id="@+id/hnyy_eet_iv_right"
         android:layout_width="18dp"
         android:layout_height="18dp"
-        android:layout_alignParentEnd="true"
-        android:layout_alignParentRight="true"
-        android:layout_centerVertical="true"
         android:layout_marginEnd="10dp"
         android:layout_marginRight="10dp"
         android:padding="7dp" />
 
-</RelativeLayout>
+</LinearLayout>

+ 29 - 0
library_xinrui/src/main/res/layout/hnyy_iab_activity.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/hnyy_iab_container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical">
+
+        <ImageView
+            android:layout_width="16dp"
+            android:layout_height="16dp"
+            android:src="@drawable/hnyy_return_img" />
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="20dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginRight="20dp"
+            android:gravity="center_horizontal"
+            android:text="@string/hnyy_login_account_panel_title"
+            android:textColor="@color/hnyy_color_purple"
+            android:textSize="20sp"
+            android:textStyle="bold" />
+    </LinearLayout>
+</FrameLayout>

+ 0 - 2
library_xinrui/src/main/res/layout/hnyy_login_account_launcher.xml

@@ -93,7 +93,6 @@
         <TextView
             android:id="@+id/hnyy_tv_agreement"
             android:layout_width="wrap_content"
-
             android:layout_height="match_parent"
             android:layout_gravity="center"
             android:gravity="center_vertical"
@@ -104,7 +103,6 @@
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
-
             android:layout_gravity="center"
             android:gravity="center_vertical"
             android:text="及"

+ 31 - 33
library_xinrui/src/main/res/layout/hnyy_privacy_policy_dialog.xml

@@ -1,81 +1,79 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/ll_private_policy"
     android:layout_width="360dp"
     android:layout_height="280dp"
     android:background="@drawable/hnyy_color_white_70"
-    android:orientation="vertical"
-    android:id="@+id/ll_private_policy"
-    >
+    android:orientation="vertical">
 
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_marginLeft="2dp"
+        android:layout_marginTop="10dp"
+        android:layout_marginRight="2dp"
+        android:layout_weight="7">
 
-<RelativeLayout
-    android:layout_width="match_parent"
-    android:layout_height="0dp"
-    android:layout_weight="7"
-    android:layout_marginTop="10dp"
-    android:layout_marginLeft="2dp"
-    android:layout_marginRight="2dp"
-    >
         <WebView
             android:id="@+id/wb_user_info"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_gravity="center"
-            android:background="@color/hnyy_transparent"
-            />
+            android:background="@color/hnyy_transparent" />
 
-    <ImageView
+        <ImageView
+            android:id="@+id/hnyy_loading"
             android:layout_width="30dp"
             android:layout_height="30dp"
             android:layout_centerInParent="true"
-            android:id="@+id/hnyy_loading"
-            android:background="@mipmap/hnyy_loading"/>
-</RelativeLayout>
+            android:background="@mipmap/hnyy_loading" />
+    </RelativeLayout>
+
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:layout_weight="3"
-        android:orientation="horizontal"
-        >
+        android:orientation="horizontal">
+
         <View
             android:layout_width="0dp"
             android:layout_height="match_parent"
-            android:layout_weight="1"
-            />
+            android:layout_weight="1" />
+
         <Button
 
             android:id="@+id/btn_disagree"
             android:layout_width="0dp"
             android:layout_height="30dp"
-            android:layout_weight="2"
             android:layout_gravity="center"
+            android:layout_weight="2"
+            android:background="@drawable/hnyy_btn_exit_bg"
             android:text="@string/hnyy_disagreement"
-            android:textColor="@color/hnyy_text_cyan_color"
-            android:background="@drawable/hnyy_btn_exit_bg"/>
+            android:textColor="@color/hnyy_text_cyan_color" />
+
         <View
             android:layout_width="0dp"
             android:layout_height="match_parent"
-            android:layout_weight="1"
-            />
+            android:layout_weight="1" />
+
         <View
             android:layout_width="0dp"
             android:layout_height="match_parent"
-            android:layout_weight="1"
-            />
+            android:layout_weight="1" />
 
         <Button
             android:id="@+id/btn_agree"
             android:layout_width="0dp"
             android:layout_height="30dp"
-            android:layout_weight="2"
             android:layout_gravity="center"
+            android:layout_weight="2"
             android:background="@drawable/hnyy_login_button_style"
-            android:textColor="@color/hnyy_color_white"
-            android:text="@string/hnyy_agreement"/>
+            android:text="@string/hnyy_agreement"
+            android:textColor="@color/hnyy_color_white" />
+
         <View
             android:layout_width="0dp"
             android:layout_height="match_parent"
-            android:layout_weight="1"
-            />
+            android:layout_weight="1" />
     </LinearLayout>
 </LinearLayout>

+ 12 - 7
library_xinrui/src/main/res/layout/hnyy_tips_dialog.xml

@@ -4,23 +4,28 @@
     android:layout_height="wrap_content"
     android:background="@drawable/hnyy_container_white_bg"
     android:gravity="center"
-    android:orientation="horizontal"
-    android:paddingLeft="80dp"
-    android:paddingTop="10dp"
-    android:paddingRight="80dp"
-    android:paddingBottom="10dp">
+    android:orientation="horizontal">
 
 
     <ImageView
         android:id="@+id/hnyy_iv_desc"
         android:layout_width="18dp"
-        android:layout_height="18dp" />
+        android:layout_height="18dp"
+        android:layout_gravity="center"
+        android:layout_marginLeft="60dp"
+        android:layout_marginTop="10dp"
+        android:layout_marginBottom="10dp" />
 
     <TextView
         android:id="@+id/hnyy_tv_desc"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_gravity="center"
         android:layout_marginLeft="10dp"
+        android:layout_marginTop="10dp"
+        android:layout_marginRight="60dp"
+        android:layout_marginBottom="10dp"
+        android:singleLine="true"
         android:textColor="@color/hnyy_color_gray"
-        android:textSize="16sp" />
+        android:textSize="14sp" />
 </LinearLayout>

+ 3 - 10
library_xinrui/src/main/res/layout/hnyy_verify_edit_text.xml

@@ -6,14 +6,6 @@
     android:gravity="center"
     android:orientation="horizontal">
 
-    <View
-        android:id="@+id/hnyy_vet_focus_view"
-        android:layout_width="2dp"
-        android:layout_height="24dp"
-        android:layout_marginStart="1dp"
-        android:layout_marginLeft="1dp"
-        android:background="@color/hnyy_color_purple" />
-
     <ImageView
         android:id="@+id/hnyy_vet_iv_left"
         android:layout_width="18dp"
@@ -36,9 +28,9 @@
         android:textSize="16sp" />
 
     <View
-        android:layout_marginLeft="5dp"
         android:layout_width="1dp"
         android:layout_height="match_parent"
+        android:layout_marginLeft="5dp"
         android:layout_marginTop="5dp"
         android:layout_marginBottom="5dp"
         android:background="@color/hnyy_color_gray_30" />
@@ -48,9 +40,10 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginLeft="5dp"
+        android:layout_marginRight="5dp"
         android:padding="5dp"
         android:text="获取验证码"
         android:textColor="@color/hnyy_color_purple"
-        android:textSize="14sp" />
+        android:textSize="12sp" />
 
 </LinearLayout>

+ 29 - 37
library_xinrui/src/main/res/values/styles.xml

@@ -1,14 +1,6 @@
 <resources>
 
 
-
-
-
-
-
-
-<!---qijing style-->
-
     <style name="hnyy_transparent">
         <item name="android:windowBackground">@color/hnyy_transparent_background</item>
         <item name="android:windowNoTitle">true</item>
@@ -22,38 +14,38 @@
 
 
     <style name="hnyy_base_dialog" parent="@android:style/Theme.Dialog">
-    <item name="android:windowFrame">@null</item>
-    <!-- 边框 -->
-    <item name="android:windowIsFloating">true</item>
-    <!-- 是否浮现在activity之上 -->
-    <item name="android:windowIsTranslucent">false</item>
-    <!-- 半透明 -->
-    <item name="android:windowNoTitle">true</item>
-    <!-- 无标题 -->
-    <item name="android:windowBackground">@color/hnyy_transparent</item>
-    <!-- 背景透明 -->
-    <item name="android:backgroundDimEnabled">false</item>
-    <item name="android:windowCloseOnTouchOutside">false</item>
-    <item name="android:windowFullscreen">true</item>
-
-
-    <!-- 模糊 -->
+        <item name="android:windowFrame">@null</item>
+        <!-- 边框 -->
+        <item name="android:windowIsFloating">true</item>
+        <!-- 是否浮现在activity之上 -->
+        <item name="android:windowIsTranslucent">false</item>
+        <!-- 半透明 -->
+        <item name="android:windowNoTitle">true</item>
+        <!-- 无标题 -->
+        <item name="android:windowBackground">@color/hnyy_transparent</item>
+        <!-- 背景透明 -->
+        <item name="android:backgroundDimEnabled">false</item>
+        <item name="android:windowCloseOnTouchOutside">false</item>
+        <item name="android:windowFullscreen">true</item>
+
+
+        <!-- 模糊 -->
     </style>
 
     <style name="hnyy_half_black_dialog" parent="@android:style/Theme.Dialog">
-    <item name="android:windowFrame">@null</item>
-    <!-- 边框 -->
-    <item name="android:windowIsFloating">true</item>
-    <!-- 是否浮现在activity之上 -->
-    <item name="android:windowIsTranslucent">false</item>
-    <!-- 半透明 -->
-    <item name="android:windowNoTitle">true</item>
-    <!-- 无标题 -->
-    <item name="android:windowBackground">@color/hnyy_transparent</item>
-    <!-- 背景透明 -->
-    <item name="android:backgroundDimEnabled">true</item>
-    <item name="android:windowCloseOnTouchOutside">false</item>
-    <item name="android:windowFullscreen">true</item>
+        <item name="android:windowFrame">@null</item>
+        <!-- 边框 -->
+        <item name="android:windowIsFloating">true</item>
+        <!-- 是否浮现在activity之上 -->
+        <item name="android:windowIsTranslucent">false</item>
+        <!-- 半透明 -->
+        <item name="android:windowNoTitle">true</item>
+        <!-- 无标题 -->
+        <item name="android:windowBackground">@color/hnyy_transparent</item>
+        <!-- 背景透明 -->
+        <item name="android:backgroundDimEnabled">true</item>
+        <item name="android:windowCloseOnTouchOutside">false</item>
+        <item name="android:windowFullscreen">true</item>
     </style>
 
     <style name="hnyy_auto_login_dialog" parent="@android:style/Theme.Dialog">