Commit 118e25c4fd58179732aae3aac4594ffe105ef2f4
1 parent
d8b159ee
Exists in
yxb_dev
and in
2 other branches
no message
Showing
13 changed files
with
415 additions
and
64 deletions
Show diff stats
.idea/modules.xml
... | ... | @@ -5,6 +5,7 @@ |
5 | 5 | <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> |
6 | 6 | <module fileurl="file://$PROJECT_DIR$/mvpsdk/mvpsdk.iml" filepath="$PROJECT_DIR$/mvpsdk/mvpsdk.iml" /> |
7 | 7 | <module fileurl="file://$PROJECT_DIR$/parentwork.iml" filepath="$PROJECT_DIR$/parentwork.iml" /> |
8 | + <module fileurl="file://$PROJECT_DIR$/roundedimageview-2.2.1/roundedimageview-2.2.1.iml" filepath="$PROJECT_DIR$/roundedimageview-2.2.1/roundedimageview-2.2.1.iml" /> | |
8 | 9 | </modules> |
9 | 10 | </component> |
10 | 11 | </project> |
11 | 12 | \ No newline at end of file | ... | ... |
app/src/main/AndroidManifest.xml
... | ... | @@ -2,6 +2,40 @@ |
2 | 2 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
3 | 3 | package="com.shunzhi.parent"> |
4 | 4 | |
5 | + <uses-permission android:name="android.permission.GET_TASKS" /> | |
6 | + <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> | |
7 | + <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> | |
8 | + <!-- Android 6.0版本可去除,用于选举信息(通道复用)的同步 --> | |
9 | + <uses-permission android:name="android.permission.WRITE_SETTINGS" /> | |
10 | + <!-- 进行网络访问和网络状态监控相关的权限声明 --> | |
11 | + <uses-permission android:name="android.permission.INTERNET" /> | |
12 | + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | |
13 | + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> | |
14 | + <!-- 允许对sd卡进行读写操作 --> | |
15 | + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | |
16 | + <!-- 网络库使用,当网络操作时需要确保事务完成不被杀掉 --> | |
17 | + <uses-permission android:name="android.permission.WAKE_LOCK" /> | |
18 | + <!-- 用于读取手机硬件信息等,用于机型过滤 --> | |
19 | + <uses-permission android:name="android.permission.READ_PHONE_STATE" /> | |
20 | + <!-- 选举使用,当应用有删除或者更新时需要重新选举,复用推送通道 --> | |
21 | + <uses-permission android:name="android.permission.BROADCAST_PACKAGE_CHANGED" /> | |
22 | + <uses-permission android:name="android.permission.BROADCAST_PACKAGE_REPLACED" /> | |
23 | + <uses-permission android:name="android.permission.RESTART_PACKAGES" /> | |
24 | + <!-- 补偿通道小米PUSH使用,不用可去除 --> | |
25 | + <!-- <uses-permission android:name="android.permission.GET_TASKS" /> --> | |
26 | + <!-- 补偿通道GCM使用,不使用可去除 --> | |
27 | + <uses-permission android:name="android.permission.GET_ACCOUNTS" /> | |
28 | + <!-- 允许监听启动完成事件 --> | |
29 | + <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> | |
30 | + <!-- 允许访问震动器 --> | |
31 | + <uses-permission android:name="android.permission.VIBRATE" /> | |
32 | + <!-- 允许task重排序 --> | |
33 | + <uses-permission android:name="android.permission.REORDER_TASKS" /> | |
34 | + | |
35 | + | |
36 | + | |
37 | + | |
38 | + | |
5 | 39 | <application |
6 | 40 | android:name=".MyApplication" |
7 | 41 | android:allowBackup="true" |
... | ... | @@ -10,6 +44,7 @@ |
10 | 44 | android:roundIcon="@mipmap/ic_launcher_round" |
11 | 45 | android:supportsRtl="true" |
12 | 46 | android:theme="@style/AppTheme"> |
47 | + | |
13 | 48 | <activity android:name=".ui.activity.LoginAndRegistActivity"> |
14 | 49 | <intent-filter> |
15 | 50 | <action android:name="android.intent.action.MAIN" /> | ... | ... |
... | ... | @@ -0,0 +1,82 @@ |
1 | +package com.shunzhi.parent; | |
2 | + | |
3 | +import android.content.Context; | |
4 | +import android.content.SharedPreferences; | |
5 | +import android.os.Environment; | |
6 | +import android.preference.PreferenceManager; | |
7 | +import android.text.TextUtils; | |
8 | + | |
9 | +import java.io.File; | |
10 | + | |
11 | +/** | |
12 | + * Created by Administrator on 2018/3/7 0007. | |
13 | + */ | |
14 | + | |
15 | +public class AppConfig { | |
16 | + //保存键值对 | |
17 | + public static String SCHOOL_ID = "school_id"; | |
18 | + public static String LOGIN_NAME = "login_name"; | |
19 | + public static String LOGIN_PWD = "login_pwd"; | |
20 | + public static String ACCESS_TOKEN = "access_token"; | |
21 | + | |
22 | + //默认日志保存的路径 | |
23 | + public final static String DEFAULT_SAVE_LOG_PATH = Environment | |
24 | + .getExternalStorageDirectory() | |
25 | + + File.separator | |
26 | + + "Eboardmenwei" | |
27 | + + File.separator | |
28 | + + "logs" | |
29 | + + File.separator; | |
30 | + | |
31 | + | |
32 | + | |
33 | + private static AppConfig appConfig = null; | |
34 | + private static Context mContext = null; | |
35 | + | |
36 | + public static AppConfig getAppConfig(Context context) { | |
37 | + if (appConfig == null) { | |
38 | + appConfig = new AppConfig(); | |
39 | + mContext = context; | |
40 | + } | |
41 | + return appConfig; | |
42 | + } | |
43 | + | |
44 | + | |
45 | + | |
46 | + | |
47 | + | |
48 | + | |
49 | + | |
50 | + //默认下载保存的路径 | |
51 | + public final static String DEFAULT_SAVE_DOWNLOAD_PATH = Environment | |
52 | + .getExternalStorageDirectory() | |
53 | + + File.separator | |
54 | + + "Eboard" | |
55 | + + File.separator | |
56 | + + "download" | |
57 | + + File.separator; | |
58 | + | |
59 | + //得到保存的值 | |
60 | + public String get(String key) { | |
61 | + return getSharedPreferences(mContext).getString(key, null); | |
62 | + } | |
63 | + | |
64 | + private SharedPreferences getSharedPreferences(Context context) { | |
65 | + return PreferenceManager.getDefaultSharedPreferences(context); | |
66 | + } | |
67 | + | |
68 | + //保存键值对 | |
69 | + public void set(Context context, String key, String value) { | |
70 | + SharedPreferences.Editor editor = getSharedPreferences(context).edit(); | |
71 | + if (TextUtils.isEmpty(value)) { | |
72 | + editor.putString(key, value); | |
73 | + } else { | |
74 | + editor.putString(key, value.trim()); | |
75 | + } | |
76 | + editor.commit(); | |
77 | + } | |
78 | + | |
79 | + | |
80 | + | |
81 | + | |
82 | +} | ... | ... |
... | ... | @@ -0,0 +1,26 @@ |
1 | +package com.shunzhi.parent; | |
2 | + | |
3 | +import com.share.mvpsdk.global.GlobalApplication; | |
4 | + | |
5 | +/** | |
6 | + * Created by Administrator on 2018/3/7 0007. | |
7 | + */ | |
8 | + | |
9 | +public class AppContext extends GlobalApplication { | |
10 | + private static AppContext appContext; | |
11 | + | |
12 | + | |
13 | + @Override | |
14 | + public void onCreate() { | |
15 | + appContext=this; | |
16 | + super.onCreate(); | |
17 | + } | |
18 | + | |
19 | + public static AppContext getInstance() { | |
20 | + return appContext; | |
21 | + } | |
22 | + | |
23 | + | |
24 | + | |
25 | + | |
26 | +} | ... | ... |
app/src/main/java/com/shunzhi/parent/api/LoginRegisterApi.java
0 → 100644
... | ... | @@ -0,0 +1,34 @@ |
1 | +package com.shunzhi.parent.api; | |
2 | + | |
3 | +import com.google.gson.JsonObject; | |
4 | + | |
5 | +import io.reactivex.Observable; | |
6 | +import retrofit2.http.Field; | |
7 | +import retrofit2.http.FormUrlEncoded; | |
8 | +import retrofit2.http.POST; | |
9 | + | |
10 | +/** | |
11 | + * Created by Administrator on 2018/3/7 0007. | |
12 | + */ | |
13 | + | |
14 | +public interface LoginRegisterApi { | |
15 | + String url="http://campus.myjxt.com/"; | |
16 | + | |
17 | + | |
18 | + @FormUrlEncoded | |
19 | + @POST("Token") | |
20 | + Observable<JsonObject> loginResult( | |
21 | + @Field("grant_type") String grant_type, @Field("username") String username | |
22 | + , @Field("password") String password); | |
23 | + | |
24 | + @FormUrlEncoded | |
25 | + @POST("api/Account/CurrentInfo") | |
26 | + Observable<JsonObject> registerResult( | |
27 | + @Field("grant_type") String grant_type, @Field("username") String username | |
28 | + , @Field("idcode") String idCode,@Field("password") String password); | |
29 | + | |
30 | + @FormUrlEncoded | |
31 | + @POST("api/Account/CurrentInfo") | |
32 | + Observable<JsonObject> getUserInfo(@Field("grant_type") String grant_type); | |
33 | + | |
34 | +} | ... | ... |
app/src/main/java/com/shunzhi/parent/model/loginandregister/LoginAndRegisterModel.java
... | ... | @@ -2,6 +2,9 @@ package com.shunzhi.parent.model.loginandregister; |
2 | 2 | |
3 | 3 | import com.google.gson.JsonObject; |
4 | 4 | import com.share.mvpsdk.base.BaseModel; |
5 | +import com.share.mvpsdk.helper.RetrofitCreateHelper; | |
6 | +import com.share.mvpsdk.helper.RxHelper; | |
7 | +import com.shunzhi.parent.api.LoginRegisterApi; | |
5 | 8 | import com.shunzhi.parent.contract.loginandregister.LoginAndRegisterContract; |
6 | 9 | |
7 | 10 | import io.reactivex.Observable; |
... | ... | @@ -20,13 +23,15 @@ public class LoginAndRegisterModel extends BaseModel implements LoginAndRegiste |
20 | 23 | |
21 | 24 | |
22 | 25 | @Override |
23 | - public Observable<JsonObject> getLoginResult(String loginName, String loginPed) { | |
24 | - return null; | |
26 | + public Observable<JsonObject> getLoginResult(String loginName, String loginPwd) { | |
27 | + return RetrofitCreateHelper.loginApi(LoginRegisterApi.class,LoginRegisterApi.url).loginResult("password",loginName,loginPwd) | |
28 | + .compose(RxHelper.<JsonObject>rxSchedulerHelper()); | |
25 | 29 | } |
26 | 30 | |
27 | 31 | @Override |
28 | 32 | public Observable<JsonObject> getRegisterResult(String adminName, String idCode, String password) { |
29 | - return null; | |
33 | + return RetrofitCreateHelper.createApi(LoginRegisterApi.class,LoginRegisterApi.url).registerResult("idcode",adminName,idCode,password) | |
34 | + .compose(RxHelper.<JsonObject>rxSchedulerHelper()); | |
30 | 35 | } |
31 | 36 | |
32 | 37 | @Override | ... | ... |
app/src/main/java/com/shunzhi/parent/model/loginandregister/loginAndRegisterModel.java
... | ... | @@ -1,37 +0,0 @@ |
1 | -package com.shunzhi.parent.model.loginandregister; | |
2 | - | |
3 | -import com.google.gson.JsonObject; | |
4 | -import com.share.mvpsdk.base.BaseModel; | |
5 | -import com.shunzhi.parent.contract.loginandregister.LoginAndRegisterContract; | |
6 | - | |
7 | -import io.reactivex.Observable; | |
8 | - | |
9 | -/** | |
10 | - * Created by Administrator on 2018/3/6 0006. | |
11 | - */ | |
12 | - | |
13 | -public class LoginAndRegisterModel extends BaseModel implements LoginAndRegisterContract.ILoginModel { | |
14 | - | |
15 | - | |
16 | - | |
17 | - public static LoginAndRegisterModel newInstance() { | |
18 | - return new LoginAndRegisterModel(); | |
19 | - } | |
20 | - | |
21 | - | |
22 | - @Override | |
23 | - public Observable<JsonObject> getLoginResult(String loginName, String loginPed) { | |
24 | - return null; | |
25 | - } | |
26 | - | |
27 | - @Override | |
28 | - public Observable<JsonObject> getRegisterResult(String adminName, String idCode, String password) { | |
29 | - return null; | |
30 | - } | |
31 | - | |
32 | - @Override | |
33 | - public Observable<JsonObject> getidCodeResult(String phoneNumber) { | |
34 | - return null; | |
35 | - } | |
36 | - | |
37 | -} |
app/src/main/java/com/shunzhi/parent/presenter/loginandregister/LoginAndRegisterPresenter.java
... | ... | @@ -2,39 +2,110 @@ package com.shunzhi.parent.presenter.loginandregister; |
2 | 2 | |
3 | 3 | import android.text.TextUtils; |
4 | 4 | |
5 | +import com.google.gson.JsonObject; | |
6 | +import com.share.mvpsdk.helper.RetrofitCreateHelper; | |
5 | 7 | import com.share.mvpsdk.utils.ToastUtils; |
8 | +import com.shunzhi.parent.AppConfig; | |
9 | +import com.shunzhi.parent.AppContext; | |
6 | 10 | import com.shunzhi.parent.contract.loginandregister.LoginAndRegisterContract; |
7 | 11 | import com.shunzhi.parent.model.loginandregister.LoginAndRegisterModel; |
8 | 12 | |
13 | +import java.util.regex.Matcher; | |
14 | +import java.util.regex.Pattern; | |
15 | + | |
16 | +import io.reactivex.functions.Consumer; | |
17 | + | |
9 | 18 | /** |
10 | 19 | * Created by Administrator on 2018/3/6 0006. |
11 | 20 | */ |
12 | 21 | |
13 | 22 | public class LoginAndRegisterPresenter extends LoginAndRegisterContract.LoginPresenter { |
23 | + | |
24 | + public static final String REGEX_MOBILE = "^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$"; | |
25 | + | |
14 | 26 | @Override |
15 | - public void loginResult(String loginName, String loginPwd) { | |
16 | - if (TextUtils.isEmpty(loginName)){ | |
17 | - ToastUtils.showToast("登录名不能为空"); | |
27 | + public void loginResult(final String loginName, final String loginPwd) { | |
28 | + if (!isMate(loginName, REGEX_MOBILE)) { | |
29 | + ToastUtils.showToast("请输入正确的手机号!!"); | |
18 | 30 | return; |
19 | - }else if(TextUtils.isEmpty(loginPwd)){ | |
20 | - ToastUtils.showToast("密码不能为空"); | |
31 | + } | |
32 | + | |
33 | + if (mIModel == null || mIView == null) { | |
21 | 34 | return; |
22 | 35 | } |
36 | + mRxManager.register(mIModel.getLoginResult(loginName, loginPwd).subscribe(new Consumer<JsonObject>() { | |
37 | + @Override | |
38 | + public void accept(JsonObject jsonObject) throws Exception { | |
39 | + if (jsonObject != null && !TextUtils.isEmpty(jsonObject.get("access_token").getAsString())) { | |
40 | + AppConfig.getAppConfig(AppContext.getInstance()).set(AppContext.getInstance() | |
41 | + , AppConfig.ACCESS_TOKEN, jsonObject.get("access_token").getAsString()); | |
42 | + AppConfig.getAppConfig(AppContext.getInstance()).set(AppContext.getInstance(), AppConfig.LOGIN_NAME,loginName); | |
43 | + AppConfig.getAppConfig(AppContext.getInstance()).set(AppContext.getInstance(), AppConfig.LOGIN_PWD, loginPwd); | |
44 | + RetrofitCreateHelper.getInstance().setAuthorization("Bearer "+jsonObject.get("access_token").getAsString()); | |
45 | + getUserInfo(); | |
46 | + } else { | |
47 | + ToastUtils.showToast(jsonObject.get("error").getAsString()); | |
48 | + } | |
49 | + } | |
50 | + }, new Consumer<Throwable>() { | |
51 | + @Override | |
52 | + public void accept(Throwable throwable) throws Exception { | |
53 | + ToastUtils.showToast(throwable.getMessage()); | |
54 | + } | |
55 | + })); | |
23 | 56 | |
24 | 57 | } |
25 | 58 | |
26 | 59 | @Override |
27 | 60 | public void registerResult(String adminName, String idCode, String password) { |
61 | + if (!isMate(adminName, REGEX_MOBILE)) { | |
62 | + ToastUtils.showToast("请输入正确的手机号!!"); | |
63 | + return; | |
64 | + } | |
65 | + if (mIModel == null || mIView == null) { | |
66 | + return; | |
67 | + } | |
68 | + mIView.getUserInfo(); | |
69 | + mRxManager.register(mIModel.getRegisterResult(adminName, idCode, password).subscribe(new Consumer<JsonObject>() { | |
70 | + @Override | |
71 | + public void accept(JsonObject jsonObject) throws Exception { | |
72 | + //TODO 注册成功返回 | |
28 | 73 | |
29 | 74 | |
75 | + } | |
76 | + }, new Consumer<Throwable>() { | |
77 | + @Override | |
78 | + public void accept(Throwable throwable) throws Exception { | |
79 | + ToastUtils.showToast(throwable.getMessage()); | |
80 | + } | |
81 | + })); | |
82 | + | |
30 | 83 | } |
31 | 84 | |
32 | 85 | @Override |
33 | 86 | public void idCodeResult(String phoneNumber) { |
34 | - if(TextUtils.isEmpty(phoneNumber)){ | |
35 | - ToastUtils.showToast("请先输入手机号"); | |
87 | + if (!isMate(phoneNumber, REGEX_MOBILE)) { | |
88 | + ToastUtils.showToast("请输入正确的手机号!!"); | |
89 | + return; | |
90 | + } | |
91 | + if (mIModel == null || mIView == null) { | |
36 | 92 | return; |
37 | 93 | } |
94 | + mRxManager.register(mIModel.getidCodeResult(phoneNumber).subscribe(new Consumer<JsonObject>() { | |
95 | + @Override | |
96 | + public void accept(JsonObject jsonObject) throws Exception { | |
97 | + //TODO 获取验证码返回 | |
98 | + | |
99 | + | |
100 | + } | |
101 | + }, new Consumer<Throwable>() { | |
102 | + @Override | |
103 | + public void accept(Throwable throwable) throws Exception { | |
104 | + ToastUtils.showToast(throwable.getMessage()); | |
105 | + } | |
106 | + })); | |
107 | + | |
108 | + | |
38 | 109 | } |
39 | 110 | |
40 | 111 | @Override |
... | ... | @@ -52,4 +123,11 @@ public class LoginAndRegisterPresenter extends LoginAndRegisterContract.LoginPre |
52 | 123 | public void onStart() { |
53 | 124 | |
54 | 125 | } |
126 | + | |
127 | + | |
128 | + public boolean isMate(String str, String rulStr) { | |
129 | + Pattern pattern = Pattern.compile(rulStr); | |
130 | + Matcher matcher = pattern.matcher(str); | |
131 | + return matcher.matches(); | |
132 | + } | |
55 | 133 | } | ... | ... |
app/src/main/java/com/shunzhi/parent/ui/MainActivity.java
1 | 1 | package com.shunzhi.parent.ui; |
2 | 2 | |
3 | -import android.support.annotation.NonNull; | |
4 | -import android.support.design.widget.BottomNavigationView; | |
5 | -import android.support.v7.app.AppCompatActivity; | |
6 | 3 | import android.os.Bundle; |
4 | +import android.support.design.widget.BottomNavigationView; | |
7 | 5 | |
8 | -import com.share.mvpsdk.base.BasePresenter; | |
9 | 6 | import com.share.mvpsdk.base.activity.BaseCompatActivity; |
10 | -import com.share.mvpsdk.base.activity.BaseMVPCompatActivity; | |
11 | 7 | import com.share.mvpsdk.helper.BottomNavigationViewHelper; |
12 | 8 | import com.shunzhi.parent.R; |
13 | 9 | ... | ... |
app/src/main/java/com/shunzhi/parent/ui/fragment/loginandregistfragment/LoginAndRegistFragment.java
1 | 1 | package com.shunzhi.parent.ui.fragment.loginandregistfragment; |
2 | 2 | |
3 | +import android.content.Intent; | |
3 | 4 | import android.os.Bundle; |
4 | 5 | import android.support.annotation.NonNull; |
5 | 6 | import android.support.annotation.Nullable; |
7 | +import android.text.Editable; | |
8 | +import android.text.TextUtils; | |
9 | +import android.text.TextWatcher; | |
10 | +import android.util.Log; | |
11 | +import android.view.Gravity; | |
6 | 12 | import android.view.View; |
13 | +import android.view.ViewGroup; | |
7 | 14 | import android.widget.EditText; |
15 | +import android.widget.ImageView; | |
8 | 16 | import android.widget.LinearLayout; |
17 | +import android.widget.PopupWindow; | |
9 | 18 | import android.widget.TextView; |
10 | 19 | |
11 | 20 | import com.makeramen.roundedimageview.RoundedImageView; |
12 | 21 | import com.share.mvpsdk.base.BasePresenter; |
13 | 22 | import com.share.mvpsdk.base.fragment.BaseMVPCompatFragment; |
23 | +import com.share.mvpsdk.utils.ToastUtils; | |
14 | 24 | import com.shunzhi.parent.R; |
15 | 25 | import com.shunzhi.parent.contract.loginandregister.LoginAndRegisterContract; |
16 | 26 | import com.shunzhi.parent.presenter.loginandregister.LoginAndRegisterPresenter; |
27 | +import com.shunzhi.parent.ui.activity.LoginAndRegistActivity; | |
17 | 28 | |
18 | 29 | |
19 | 30 | public class LoginAndRegistFragment extends BaseMVPCompatFragment<LoginAndRegisterContract.LoginPresenter, LoginAndRegisterContract.ILoginModel> |
... | ... | @@ -22,8 +33,10 @@ public class LoginAndRegistFragment extends BaseMVPCompatFragment<LoginAndRegist |
22 | 33 | public RoundedImageView roundedImageView; |
23 | 34 | public EditText phoneNumber, idCode, password; |
24 | 35 | public TextView get_idCode, loginAndRegister, tv_info, tv_goto; |
25 | - public LinearLayout phoneLayout, idCodeLayout, passwordLayout; | |
36 | + public LinearLayout phoneLayout, idCodeLayout, passwordLayout,main_login; | |
37 | + public ImageView img_eye; | |
26 | 38 | public static String typepage; |
39 | + public boolean open = false; | |
27 | 40 | |
28 | 41 | |
29 | 42 | public static LoginAndRegistFragment getInstance(String type) { |
... | ... | @@ -46,7 +59,7 @@ public class LoginAndRegistFragment extends BaseMVPCompatFragment<LoginAndRegist |
46 | 59 | |
47 | 60 | @Override |
48 | 61 | public void initUI(View view, @Nullable Bundle savedInstanceState) { |
49 | - | |
62 | + main_login = view.findViewById(R.id.main_login); | |
50 | 63 | roundedImageView = view.findViewById(R.id.photoImage); |
51 | 64 | phoneNumber = view.findViewById(R.id.et_phoneNumber); |
52 | 65 | idCode = view.findViewById(R.id.et_idCode); |
... | ... | @@ -58,15 +71,20 @@ public class LoginAndRegistFragment extends BaseMVPCompatFragment<LoginAndRegist |
58 | 71 | phoneLayout = view.findViewById(R.id.phoneLayout); |
59 | 72 | idCodeLayout = view.findViewById(R.id.idCodeLayout); |
60 | 73 | passwordLayout = view.findViewById(R.id.passwordLayout); |
74 | + img_eye = view.findViewById(R.id.img_eye); | |
61 | 75 | get_idCode.setOnClickListener(this); |
62 | 76 | tv_goto.setOnClickListener(this); |
63 | 77 | loginAndRegister.setOnClickListener(this); |
64 | - if (typepage.equals("登录")) { | |
78 | + img_eye.setOnClickListener(this); | |
79 | + phoneNumber.addTextChangedListener(textWatcher); | |
80 | + idCode.addTextChangedListener(textWatcher); | |
81 | + password.addTextChangedListener(textWatcher); | |
82 | + if ("登录".equals(typepage)) { | |
65 | 83 | idCodeLayout.setVisibility(View.GONE); |
66 | 84 | loginAndRegister.setText("登录"); |
67 | 85 | tv_info.setText("还没有账号"); |
68 | 86 | tv_goto.setText("注册"); |
69 | - }else if(typepage.equals("注册")){ | |
87 | + } else if ("注册".equals(typepage)) { | |
70 | 88 | idCodeLayout.setVisibility(View.VISIBLE); |
71 | 89 | loginAndRegister.setText("注册"); |
72 | 90 | tv_info.setText("已注册,直接登录"); |
... | ... | @@ -77,26 +95,79 @@ public class LoginAndRegistFragment extends BaseMVPCompatFragment<LoginAndRegist |
77 | 95 | |
78 | 96 | @Override |
79 | 97 | public void getUserInfo() { |
98 | + Log.e("sss","sss"); | |
99 | + PopupWindow popupWindow=new PopupWindow(); | |
100 | + popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); | |
101 | + popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); | |
102 | + TextView textView=new TextView(getActivity()); | |
103 | + textView.setText("注册成功"); | |
104 | + popupWindow.setContentView(textView); | |
105 | + popupWindow.showAtLocation(main_login, Gravity.CENTER,0,0); | |
106 | + | |
107 | + | |
80 | 108 | |
81 | 109 | } |
82 | 110 | |
83 | 111 | @Override |
84 | 112 | public void onClick(View v) { |
85 | 113 | if (v == loginAndRegister) { |
114 | + ToastUtils.showToast("onClick"); | |
86 | 115 | if (loginAndRegister.getText().toString().trim().equals("登录")) { |
87 | - mPresenter.loginResult(phoneNumber.getText().toString(), password.getText().toString()); | |
116 | + mPresenter.loginResult(phoneNumber.getText().toString(), password.getText().toString()); | |
88 | 117 | } else if (loginAndRegister.getText().toString().trim().equals("注册")) { |
89 | - mPresenter.registerResult(phoneNumber.getText().toString(), idCode.getText().toString(), password.getText().toString()); | |
118 | + mPresenter.registerResult(phoneNumber.getText().toString(), idCode.getText().toString(), password.getText().toString()); | |
90 | 119 | } |
91 | 120 | |
92 | 121 | } else if (v == tv_goto) { |
93 | - if (tv_goto.equals("登录")) { | |
94 | - | |
95 | - } else if (tv_goto.equals("注册")) { | |
122 | + if (tv_goto.getText().toString().equals("登录")) { | |
123 | + startActivity(new Intent().putExtra("type", "登录").setClass(getActivity(), LoginAndRegistActivity.class)); | |
96 | 124 | |
125 | + } else if (tv_goto.getText().toString().equals("注册")) { | |
126 | + startActivity(new Intent().putExtra("type", "注册").setClass(getActivity(), LoginAndRegistActivity.class)); | |
97 | 127 | } |
128 | + getActivity().finish(); | |
98 | 129 | } else if (v == get_idCode) { |
99 | 130 | mPresenter.idCodeResult(phoneNumber.getText().toString()); |
131 | + } else if (v == img_eye) { | |
132 | + if (open) { | |
133 | + img_eye.setImageResource(R.drawable.eye_close); | |
134 | + password.setInputType(0x81); | |
135 | + open = false; | |
136 | + } else { | |
137 | + img_eye.setImageResource(R.drawable.eye_open); | |
138 | + password.setInputType(0x90); | |
139 | + open = true; | |
140 | + } | |
141 | + password.setSelection(password.getText().toString().length()); | |
100 | 142 | } |
101 | 143 | } |
144 | + TextWatcher textWatcher = new TextWatcher() { | |
145 | + @Override | |
146 | + public void beforeTextChanged(CharSequence s, int start, int count, int after) { | |
147 | + | |
148 | + } | |
149 | + | |
150 | + @Override | |
151 | + public void onTextChanged(CharSequence s, int start, int before, int count) { | |
152 | + if (loginAndRegister.getText().toString().trim().equals("登录")) { | |
153 | + if (!TextUtils.isEmpty(phoneNumber.getText().toString()) && !TextUtils.isEmpty(password.getText().toString())) { | |
154 | + loginAndRegister.setEnabled(true); | |
155 | + } else { | |
156 | + loginAndRegister.setEnabled(false); | |
157 | + } | |
158 | + } else if (loginAndRegister.getText().toString().trim().equals("注册")) { | |
159 | + if (!TextUtils.isEmpty(phoneNumber.getText().toString()) && !TextUtils.isEmpty(idCode.getText().toString()) && !TextUtils.isEmpty(password.getText().toString())) { | |
160 | + loginAndRegister.setEnabled(true); | |
161 | + } else { | |
162 | + loginAndRegister.setEnabled(false); | |
163 | + } | |
164 | + } | |
165 | + } | |
166 | + | |
167 | + @Override | |
168 | + public void afterTextChanged(Editable s) { | |
169 | + | |
170 | + } | |
171 | + }; | |
172 | + | |
102 | 173 | } | ... | ... |
app/src/main/res/layout/fragment_login_and_regist.xml
... | ... | @@ -7,6 +7,7 @@ |
7 | 7 | |
8 | 8 | |
9 | 9 | <LinearLayout |
10 | + android:id="@+id/main_login" | |
10 | 11 | android:layout_width="match_parent" |
11 | 12 | android:layout_height="match_parent" |
12 | 13 | android:orientation="vertical"> |
... | ... | @@ -43,6 +44,7 @@ |
43 | 44 | android:layout_height="50dp" |
44 | 45 | android:background="@null" |
45 | 46 | android:hint="请输入手机号码" |
47 | + android:maxLength="11" | |
46 | 48 | android:textColorHint="@color/hintTextColor" |
47 | 49 | android:textSize="@dimen/sp_16" /> |
48 | 50 | |
... | ... | @@ -113,7 +115,9 @@ |
113 | 115 | android:layout_height="50dp" |
114 | 116 | android:layout_weight="1" |
115 | 117 | android:background="@null" |
116 | - android:hint="请设置密码:6~8个字符" | |
118 | + android:hint="请设置密码:6~16个字符" | |
119 | + android:maxLength="16" | |
120 | + android:inputType="textPassword" | |
117 | 121 | android:textColorHint="@color/hintTextColor" |
118 | 122 | android:textSize="@dimen/sp_16" /> |
119 | 123 | |
... | ... | @@ -144,6 +148,7 @@ |
144 | 148 | android:paddingBottom="10dp" |
145 | 149 | android:paddingTop="10dp" |
146 | 150 | android:text="注册" |
151 | + android:enabled="false" | |
147 | 152 | android:textColor="@color/white" |
148 | 153 | android:textSize="@dimen/sp_16" /> |
149 | 154 | ... | ... |
mvpsdk/src/main/java/com/share/mvpsdk/helper/RetrofitCreateHelper.java
1 | 1 | package com.share.mvpsdk.helper; |
2 | 2 | |
3 | 3 | |
4 | - | |
5 | 4 | import com.share.mvpsdk.helper.okhttp.CacheInterceptor; |
6 | 5 | import com.share.mvpsdk.helper.okhttp.HttpCache; |
7 | 6 | import com.share.mvpsdk.helper.okhttp.TrustManager; |
7 | +import com.share.mvpsdk.utils.StringUtils; | |
8 | 8 | |
9 | 9 | import java.util.concurrent.TimeUnit; |
10 | 10 | |
... | ... | @@ -22,6 +22,8 @@ import retrofit2.converter.gson.GsonConverterFactory; |
22 | 22 | public class RetrofitCreateHelper { |
23 | 23 | private static final int TIMEOUT_READ = 20; |
24 | 24 | private static final int TIMEOUT_CONNECTION = 10; |
25 | + private static String Authorization="",token=""; | |
26 | + private static RetrofitCreateHelper retrofitCreateHelper=null; | |
25 | 27 | private static final HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor() |
26 | 28 | .setLevel(HttpLoggingInterceptor.Level.BODY); |
27 | 29 | private static CacheInterceptor cacheInterceptor = new CacheInterceptor(); |
... | ... | @@ -42,8 +44,16 @@ public class RetrofitCreateHelper { |
42 | 44 | //失败重连 |
43 | 45 | .retryOnConnectionFailure(true) |
44 | 46 | .build(); |
45 | - | |
47 | + public static RetrofitCreateHelper getInstance(){ | |
48 | + if (null==retrofitCreateHelper){ | |
49 | + synchronized (RetrofitCreateHelper.class){ | |
50 | + if (null==retrofitCreateHelper)retrofitCreateHelper=new RetrofitCreateHelper(); | |
51 | + } | |
52 | + } | |
53 | + return retrofitCreateHelper; | |
54 | + } | |
46 | 55 | public static <T> T createApi(Class<T> clazz, String url) { |
56 | + Authorization=token; | |
47 | 57 | Retrofit retrofit = new Retrofit.Builder() |
48 | 58 | .baseUrl(url) |
49 | 59 | .client(okHttpClient) |
... | ... | @@ -52,5 +62,23 @@ public class RetrofitCreateHelper { |
52 | 62 | .build(); |
53 | 63 | return retrofit.create(clazz); |
54 | 64 | } |
65 | + | |
66 | + public static <T> T loginApi(Class<T> clazz, String url) { | |
67 | + Authorization= StringUtils.getSign(); | |
68 | + Retrofit retrofit = new Retrofit.Builder() | |
69 | + .baseUrl(url) | |
70 | + .client(okHttpClient) | |
71 | + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) | |
72 | + .addConverterFactory(GsonConverterFactory.create()) | |
73 | + .build(); | |
74 | + return retrofit.create(clazz); | |
75 | + } | |
76 | + public void setAuthorization(String Authorization){ | |
77 | + this.token=Authorization; | |
78 | + } | |
79 | + | |
80 | + | |
81 | + | |
82 | + | |
55 | 83 | } |
56 | 84 | ... | ... |
mvpsdk/src/main/java/com/share/mvpsdk/utils/StringUtils.java
1 | 1 | package com.share.mvpsdk.utils; |
2 | 2 | |
3 | 3 | import android.text.TextUtils; |
4 | +import android.util.Base64; | |
4 | 5 | |
5 | 6 | import java.util.regex.Matcher; |
6 | 7 | import java.util.regex.Pattern; |
... | ... | @@ -122,4 +123,30 @@ public class StringUtils { |
122 | 123 | } |
123 | 124 | return true; |
124 | 125 | } |
126 | + | |
127 | + private final static String appSecret = "f71467cfd98d"; | |
128 | + public static String getSign(){ | |
129 | + String sign = ""; | |
130 | + try { | |
131 | + String clientid = MD5(System.currentTimeMillis() + new int[(int) (Math.random() * 100)].toString()); | |
132 | + sign = "Basic " + Base64.encodeToString((clientid + ":" + MD5(clientid + appSecret)).getBytes("ASCII"), Base64.NO_WRAP); | |
133 | + } catch (Exception err) { | |
134 | + err.printStackTrace(); | |
135 | + } | |
136 | + return sign; | |
137 | + } | |
138 | + | |
139 | + public static String MD5(String str) { | |
140 | + try { | |
141 | + java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5"); | |
142 | + byte[] array = md.digest(str.getBytes("utf-8")); | |
143 | + StringBuffer sb = new StringBuffer(); | |
144 | + for (int i = 0; i < array.length; ++i) { | |
145 | + sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3)); | |
146 | + } | |
147 | + return sb.toString().toUpperCase(); | |
148 | + } catch (Exception e) { | |
149 | + } | |
150 | + return ""; | |
151 | + } | |
125 | 152 | } | ... | ... |