Browse Source

提交分类: 测试版本;
提交内容: 1、启动页动图需求修改
2、application部分初始化配置移到service中进行
当前版本: 测试版本6.2.9
是否冲突: 否

raomeng 7 years ago
parent
commit
9722e85141
28 changed files with 577 additions and 332 deletions
  1. BIN
      WeiChat/src/main/assets/gif_splash_welcome.gif
  2. 54 21
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/SplashActivity.java
  3. 0 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/WorkPlatFragment.java
  4. 5 9
      WeiChat/src/main/res/layout/activity_splash.xml
  5. 1 1
      WeiChat/src/main/res/layout/fragment_work.xml
  6. 2 1
      WeiChat/src/main/res/layout/item_work_parent_layout.xml
  7. 3 3
      WeiChat/version.properties
  8. 2 0
      app_core/common/src/main/java/com/core/app/Constants.java
  9. 2 72
      app_core/common/src/main/java/com/core/app/MyApplication.java
  10. 32 17
      app_core/common/src/main/java/com/core/service/InitializeService.java
  11. 14 6
      app_core/common/src/main/java/com/core/widget/StrengthView.java
  12. 0 56
      app_core/common/src/main/res/layout/activity_splash.xml
  13. 1 0
      app_core/imageload/src/main/java/com/me/imageloader/BaseImageLoaderStrategy.java
  14. 4 0
      app_core/imageload/src/main/java/com/me/imageloader/ImageLoaderUtil.java
  15. 12 13
      app_core/imageload/src/main/java/com/me/imageloader/iml/GlideImageLoaderStrategy.java
  16. 5 6
      app_modular/applogin/src/main/java/com/modular/login/activity/AdminRegisterActivity.java
  17. 258 6
      app_modular/applogin/src/main/java/com/modular/login/activity/ModifyPasswordPhoneActivity.java
  18. BIN
      app_modular/applogin/src/main/res/drawable-hdpi/ic_modify_password_success.png
  19. BIN
      app_modular/applogin/src/main/res/drawable-hdpi/ic_password_reset.png
  20. BIN
      app_modular/applogin/src/main/res/drawable-xhdpi/ic_modify_password_success.png
  21. BIN
      app_modular/applogin/src/main/res/drawable-xhdpi/ic_password_reset.png
  22. BIN
      app_modular/applogin/src/main/res/drawable-xxhdpi/ic_modify_password_success.png
  23. BIN
      app_modular/applogin/src/main/res/drawable-xxhdpi/ic_password_reset.png
  24. 166 114
      app_modular/applogin/src/main/res/layout/activity_modify_password_phone.xml
  25. 4 0
      app_modular/applogin/src/main/res/values-en/strings.xml
  26. 4 0
      app_modular/applogin/src/main/res/values-zh-rCN/strings.xml
  27. 4 0
      app_modular/applogin/src/main/res/values-zh-rTW/strings.xml
  28. 4 0
      app_modular/applogin/src/main/res/values/strings.xml

BIN
WeiChat/src/main/assets/gif_splash_welcome.gif


+ 54 - 21
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/SplashActivity.java

@@ -4,7 +4,6 @@ import android.Manifest;
 import android.annotation.SuppressLint;
 import android.content.Intent;
 import android.os.Bundle;
-import android.os.Handler;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
@@ -33,6 +32,7 @@ import com.core.net.volley.ObjectResult;
 import com.core.net.volley.Result;
 import com.core.net.volley.StringJsonObjectRequest;
 import com.core.utils.CommonUtil;
+import com.core.utils.StatusBarUtil;
 import com.core.utils.TimeUtils;
 import com.core.utils.helper.LoginHelper;
 import com.core.utils.sp.UserSp;
@@ -47,6 +47,10 @@ import com.xzjmyk.pm.activity.ui.me.TimeStatisticsActivity;
 
 import java.util.HashMap;
 
+import pl.droidsonroids.gif.AnimationListener;
+import pl.droidsonroids.gif.GifDrawable;
+import pl.droidsonroids.gif.GifImageView;
+
 /**
  * 启动页
  *
@@ -55,17 +59,41 @@ import java.util.HashMap;
  */
 public class SplashActivity extends BaseActivity {
     private RelativeLayout mSelectLv;
+    private GifImageView mGifImageView;
     private final String IS_FIRST = "IS_FIRST";
+    boolean isJumpable = false;
 
     private long mStartTimeMs;// 记录进入该界面时间,保证至少在该界面停留3秒
     private boolean mConfigReady = false;// 配置获取成功
+    private GifDrawable mGifDrawable;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_splash);
         getSupportActionBar().hide();
-        mStartTimeMs = System.currentTimeMillis();
+        StatusBarUtil.immersive(this, 0x00000000, 0.0f);
+
+        mGifImageView = findViewById(R.id.splash_gif_view);
+        try {
+            mGifDrawable = new GifDrawable(getAssets(), "gif_splash_welcome.gif");
+            mGifDrawable.setLoopCount(1);
+            mGifDrawable.setSpeed(1.4f);
+            mGifDrawable.addAnimationListener(new AnimationListener() {
+                @Override
+                public void onAnimationCompleted(int loopNumber) {
+                    if (isJumpable) {
+                        jump();
+                    }
+                }
+            });
+            mGifImageView.setImageDrawable(mGifDrawable);
+
+            mGifDrawable.start();
+        } catch (Exception e) {
+
+        }
+
         mSelectLv = (RelativeLayout) findViewById(R.id.select_lv);
         mSelectLv.setVisibility(View.INVISIBLE);
         initConfig();// 初始化配置
@@ -76,7 +104,6 @@ public class SplashActivity extends BaseActivity {
     protected void onResume() {
         super.onResume();
         LogUtil.d("onResume()");
-
     }
 
     /**
@@ -123,7 +150,6 @@ public class SplashActivity extends BaseActivity {
                         .build(), new HttpCallback() {
                     @Override
                     public void onSuccess(int flag, Object o) throws Exception {
-                        Log.d("更新token成功", o.toString());
                         if (o != null) {
                             if (JSONUtil.validate(o.toString())) {
                                 JSONObject resultObject = JSON.parseObject(o.toString());
@@ -137,34 +163,26 @@ public class SplashActivity extends BaseActivity {
 
                     @Override
                     public void onFail(int flag, String failStr) throws Exception {
-                        LogUtil.e("更新token失败", failStr);
                     }
                 });
     }
 
     private void setConfig(ConfigBean configBean) {
         MyApplication.getInstance().setConfig(AppConfig.initConfig(this, configBean));// 初始化配置
-        ready();
+        isNeedLogin();
     }
 
-    private void ready() {
-        long currentTimeMs = System.currentTimeMillis();
-        int useTime = (int) (currentTimeMs - mStartTimeMs);
-        int delayTime = useTime > 20 ? 0 : 20 - useTime;
-        //两秒内请求不对进入
-        new Handler().postDelayed(new Runnable() {
-            @Override
-            public void run() {
-                jump2();
-            }
-        }, delayTime);
-    }
 
     @SuppressLint("NewApi")
     private void jump() {
         if (isDestroyed()) {
             return;
         }
+        boolean animationCompleted = mGifDrawable.isAnimationCompleted();
+        if (!animationCompleted) {
+            return;
+        }
+
         int userStatus = LoginHelper.prepareUser(mContext);
         switch (userStatus) {
             case LoginHelper.STATUS_USER_FULL://5
@@ -182,7 +200,7 @@ public class SplashActivity extends BaseActivity {
         }
     }
 
-    private void jump2() {
+    private void isNeedLogin() {
         boolean idIsEmpty = TextUtils.isEmpty(UserSp.getInstance(this).getUserId(""));
         boolean telephoneIsEmpty = TextUtils.isEmpty(UserSp.getInstance(this).getTelephone(null));
         if (!idIsEmpty && !telephoneIsEmpty) {// 用户标识都不为空,那么就能代表一个完整的用户
@@ -190,6 +208,7 @@ public class SplashActivity extends BaseActivity {
             String userId = UserSp.getInstance(this).getUserId("");
             User user = UserDao.getInstance().getUserByUserId(userId);
             if (!LoginHelper.isUserValidation(user)) {// 用户数据错误,那么就认为是一个游客
+                isJumpable = true;
                 jump();
             } else {
                 MyApplication.getInstance().mLoginUser = user;
@@ -198,18 +217,20 @@ public class SplashActivity extends BaseActivity {
                 login(user.getTelephone(), user.getPassword());
             }
         } else {
+            isJumpable = true;
             jump();
         }
-
     }
 
     //登陆
     private void login(final String phoneNumber, final String password) {
         if (TextUtils.isEmpty(phoneNumber)) {
+            isJumpable = true;
             jump();
             return;
         }
         if (TextUtils.isEmpty(password)) {
+            isJumpable = true;
             jump();
             return;
         }
@@ -234,11 +255,13 @@ public class SplashActivity extends BaseActivity {
                 new Response.ErrorListener() {
                     @Override
                     public void onErrorResponse(VolleyError arg0) {
+                        isJumpable = true;
                         jump();
                     }
                 }, new StringJsonObjectRequest.Listener<LoginRegisterResult>() {
             @Override
             public void onResponse(ObjectResult<LoginRegisterResult> result) {
+                isJumpable = true;
                 if (result == null) {
                     jump();
                     return;
@@ -248,7 +271,6 @@ public class SplashActivity extends BaseActivity {
                     success = LoginHelper.setLoginUser(mContext, phoneNumber, password, result);// 设置登陆用户信息
                 }
                 if (success) {// 登陆IM成功
-                    trun2NextPage(1);
                     String nowtime = TimeUtils.f_long_2_str(System.currentTimeMillis());
                     String saved_time = PreferenceUtils.getString(MyApplication.getInstance(), TimeStatisticsActivity.Login_In);
                     if (!TextUtils.isEmpty(saved_time)) {
@@ -256,6 +278,10 @@ public class SplashActivity extends BaseActivity {
                     } else {
                         PreferenceUtils.putString(TimeStatisticsActivity.Login_In, nowtime);
                     }
+                    boolean animationCompleted = mGifDrawable.isAnimationCompleted();
+                    if (animationCompleted) {
+                        trun2NextPage(1);
+                    }
                 } else {// 登录失败
                     jump();
                 }
@@ -301,4 +327,11 @@ public class SplashActivity extends BaseActivity {
         Animation anim = AnimationUtils.loadAnimation(this, R.anim.alpha_in);
         mSelectLv.startAnimation(anim);
     }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        mGifDrawable.recycle();
+        mGifDrawable = null;
+    }
 }

+ 0 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/WorkPlatFragment.java

@@ -15,7 +15,6 @@ import android.widget.TextView;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.common.LogUtil;
 import com.common.config.BaseConfig;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
@@ -221,11 +220,9 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
             //个人用户
             if (userId != null) {
                 if (!userId.equals(mUserId)) {
-                    LogUtil.d("工作台", "loadMenu1");
                     mPresenter.uasRequest(mContext, new HttpParams.Builder().flag(Constants.LOAD_WORK_MENU_CACHE).build());
                 }
             } else {
-                LogUtil.d("工作台", "loadMenu2");
                 mPresenter.uasRequest(mContext, new HttpParams.Builder().flag(Constants.LOAD_WORK_MENU_CACHE).build());
             }
             mUserId = userId;
@@ -237,11 +234,9 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
             String companyName = com.core.utils.CommonUtil.getSharedPreferences(mContext, "companyName");
             if (companyName != null && userId != null) {
                 if ((!userId.equals(mUserId) || !companyName.equals(mCompanyName))) {
-                    LogUtil.d("工作台", "loadMenu1");
                     mPresenter.uasRequest(mContext, new HttpParams.Builder().flag(Constants.LOAD_WORK_MENU_CACHE).build());
                 }
             } else {
-                LogUtil.d("工作台", "loadMenu2");
                 mPresenter.uasRequest(mContext, new HttpParams.Builder().flag(Constants.LOAD_WORK_MENU_CACHE).build());
             }
             mUserId = userId;
@@ -254,11 +249,9 @@ public class WorkPlatFragment extends BaseMVPFragment<WorkPlatPresenter> impleme
             String erp_master = com.core.utils.CommonUtil.getSharedPreferences(mContext, "erp_master");
             if (erp_company != null && erp_master != null && userId != null) {
                 if ((!userId.equals(mUserId) || !erp_company.equals(mCompanyName) || !erp_master.equals(mMaster))) {
-                    LogUtil.d("工作台", "loadMenu1");
                     mPresenter.uasRequest(mContext, new HttpParams.Builder().flag(Constants.LOAD_WORK_MENU_CACHE).build());
                 }
             } else {
-                LogUtil.d("工作台", "loadMenu2");
                 mPresenter.uasRequest(mContext, new HttpParams.Builder().flag(Constants.LOAD_WORK_MENU_CACHE).build());
             }
             mUserId = userId;

+ 5 - 9
WeiChat/src/main/res/layout/activity_splash.xml

@@ -1,18 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-
     android:layout_height="match_parent">
 
-
-    <ImageView
-        android:id="@+id/welcome_iv"
+    <pl.droidsonroids.gif.GifImageView
+        android:id="@+id/splash_gif_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:contentDescription="@string/app_name"
-        android:background="@drawable/index"
-        android:scaleType="centerCrop"
-        />
+        android:scaleType="centerCrop" />
 
     <RelativeLayout
         android:id="@+id/select_lv"

+ 1 - 1
WeiChat/src/main/res/layout/fragment_work.xml

@@ -11,7 +11,7 @@
     <ImageView
         android:id="@+id/work_plat_main_header_iv"
         android:layout_width="match_parent"
-        android:layout_height="100dp"
+        android:layout_height="120dp"
         android:scaleType="fitXY"
         android:src="@drawable/ic_work_header_bg" />
 

+ 2 - 1
WeiChat/src/main/res/layout/item_work_parent_layout.xml

@@ -8,7 +8,8 @@
     android:layout_height="wrap_content"
     app:cardBackgroundColor="@color/white"
     app:cardCornerRadius="6dp"
-    app:cardElevation="5dp"
+    app:cardElevation="4dp"
+    app:cardMaxElevation="5dp"
     app:cardPreventCornerOverlap="true"
     app:cardUseCompatPadding="true">
 

+ 3 - 3
WeiChat/version.properties

@@ -1,5 +1,5 @@
-#Thu May 03 18:27:25 CST 2018
+#Mon May 07 20:50:56 CST 2018
 debugName=164
-versionName=631
+versionName=634
 debugCode=164
-versionCode=171
+versionCode=174

+ 2 - 0
app_core/common/src/main/java/com/core/app/Constants.java

@@ -541,5 +541,7 @@ public class Constants {
 
         String B2B_BUSINESS_ENUU = "b2b_business_enuu";
         String EN_BUSINESS_CODE = "en_business_code";
+
+        String MODIFY_PASSWORD_VERIFY_CODE = "modify_password_verify_code";
     }
 }

+ 2 - 72
app_core/common/src/main/java/com/core/app/MyApplication.java

@@ -7,21 +7,16 @@ import android.os.Build;
 import android.os.Bundle;
 import android.os.Environment;
 import android.os.Handler;
-import android.os.StrictMode;
 import android.support.multidex.MultiDex;
 import android.text.TextUtils;
 import android.util.Log;
 
 import com.android.volley.RequestQueue;
 import com.android.volley.toolbox.Volley;
-import com.baidu.mapapi.SDKInitializer;
 import com.common.config.BaseApplication;
 import com.common.config.BaseConfig;
-import com.common.preferences.PreferenceUtils;
-import com.common.preferences.SharedUtil;
 import com.core.db.DBOpenHelper;
 import com.core.db.DatabaseManager;
-import com.core.db.SQLiteHelper;
 import com.core.model.ConfigBean;
 import com.core.model.User;
 import com.core.net.NetWorkObservable;
@@ -29,12 +24,9 @@ import com.core.net.location.BdLocationHelper;
 import com.core.net.ssl.AuthImageDownloader;
 import com.core.net.utils.NetUtils;
 import com.core.net.volley.FastVolley;
+import com.core.service.InitializeService;
 import com.core.utils.CommonUtil;
-import com.facebook.stetho.Stetho;
-import com.iflytek.cloud.SpeechConstant;
-import com.iflytek.cloud.SpeechUtility;
 import com.lidroid.xutils.HttpUtils;
-import com.me.network.app.http.ssl.TrustAllCerts;
 import com.nostra13.universalimageloader.cache.disc.impl.TotalSizeLimitedDiscCache;
 import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
 import com.nostra13.universalimageloader.cache.memory.MemoryCacheAware;
@@ -46,18 +38,14 @@ import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
 import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
 import com.tencent.mm.opensdk.openapi.IWXAPI;
 import com.tencent.mm.opensdk.openapi.WXAPIFactory;
-import com.tencent.smtt.sdk.QbSdk;
 import com.umeng.analytics.MobclickAgent;
 import com.umeng.socialize.Config;
 import com.umeng.socialize.PlatformConfig;
-import com.uuzuche.lib_zxing.activity.ZXingLibrary;
 
 import org.apache.http.cookie.Cookie;
 
 import java.io.File;
 
-import cat.ereza.customactivityoncrash.CustomActivityOnCrash;
-
 /**
  * Created by Arison on 2017/8/25.
  */
@@ -121,48 +109,16 @@ public class MyApplication extends BaseApplication {
     @Override
     public void initConfig() throws Exception {
         //后台服务初始化application
-//        InitializeService.initApplication(this);
-        Stetho.initializeWithDefaults(this);
-        SpeechUtility.createUtility(this, SpeechConstant.APPID + "=5876dc99");
-        //自定义闪退页面初始化
-        CustomActivityOnCrash.install(this);
-        //设置ErrorActivity在后台启动,默认为true
-        CustomActivityOnCrash.setLaunchErrorActivityWhenInBackground(true);
-        //设置展示详细错误信息,默认为true
-        CustomActivityOnCrash.setShowErrorDetails(true);
-        //启用APP Restart,默认为true
-        CustomActivityOnCrash.setEnableAppRestart(true);
-        //设置重新启动的activity
-        //  CustomActivityOnCrash.setRestartActivityClass(SplashActivity.class);
+        InitializeService.initApplication(this);
 
         INSTANCE = this;
-        TrustAllCerts.allowAllSSL();//信任所有证书
         mRequestQueue = Volley.newRequestQueue(this);
-
         mHttpUtils = new HttpUtils();
         configHttpUtils();
 
-        Config.REDIRECT_URL = "http://sns.whalecloud.com/sina2/callback";
-        ZXingLibrary.initDisplayOpinion(this);
-        SharedUtil.init(this);
-
-        initShareAPI();
-
-        initWxPay(this);
-        //  CrashReport.initCrashReport(getApplicationContext(), "900050585", false);
-        PreferenceUtils.putBoolean(this, Constants.IS_NOTIFICATION, false);//不进行通知
-
         new Handler().postDelayed(new Runnable() {
             @Override
             public void run() {
-                //定位场景设置
-                MobclickAgent.setScenarioType(MyApplication.this, MobclickAgent.EScenarioType.E_UM_NORMAL);
-                initUmengStatistics();
-
-                SDKInitializer.initialize(getApplicationContext());
-                // 初始化数据库
-                SQLiteHelper.copyDatabaseFile(getApplicationContext());
-
                 // 初始化定位
                 getBdLocationHelper();
                 // 初始化App目录
@@ -172,32 +128,6 @@ public class MyApplication extends BaseApplication {
             }
         }, 1);
 
-        //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
-        QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
-
-            @Override
-            public void onViewInitFinished(boolean arg0) {
-                // TODO Auto-generated method stub
-                //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
-                Log.d("app", " onViewInitFinished is " + arg0);
-            }
-
-            @Override
-            public void onCoreInitFinished() {
-                // TODO Auto-generated method stub
-            }
-        };
-        //x5内核初始化接口
-        QbSdk.initX5Environment(getApplicationContext(), cb);
-
-        if (AppConfig.DEBUG) {
-            Log.d(AppConfig.TAG, "MyApplication onCreate");
-        }
-        if (AppConfig.DEBUG) {
-            StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build());
-            StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build());
-        }
-        initErpDB();
         // 初始化网络监听
         mNetWorkObservable = new NetWorkObservable(this);
 

+ 32 - 17
app_core/common/src/main/java/com/core/service/InitializeService.java

@@ -8,7 +8,6 @@ import android.support.annotation.Nullable;
 import android.util.Log;
 
 import com.baidu.mapapi.SDKInitializer;
-import com.common.LogUtil;
 import com.common.preferences.PreferenceUtils;
 import com.common.preferences.SharedUtil;
 import com.core.app.AppConfig;
@@ -20,8 +19,10 @@ import com.core.utils.CommonUtil;
 import com.facebook.stetho.Stetho;
 import com.iflytek.cloud.SpeechConstant;
 import com.iflytek.cloud.SpeechUtility;
+import com.me.network.app.http.ssl.TrustAllCerts;
 import com.tencent.mm.opensdk.openapi.IWXAPI;
 import com.tencent.mm.opensdk.openapi.WXAPIFactory;
+import com.tencent.smtt.sdk.QbSdk;
 import com.umeng.analytics.MobclickAgent;
 import com.umeng.socialize.Config;
 import com.umeng.socialize.PlatformConfig;
@@ -74,6 +75,9 @@ public class InitializeService extends IntentService {
         CustomActivityOnCrash.setEnableAppRestart(true);
         //设置重新启动的activity
         //  CustomActivityOnCrash.setRestartActivityClass(SplashActivity.class);
+
+        TrustAllCerts.allowAllSSL();//信任所有证书
+
         Config.REDIRECT_URL = "http://sns.whalecloud.com/sina2/callback";
         ZXingLibrary.initDisplayOpinion(mContext);
         SharedUtil.init(mContext);
@@ -84,6 +88,30 @@ public class InitializeService extends IntentService {
         //  CrashReport.initCrashReport(getApplicationContext(), "900050585", false);
         PreferenceUtils.putBoolean(mContext, Constants.IS_NOTIFICATION, false);//不进行通知
 
+        //定位场景设置
+        MobclickAgent.setScenarioType(mContext, MobclickAgent.EScenarioType.E_UM_NORMAL);
+        initUmengStatistics();
+
+        SDKInitializer.initialize(getApplicationContext());
+        // 初始化数据库
+        SQLiteHelper.copyDatabaseFile(getApplicationContext());
+
+        //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
+        QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
+
+            @Override
+            public void onViewInitFinished(boolean arg0) {
+                //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
+                Log.d("app", " onViewInitFinished is " + arg0);
+            }
+
+            @Override
+            public void onCoreInitFinished() {
+            }
+        };
+        //x5内核初始化接口
+        QbSdk.initX5Environment(getApplicationContext(), cb);
+
         if (AppConfig.DEBUG) {
             Log.d(AppConfig.TAG, "MyApplication onCreate");
         }
@@ -91,21 +119,8 @@ public class InitializeService extends IntentService {
             StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build());
             StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build());
         }
-        initErpDB();
-
-        //定位场景设置
-        MobclickAgent.setScenarioType(mContext, MobclickAgent.EScenarioType.E_UM_NORMAL);
-        initUmengStatistics();
 
-        SDKInitializer.initialize(this);
-        // 初始化数据库
-        SQLiteHelper.copyDatabaseFile(mContext);
-        /*try {
-            com.core.app.Constants.cleanRed(this);
-        } catch (PackageManager.NameNotFoundException e) {
-            e.printStackTrace();
-        }*/
-        LogUtil.d("InitializeService", "InitializeService-->finish");
+        initErpDB();
     }
 
     public void initShareAPI() {
@@ -121,11 +136,11 @@ public class InitializeService extends IntentService {
     }
 
     private void initErpDB() {
-        DatabaseManager.initializeInstance(DBOpenHelper.getInstance(this));
+        DatabaseManager.initializeInstance(DBOpenHelper.getInstance(mContext));
     }
 
     private void initUmengStatistics() {
-        MobclickAgent.UMAnalyticsConfig config = new MobclickAgent.UMAnalyticsConfig(this, "57ea27bb67e58e088c003bbf",
+        MobclickAgent.UMAnalyticsConfig config = new MobclickAgent.UMAnalyticsConfig(mContext, "57ea27bb67e58e088c003bbf",
                 "baidu", MobclickAgent.EScenarioType.E_UM_NORMAL);
         MobclickAgent.startWithConfigure(config);
         if (!CommonUtil.isReleaseVersion()) {//当前为开发版本时候不需要上传友盟

+ 14 - 6
app_core/common/src/main/java/com/core/widget/StrengthView.java

@@ -9,6 +9,8 @@ import android.support.annotation.Nullable;
 import android.util.AttributeSet;
 import android.view.View;
 
+import com.common.system.DisplayUtil;
+
 /**
  * @author RaoMeng
  * @describe 密码强度
@@ -17,7 +19,7 @@ import android.view.View;
 public class StrengthView extends View {
 
     public enum Level {
-        STRENGTH_NONE("无", Color.GRAY, 0), STRENGTH_WEAK("低", Color.RED, 1), STRENGTH_MEDIUM("中", Color.YELLOW, 2), STRENGTH_STRONG("高", Color.GREEN, 3);
+        STRENGTH_NONE("无", Color.parseColor("#C5C4C4"), 0), STRENGTH_WEAK("低", Color.BLACK, 1), STRENGTH_MEDIUM("中", Color.BLACK, 2), STRENGTH_STRONG("高", Color.BLACK, 3);
         String levelStr;
         int levelColor;
         int index;
@@ -29,13 +31,13 @@ public class StrengthView extends View {
         }
     }
 
-    private int mTextSize = 40;
+    private int mTextSize;
     private Level mLevel;//强度等级
     private Paint mPaint;
-    float levelWidth = 80;
-    float gap = 30;
-    float levelHeight = 20;
-    float textPadding = 20;
+    float levelWidth;
+    float gap;
+    float levelHeight;
+    float textPadding;
     // 文字尺寸
     private float mTextWidth;
     private float mTextHeight;
@@ -63,6 +65,12 @@ public class StrengthView extends View {
     }
 
     private void initStrengthView(Context context, AttributeSet attrs, int defStyleAttr) {
+        levelWidth = DisplayUtil.dip2px(context, 26);
+        gap = DisplayUtil.dip2px(context, 8);
+        levelHeight = DisplayUtil.dip2px(context, 4);
+        textPadding = DisplayUtil.dip2px(context, 8);
+        mTextSize = DisplayUtil.sp2px(context, 14);
+
         mLevel = Level.STRENGTH_NONE;
         mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
         mPaint.setTextSize(mTextSize);

+ 0 - 56
app_core/common/src/main/res/layout/activity_splash.xml

@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-
-    android:layout_height="match_parent">
-
-
-    <ImageView
-        android:id="@+id/welcome_iv"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:contentDescription="@string/app_name"
-        android:background="@drawable/index"
-        android:scaleType="centerCrop"
-        />
-
-    <RelativeLayout
-        android:id="@+id/select_lv"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="bottom"
-        android:layout_marginBottom="70.0dip"
-        android:background="@null">
-
-        <Button
-            android:id="@+id/select_login_btn"
-            style="@style/IMButton.Green"
-            android:layout_centerInParent="true"
-            android:layout_marginLeft="21dp"
-            android:gravity="center"
-            android:paddingLeft="30dp"
-            android:paddingRight="30dp"
-            android:shadowColor="#ffb8b8b8"
-            android:shadowDx="1.2"
-            android:shadowDy="1.2"
-            android:shadowRadius="1.0"
-            android:text="@string/login"
-            android:visibility="gone" />
-
-        <Button
-            android:id="@+id/select_register_btn"
-            style="@style/IMButton.Green"
-            android:layout_alignParentRight="true"
-            android:layout_marginRight="21dp"
-            android:gravity="center"
-            android:paddingLeft="30dp"
-            android:paddingRight="30dp"
-            android:shadowColor="#ff016c08"
-            android:shadowDx="1.2"
-            android:shadowDy="1.2"
-            android:shadowRadius="1.0"
-            android:text="@string/register"
-            android:visibility="gone" />
-    </RelativeLayout>
-
-</FrameLayout>

+ 1 - 0
app_core/imageload/src/main/java/com/me/imageloader/BaseImageLoaderStrategy.java

@@ -25,6 +25,7 @@ public interface BaseImageLoaderStrategy {
     void loadCircleBorderImage(String url, int placeholder, ImageView imageView, float borderWidth, int borderColor, int heightPx, int widthPx);
 
     void loadGifImage(String url, int placeholder, ImageView imageView);
+    void loadGifImage(int resId, int placeholder, ImageView imageView);
 
     void loadImageWithProgress(String url, ImageView imageView, ProgressLoadListener listener);
     void loadImageWithPrepareCall(String url, ImageView imageView, int placeholder, SourceReadyListener listener);

+ 4 - 0
app_core/imageload/src/main/java/com/me/imageloader/ImageLoaderUtil.java

@@ -43,6 +43,10 @@ public class ImageLoaderUtil {
         mStrategy.loadGifImage(url, placeholder, imageView);
     }
 
+    public void loadGifImage(int resId, int placeholder, ImageView imageView) {
+        mStrategy.loadGifImage(resId, placeholder, imageView);
+    }
+
     public void loadCircleImage(String url, int placeholder, ImageView imageView) {
         mStrategy.loadCircleImage(url, placeholder, imageView);
     }

+ 12 - 13
app_core/imageload/src/main/java/com/me/imageloader/iml/GlideImageLoaderStrategy.java

@@ -15,6 +15,7 @@ import com.bumptech.glide.load.model.LazyHeaders;
 import com.bumptech.glide.load.resource.drawable.GlideDrawable;
 import com.bumptech.glide.load.resource.gif.GifDrawable;
 import com.bumptech.glide.request.RequestListener;
+import com.bumptech.glide.request.target.GlideDrawableImageViewTarget;
 import com.bumptech.glide.request.target.Target;
 import com.me.imageloader.BaseImageLoaderStrategy;
 import com.me.imageloader.listener.ImageSaveListener;
@@ -121,6 +122,11 @@ public class GlideImageLoaderStrategy implements BaseImageLoaderStrategy {
         loadGif(imageView.getContext(), url, placeholder, imageView);
     }
 
+    @Override
+    public void loadGifImage(int resId, int placeholder, ImageView imageView) {
+        loadGif(imageView.getContext(), resId, placeholder, imageView);
+    }
+
     /**
      * @desc:图片加载进度 暂未实现
      * @author:Arison on 2017/5/23
@@ -306,20 +312,13 @@ public class GlideImageLoaderStrategy implements BaseImageLoaderStrategy {
      */
     private void loadGif(final Context ctx, String url, int placeholder, ImageView imageView) {
         Glide.with(ctx).load(url)
-                .asGif()
-                .placeholder(placeholder)
-                .skipMemoryCache(true)//禁止内存缓存:
                 .diskCacheStrategy(DiskCacheStrategy.SOURCE)
-                .listener(new RequestListener<String, GifDrawable>() {
-                    @Override
-                    public boolean onException(Exception e, String model, Target<GifDrawable> target, boolean isFirstResource) {
-                        return false;
-                    }
+                .into(new GlideDrawableImageViewTarget(imageView, 1));
+    }
 
-                    @Override
-                    public boolean onResourceReady(GifDrawable resource, String model, Target<GifDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
-                        return false;
-                    }
-                }).into(imageView);
+    private void loadGif(final Context ctx, int resId, int placeholder, ImageView imageView) {
+        Glide.with(ctx).load(resId)
+                .diskCacheStrategy(DiskCacheStrategy.SOURCE)
+                .into(new GlideDrawableImageViewTarget(imageView, 1));
     }
 }

+ 5 - 6
app_modular/applogin/src/main/java/com/modular/login/activity/AdminRegisterActivity.java

@@ -89,24 +89,23 @@ public class AdminRegisterActivity extends BaseActivity implements View.OnClickL
                                     }, 0, 1000);
 
                                     ToastUtil.showToast(AdminRegisterActivity.this
-                                            , "验证码已发送,请注意接收");
+                                            , getString(R.string.verify_code_have_sent));
                                     mCheckcodeToken = contentObject.optString("token");
                                     CommonUtil.setSharedPreferences(AdminRegisterActivity.this
                                             , Constants.ENTERPRISE_REGISTER_CODE, mCheckcodeToken);
                                 } else {
                                     progressDialog.dismiss();
                                     mAdminObtainCodeTv.setEnabled(true);
-                                    mAdminObtainCodeTv.setText("获取验证码");
-                                    ToastUtil.showToast(AdminRegisterActivity.this
-                                            , "验证码获取失败,请重试");
+                                    mAdminObtainCodeTv.setText(R.string.obtain_verify_code);
+                                    toast(getString(R.string.obtain_verify_code_failed));
                                 }
                             } else {
                                 progressDialog.dismiss();
                                 String errMsg = resultObject.optString("errMsg");
                                 ToastUtil.showToast(AdminRegisterActivity.this
-                                        , TextUtils.isEmpty(errMsg) ? "验证码获取失败,请重试" : errMsg);
+                                        , TextUtils.isEmpty(errMsg) ? getString(R.string.obtain_verify_code_failed) : errMsg);
                                 mAdminObtainCodeTv.setEnabled(true);
-                                mAdminObtainCodeTv.setText("获取验证码");
+                                mAdminObtainCodeTv.setText(R.string.obtain_verify_code);
                             }
                         } catch (JSONException e) {
                             e.printStackTrace();

+ 258 - 6
app_modular/applogin/src/main/java/com/modular/login/activity/ModifyPasswordPhoneActivity.java

@@ -1,24 +1,76 @@
 package com.modular.login.activity;
 
+import android.os.Handler;
+import android.os.Message;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.util.Log;
 import android.view.View;
+import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.common.data.JSONUtil;
+import com.core.app.Constants;
 import com.core.base.activity.BaseMVPActivity;
 import com.core.base.presenter.SimplePresenter;
 import com.core.base.view.SimpleView;
+import com.core.utils.CommonUtil;
+import com.core.utils.ToastUtil;
 import com.core.widget.ClearEditText;
 import com.core.widget.StrengthView;
+import com.me.network.app.base.HttpParams;
+import com.me.network.app.http.Method;
 import com.modular.login.R;
 
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+
 /**
  * @author RaoMeng
  * @describe 修改密码(通过手机号)
  * @date 2018/5/4 10:45
  */
-public class ModifyPasswordPhoneActivity extends BaseMVPActivity<SimplePresenter> implements SimpleView {
+public class ModifyPasswordPhoneActivity extends BaseMVPActivity<SimplePresenter> implements SimpleView, View.OnClickListener {
+    public static final String REGEXP_MOBILE_CONTINENT = "1[0-9]{10}";
+    private static final int FLAG_OBTAIN_CODE = 11;
+    private static final int FLAG_CONFIRM_MODIFY = 12;
+    private static final int VERIFICATION_TIME_TASK = 13;
+
     private ClearEditText mPhoneEditText, mCodeEditText, mPasswordEditText, mPasswordConfirmEditText;
-    private TextView mObtainCodeTextView, mConfirmButton;
+    private TextView mObtainCodeTextView, mConfirmButton, mSuccessButton;
     private StrengthView mStrengthView;
+    private LinearLayout mSuccessLinearLayout;
+
+    private String mVerifyToken;
+    private ScheduledExecutorService mExecutorService;
+    private ScheduledFuture<?> mScheduledFuture;
+    private int mTime = 60;
+    private Timer mTimer;
+    private Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case VERIFICATION_TIME_TASK:
+                    if (mTime > 0) {
+                        mTime--;
+                        mObtainCodeTextView.setEnabled(false);
+                        mObtainCodeTextView.setText(mTime + "秒后重新获取");
+                    } else {
+                        if (mTimer != null) {
+                            mTimer.cancel();
+                        }
+                        mObtainCodeTextView.setEnabled(true);
+                        mObtainCodeTextView.setText(R.string.obtain_verify_code);
+                    }
+                    break;
+            }
+        }
+    };
 
     @Override
     protected int getLayout() {
@@ -36,6 +88,8 @@ public class ModifyPasswordPhoneActivity extends BaseMVPActivity<SimplePresenter
         mObtainCodeTextView = $(R.id.modify_password_phone_code_btn);
         mConfirmButton = $(R.id.modify_password_phone_confirm_tv);
         mStrengthView = $(R.id.modify_password_phone_strength_sv);
+        mSuccessButton = $(R.id.modify_password_success_btn);
+        mSuccessLinearLayout = $(R.id.modify_password_success_ll);
     }
 
     @Override
@@ -45,10 +99,38 @@ public class ModifyPasswordPhoneActivity extends BaseMVPActivity<SimplePresenter
 
     @Override
     protected void initEvent() {
-        mConfirmButton.setOnClickListener(new View.OnClickListener() {
+        mObtainCodeTextView.setOnClickListener(this);
+        mConfirmButton.setOnClickListener(this);
+        mSuccessButton.setOnClickListener(this);
+
+        mPhoneEditText.addTextChangedListener(new EnableTextWatcher());
+        mCodeEditText.addTextChangedListener(new EnableTextWatcher());
+        mPasswordConfirmEditText.addTextChangedListener(new EnableTextWatcher());
+        mPasswordEditText.addTextChangedListener(new TextWatcher() {
             @Override
-            public void onClick(View view) {
-                mStrengthView.setLevel(StrengthView.Level.STRENGTH_MEDIUM);
+            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+            }
+
+            @Override
+            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+            }
+
+            @Override
+            public void afterTextChanged(Editable editable) {
+                StrengthView.Level passwordLevel = checkPasswordLevel(editable.toString());
+                if (passwordLevel == StrengthView.Level.STRENGTH_NONE) {
+                    mStrengthView.setVisibility(View.GONE);
+                } else {
+                    mStrengthView.setVisibility(View.VISIBLE);
+                    mStrengthView.setLevel(passwordLevel);
+                    if (passwordLevel == StrengthView.Level.STRENGTH_WEAK) {
+                        mConfirmButton.setEnabled(false);
+                    } else {
+                        isConfirmEnable();
+                    }
+                }
             }
         });
     }
@@ -58,23 +140,193 @@ public class ModifyPasswordPhoneActivity extends BaseMVPActivity<SimplePresenter
 
     }
 
+    @Override
+    public void onClick(View view) {
+        int i = view.getId();
+        if (i == R.id.modify_password_phone_code_btn) {
+            String phone = mPhoneEditText.getText().toString().trim();
+            if (!TextUtils.isEmpty(phone) && phone.matches(REGEXP_MOBILE_CONTINENT)) {
+                if (CommonUtil.isNetWorkConnected(this)) {
+                    mObtainCodeTextView.setEnabled(false);
+                    mObtainCodeTextView.setText(R.string.verify_code_obtaining);
+
+                    mPresenter.httpRequest(this, Constants.ACCOUNT_CENTER_HOST,
+                            new HttpParams.Builder()
+                                    .url("im/resetPwd/checkCode")
+                                    .method(Method.GET)
+                                    .flag(FLAG_OBTAIN_CODE)
+                                    .addParam("mobile", phone)
+                                    .build());
+                } else {
+                    ToastUtil.showToast(this, R.string.networks_out);
+                }
+            } else {
+                toast("请填写正确的手机号");
+            }
+        } else if (i == R.id.modify_password_phone_confirm_tv) {
+            String phone = mPhoneEditText.getText().toString().trim();
+            if (!TextUtils.isEmpty(phone) && phone.matches(REGEXP_MOBILE_CONTINENT)) {
+                String password1 = mPasswordEditText.getText().toString().trim();
+                String password2 = mPasswordConfirmEditText.getText().toString().trim();
+                String codeToken = CommonUtil.getSharedPreferences(this, Constants.CACHE.MODIFY_PASSWORD_VERIFY_CODE);
+                if (password1 != null && password1.equals(password2)) {
+                    String verifyCode = mCodeEditText.getText().toString().trim();
+                    mPresenter.httpRequest(this, Constants.ACCOUNT_CENTER_HOST,
+                            new HttpParams.Builder()
+                                    .url("im/resetPwd")
+                                    .method(Method.POST)
+                                    .flag(FLAG_CONFIRM_MODIFY)
+                                    .addParam("mobile", phone)
+                                    .addParam("token", codeToken)
+                                    .addParam("code", verifyCode)
+                                    .addParam("password", password1).build());
+                } else {
+                    toast("两次输入的密码不一致");
+                }
+            } else {
+                toast("请填写正确的手机号");
+            }
+        } else if (i == R.id.modify_password_success_btn) {
+            startActivity(LoginActivity.class);
+            finish();
+        }
+    }
+
+    class EnableTextWatcher implements TextWatcher {
+
+        @Override
+        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+        }
+
+        @Override
+        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+        }
+
+        @Override
+        public void afterTextChanged(Editable editable) {
+            isConfirmEnable();
+        }
+    }
+
+    private void isConfirmEnable() {
+        String phone = mPhoneEditText.getText().toString().trim();
+        String code = mCodeEditText.getText().toString().trim();
+        String password1 = mPasswordEditText.getText().toString().trim();
+        String password2 = mPasswordConfirmEditText.getText().toString().trim();
+        if (TextUtils.isEmpty(phone) || TextUtils.isEmpty(code) || TextUtils.isEmpty(password1) || TextUtils.isEmpty(password2)) {
+            mConfirmButton.setEnabled(false);
+        } else {
+            mConfirmButton.setEnabled(true);
+        }
+    }
+
     @Override
     public void requestSuccess(int what, Object object) {
+        String result = (object == null ? "" : object.toString());
+        switch (what) {
+            case FLAG_OBTAIN_CODE:
+                try {
+                    analysisVerifyCode(result);
+                } catch (Exception e) {
+                    toast(getString(R.string.obtain_verify_code_failed));
+                    mObtainCodeTextView.setEnabled(true);
+                    mObtainCodeTextView.setText(R.string.obtain_verify_code);
+                }
+                break;
+            case FLAG_CONFIRM_MODIFY:
+                try {
+                    JSONObject resultObject = JSON.parseObject(result);
+                    boolean success = JSONUtil.getBoolean(resultObject, "success");
+                    if (success) {
+                        mSuccessLinearLayout.setVisibility(View.VISIBLE);
+                    } else {
+                        String errorMsg = JSONUtil.getText(resultObject, "errMsg");
+                        if (TextUtils.isEmpty(errorMsg)) {
+                            toast("密码修改异常");
+                        } else {
+                            toast(errorMsg);
+                        }
+                    }
+                } catch (Exception e) {
 
+                }
+                break;
+            default:
+                break;
+        }
     }
 
     @Override
     public void requestError(int what, String errorMsg) {
+        switch (what) {
+            case FLAG_OBTAIN_CODE:
+                toast(getString(R.string.obtain_verify_code_failed));
+                mObtainCodeTextView.setEnabled(true);
+                mObtainCodeTextView.setText(R.string.obtain_verify_code);
+                break;
+            case FLAG_CONFIRM_MODIFY:
+                toast(errorMsg);
+                break;
+            default:
+                break;
+        }
+    }
 
+    private void analysisVerifyCode(String result) {
+        if (JSONUtil.validate(result)) {
+            Log.d("modifyCode", result);
+            JSONObject resultObject = JSON.parseObject(result);
+            JSONObject contentObject = resultObject.getJSONObject("content");
+            if (contentObject != null) {
+                toast(R.string.verify_code_have_sent);
+                mVerifyToken = JSONUtil.getText(contentObject, "token");
+                CommonUtil.setSharedPreferences(this, Constants.CACHE.MODIFY_PASSWORD_VERIFY_CODE, mVerifyToken);
+                mTime = 60;
+                mTimer = new Timer();
+                mTimer.schedule(new TimerTask() {
+                    @Override
+                    public void run() {
+                        Message message = Message.obtain();
+                        message.what = VERIFICATION_TIME_TASK;
+                        mHandler.sendMessage(message);
+                    }
+                }, 0, 1000);
+            } else {
+                toast(getString(R.string.obtain_verify_code_failed));
+                mObtainCodeTextView.setEnabled(true);
+                mObtainCodeTextView.setText(R.string.obtain_verify_code);
+            }
+        } else {
+            toast(getString(R.string.obtain_verify_code_failed));
+            mObtainCodeTextView.setEnabled(true);
+            mObtainCodeTextView.setText(R.string.obtain_verify_code);
+        }
     }
 
     @Override
     public void showLoading(String loadStr) {
-
+        progressDialog.show();
     }
 
     @Override
     public void hideLoading() {
+        progressDialog.dismiss();
+
+    }
 
+    public static StrengthView.Level checkPasswordLevel(String password) {
+        String strongRegex = "^(?=.{8,20})(((?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]))|((?=.*[0-9])((?=.*[a-zA-Z]))(?=.*[^a-zA-Z0-9]))).*$";
+        String mediumRegex = "^(?=.{8,20})(((?=.*[0-9])(?=.*[a-z]))|((?=.*[0-9])(?=.*[A-Z]))).*$";
+        if (TextUtils.isEmpty(password)) {
+            return StrengthView.Level.STRENGTH_NONE;
+        } else if (password.matches(strongRegex)) {
+            return StrengthView.Level.STRENGTH_STRONG;
+        } else if (password.matches(mediumRegex)) {
+            return StrengthView.Level.STRENGTH_MEDIUM;
+        } else {
+            return StrengthView.Level.STRENGTH_WEAK;
+        }
     }
 }

BIN
app_modular/applogin/src/main/res/drawable-hdpi/ic_modify_password_success.png


BIN
app_modular/applogin/src/main/res/drawable-hdpi/ic_password_reset.png


BIN
app_modular/applogin/src/main/res/drawable-xhdpi/ic_modify_password_success.png


BIN
app_modular/applogin/src/main/res/drawable-xhdpi/ic_password_reset.png


BIN
app_modular/applogin/src/main/res/drawable-xxhdpi/ic_modify_password_success.png


BIN
app_modular/applogin/src/main/res/drawable-xxhdpi/ic_password_reset.png


+ 166 - 114
app_modular/applogin/src/main/res/layout/activity_modify_password_phone.xml

@@ -1,141 +1,193 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout
+<FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:padding="20dp">
+    android:layout_height="match_parent">
 
     <LinearLayout
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@drawable/shape_gray_slight_corner_white_bg"
-        android:gravity="center_vertical"
-        android:orientation="horizontal">
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:padding="20dp">
 
-        <ImageView
-            android:layout_width="30dp"
+        <LinearLayout
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginLeft="10dp"
-            android:src="@drawable/ic_modify_phone" />
-
-        <com.core.widget.ClearEditText
-            android:id="@+id/modify_password_phone_mobile_et"
-            style="@style/register_edittext_style"
-            android:hint="手机号"
-            android:paddingLeft="10dp"
-            android:paddingRight="10dp"
-            android:textColor="@color/black" />
-    </LinearLayout>
+            android:background="@drawable/shape_gray_slight_corner_white_bg"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <ImageView
+                android:layout_width="30dp"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="10dp"
+                android:src="@drawable/ic_modify_phone" />
+
+            <com.core.widget.ClearEditText
+                android:id="@+id/modify_password_phone_mobile_et"
+                style="@style/register_edittext_style"
+                android:hint="手机号"
+                android:paddingLeft="10dp"
+                android:paddingRight="10dp"
+                android:textColor="@color/black" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:background="@drawable/shape_gray_slight_corner_white_bg"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <ImageView
+                android:layout_width="30dp"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="10dp"
+                android:src="@drawable/ic_verification_code" />
+
+            <com.core.widget.ClearEditText
+                android:id="@+id/modify_password_phone_code_et"
+                style="@style/register_edittext_style"
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:hint="短信验证码"
+                android:paddingLeft="10dp"
+                android:paddingRight="10dp"
+                android:textColor="@color/black" />
+
+            <View
+                android:layout_width="1dp"
+                android:layout_height="match_parent"
+                android:layout_margin="10dp"
+                android:background="@color/gray" />
+
+            <TextView
+                android:id="@+id/modify_password_phone_code_btn"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginRight="10dp"
+                android:text="@string/obtain_verify_code"
+                android:textColor="@color/titleBlue" />
+        </LinearLayout>
 
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="8dp"
-        android:background="@drawable/shape_gray_slight_corner_white_bg"
-        android:gravity="center_vertical"
-        android:orientation="horizontal">
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="16dp"
+            android:text="*密码须为8-20字符的英文、数字混合"
+            android:textColor="@color/red"
+            android:textSize="12sp" />
 
-        <ImageView
-            android:layout_width="30dp"
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="4dp"
+            android:background="@drawable/shape_gray_slight_corner_white_bg"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <ImageView
+                android:layout_width="30dp"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="10dp"
+                android:src="@drawable/ic_password_reset" />
+
+            <com.core.widget.ClearEditText
+                android:id="@+id/modify_password_phone_password_et"
+                style="@style/register_edittext_style"
+                android:hint="新密码"
+                android:inputType="textPassword"
+                android:paddingLeft="10dp"
+                android:paddingRight="10dp"
+                android:textColor="@color/black" />
+        </LinearLayout>
+
+        <com.core.widget.StrengthView
+            android:id="@+id/modify_password_phone_strength_sv"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginLeft="10dp"
-            android:src="@drawable/ic_verification_code" />
-
-        <com.core.widget.ClearEditText
-            android:id="@+id/modify_password_phone_code_et"
-            style="@style/register_edittext_style"
-            android:layout_width="0dp"
-            android:layout_weight="1"
-            android:hint="短信验证码"
+            android:paddingBottom="10dp"
             android:paddingLeft="10dp"
-            android:paddingRight="10dp"
-            android:textColor="@color/black" />
+            android:paddingTop="10dp"
+            android:visibility="gone" />
 
-        <View
-            android:layout_width="1dp"
-            android:layout_height="match_parent"
-            android:layout_margin="10dp"
-            android:background="@color/gray" />
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:background="@drawable/shape_gray_slight_corner_white_bg"
+            android:gravity="center_vertical"
+            android:orientation="horizontal">
+
+            <ImageView
+                android:layout_width="30dp"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="10dp"
+                android:src="@drawable/ic_password_reset" />
+
+            <com.core.widget.ClearEditText
+                android:id="@+id/modify_password_phone_password_confirm_et"
+                style="@style/register_edittext_style"
+                android:hint="确认密码"
+                android:inputType="textPassword"
+                android:paddingLeft="10dp"
+                android:paddingRight="10dp"
+                android:textColor="@color/black" />
+        </LinearLayout>
 
         <TextView
-            android:id="@+id/modify_password_phone_code_btn"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:paddingRight="10dp"
-            android:text="获取验证码"
-            android:textColor="@color/titleBlue" />
+            android:id="@+id/modify_password_phone_confirm_tv"
+            android:layout_width="match_parent"
+            android:layout_height="42dp"
+            android:layout_marginTop="20dp"
+            android:background="@drawable/selector_confirm_bg"
+            android:enabled="false"
+            android:gravity="center"
+            android:text="@string/app_dialog_ok"
+            android:textColor="@color/white"
+            android:textSize="14sp" />
     </LinearLayout>
 
-    <TextView
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="16dp"
-        android:text="*密码须为8-20字符的英文、数字混合"
-        android:textColor="@color/red"
-        android:textSize="12sp" />
-
     <LinearLayout
+        android:id="@+id/modify_password_success_ll"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="4dp"
-        android:background="@drawable/shape_gray_slight_corner_white_bg"
-        android:gravity="center_vertical"
-        android:orientation="horizontal">
+        android:layout_height="match_parent"
+        android:background="@color/white"
+        android:gravity="center_horizontal"
+        android:orientation="vertical"
+        android:visibility="gone">
 
         <ImageView
-            android:layout_width="30dp"
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginLeft="10dp"
-            android:src="@drawable/ic_admin_password" />
+            android:layout_marginTop="80dp"
+            android:src="@drawable/ic_modify_password_success" />
 
-        <com.core.widget.ClearEditText
-            android:id="@+id/modify_password_phone_password_et"
-            style="@style/register_edittext_style"
-            android:hint="新密码"
-            android:paddingLeft="10dp"
-            android:paddingRight="10dp"
-            android:textColor="@color/black" />
-    </LinearLayout>
-
-    <com.core.widget.StrengthView
-        android:id="@+id/modify_password_phone_strength_sv"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:paddingBottom="8dp"
-        android:paddingLeft="10dp"
-        android:paddingTop="8dp" />
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@drawable/shape_gray_slight_corner_white_bg"
-        android:gravity="center_vertical"
-        android:orientation="horizontal">
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="20dp"
+            android:text="密码重置成功!"
+            android:textSize="20sp"
+            android:textStyle="bold" />
 
-        <ImageView
-            android:layout_width="30dp"
+        <TextView
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_marginLeft="10dp"
-            android:src="@drawable/ic_admin_password" />
+            android:layout_marginTop="10dp"
+            android:text="*请妥善保管好自己的密码,保障自身利益" />
 
-        <com.core.widget.ClearEditText
-            android:id="@+id/modify_password_phone_password_confirm_et"
-            style="@style/register_edittext_style"
-            android:hint="确认密码"
-            android:paddingLeft="10dp"
-            android:paddingRight="10dp"
-            android:textColor="@color/black" />
-    </LinearLayout>
 
-    <TextView
-        android:id="@+id/modify_password_phone_confirm_tv"
-        android:layout_width="match_parent"
-        android:layout_height="42dp"
-        android:layout_marginTop="20dp"
-        android:background="@drawable/selector_confirm_bg"
-        android:gravity="center"
-        android:text="@string/app_dialog_ok"
-        android:textColor="@color/white"
-        android:textSize="14sp" />
-</LinearLayout>
+        <TextView
+            android:id="@+id/modify_password_success_btn"
+            android:layout_width="match_parent"
+            android:layout_height="42dp"
+            android:layout_margin="30dp"
+            android:background="@drawable/selector_confirm_bg"
+            android:gravity="center"
+            android:text="@string/complete"
+            android:textColor="@color/white"
+            android:textSize="14sp" />
+    </LinearLayout>
+</FrameLayout>

+ 4 - 0
app_modular/applogin/src/main/res/values-en/strings.xml

@@ -3,4 +3,8 @@
     <string name="modify_by_phone">通过手机验证</string>
     <string name="modify_by_email">通过邮箱验证</string>
     <string name="title_password_reset">密码重置</string>
+    <string name="obtain_verify_code">获取验证码</string>
+    <string name="verify_code_obtaining">验证码获取中...</string>
+    <string name="obtain_verify_code_failed">验证码获取失败</string>
+    <string name="verify_code_have_sent">验证码已发送,请注意接收</string>
 </resources>

+ 4 - 0
app_modular/applogin/src/main/res/values-zh-rCN/strings.xml

@@ -3,4 +3,8 @@
     <string name="modify_by_phone">通过手机验证</string>
     <string name="modify_by_email">通过邮箱验证</string>
     <string name="title_password_reset">密码重置</string>
+    <string name="obtain_verify_code">获取验证码</string>
+    <string name="verify_code_obtaining">验证码获取中...</string>
+    <string name="obtain_verify_code_failed">验证码获取失败</string>
+    <string name="verify_code_have_sent">验证码已发送,请注意接收</string>
 </resources>

+ 4 - 0
app_modular/applogin/src/main/res/values-zh-rTW/strings.xml

@@ -3,4 +3,8 @@
     <string name="modify_by_phone">通过手机验证</string>
     <string name="modify_by_email">通过邮箱验证</string>
     <string name="title_password_reset">密码重置</string>
+    <string name="obtain_verify_code">获取验证码</string>
+    <string name="verify_code_obtaining">验证码获取中...</string>
+    <string name="obtain_verify_code_failed">验证码获取失败</string>
+    <string name="verify_code_have_sent">验证码已发送,请注意接收</string>
 </resources>

+ 4 - 0
app_modular/applogin/src/main/res/values/strings.xml

@@ -3,4 +3,8 @@
     <string name="modify_by_phone">通过手机验证</string>
     <string name="modify_by_email">通过邮箱验证</string>
     <string name="title_password_reset">密码重置</string>
+    <string name="obtain_verify_code">获取验证码</string>
+    <string name="verify_code_obtaining">验证码获取中...</string>
+    <string name="obtain_verify_code_failed">验证码获取失败</string>
+    <string name="verify_code_have_sent">验证码已发送,请注意接收</string>
 </resources>