Commit 11eee1b3afab04d3be24f5fc6a102fe1df57d6de
1 parent
661a7bcfd7
Exists in
master
登录,注册,忘记密码,验证码,修改密码,接口和逻辑的处理。
Showing
34 changed files
with
2021 additions
and
121 deletions
Show diff stats
PersonalCenter/app/build.gradle
1 | apply plugin: 'com.android.application' | 1 | apply plugin: 'com.android.application' |
2 | 2 | ||
3 | android { | 3 | android { |
4 | compileSdkVersion 25 | 4 | compileSdkVersion 25 |
5 | buildToolsVersion "25.0.3" | 5 | buildToolsVersion "25.0.3" |
6 | defaultConfig { | 6 | defaultConfig { |
7 | applicationId "com.hjx.personalcenter" | 7 | applicationId "com.hjx.personalcenter" |
8 | minSdkVersion 15 | 8 | minSdkVersion 15 |
9 | targetSdkVersion 25 | 9 | targetSdkVersion 25 |
10 | versionCode 1 | 10 | versionCode 1 |
11 | versionName "1.0" | 11 | versionName "1.0" |
12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" | 12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" |
13 | } | 13 | } |
14 | buildTypes { | 14 | buildTypes { |
15 | release { | 15 | release { |
16 | minifyEnabled false | 16 | minifyEnabled false |
17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' | 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' |
18 | } | 18 | } |
19 | } | 19 | } |
20 | useLibrary 'org.apache.http.legacy' | ||
21 | sourceSets { | ||
22 | main { | ||
23 | jniLibs.srcDirs = ['libs'] | ||
24 | } | ||
25 | } | ||
20 | } | 26 | } |
21 | 27 | ||
22 | dependencies { | 28 | dependencies { |
23 | compile fileTree(include: ['*.jar'], dir: 'libs') | 29 | compile fileTree(include: ['*.jar'], dir: 'libs') |
24 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { | 30 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { |
25 | exclude group: 'com.android.support', module: 'support-annotations' | 31 | exclude group: 'com.android.support', module: 'support-annotations' |
26 | }) | 32 | }) |
33 | compile 'com.tencent.bugly:crashreport:latest.release' | ||
34 | compile 'org.apache.httpcomponents:httpcore:4.4.1' | ||
35 | compile 'org.apache.httpcomponents:httpclient:4.5' | ||
27 | compile 'com.android.support:appcompat-v7:25.3.1' | 36 | compile 'com.android.support:appcompat-v7:25.3.1' |
28 | testCompile 'junit:junit:4.12' | 37 | testCompile 'junit:junit:4.12' |
29 | compile project(':circledialog') | 38 | compile project(':circledialog') |
30 | compile project(':pickerview') | 39 | compile project(':pickerview') |
40 | compile files('libs/android-async-http-1.4.8.jar') | ||
31 | } | 41 | } |
32 | 42 |
PersonalCenter/app/libs/android-async-http-1.4.8.jar
No preview for this file type
PersonalCenter/app/src/main/AndroidManifest.xml
1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | 2 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
3 | package="com.hjx.personalcenter"> | 3 | package="com.hjx.personalcenter"> |
4 | 4 | ||
5 | <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> | 5 | <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> |
6 | <application | 6 | <application |
7 | android:allowBackup="true" | 7 | android:allowBackup="true" |
8 | android:icon="@mipmap/ic_launcher" | 8 | android:icon="@mipmap/ic_launcher" |
9 | android:label="@string/app_name" | 9 | android:label="@string/app_name" |
10 | android:supportsRtl="true" | 10 | android:supportsRtl="true" |
11 | android:theme="@style/Theme.AppCompat.Light.NoActionBar"> | 11 | android:theme="@style/Theme.AppCompat.Light.NoActionBar"> |
12 | <activity | 12 | <activity |
13 | android:name=".activity.MainActivity" | 13 | android:name=".activity.MainActivity" |
14 | android:launchMode="singleTask" | 14 | android:launchMode="singleTask" |
15 | android:screenOrientation="landscape"> | 15 | android:screenOrientation="landscape"> |
16 | <intent-filter> | 16 | <intent-filter> |
17 | <action android:name="android.intent.action.MAIN" /> | 17 | <action android:name="android.intent.action.MAIN" /> |
18 | 18 | ||
19 | <category android:name="android.intent.category.LAUNCHER" /> | 19 | <category android:name="android.intent.category.LAUNCHER" /> |
20 | </intent-filter> | 20 | </intent-filter> |
21 | </activity> | 21 | </activity> |
22 | <activity | 22 | <activity |
23 | android:name=".activity.LoginAndRegisterActivity" | 23 | android:name=".activity.LoginAndRegisterActivity" |
24 | android:launchMode="singleTask" | 24 | android:launchMode="singleTask" |
25 | android:screenOrientation="landscape"> | 25 | android:screenOrientation="landscape"> |
26 | 26 | ||
27 | </activity> | 27 | </activity> |
28 | <activity | 28 | <activity |
29 | android:name=".activity.ForgotPasswordActivity" | 29 | android:name=".activity.ForgotPasswordActivity" |
30 | android:launchMode="singleTask" | 30 | android:launchMode="singleTask" |
31 | android:screenOrientation="landscape"> | 31 | android:screenOrientation="landscape"> |
32 | 32 | ||
33 | </activity> | 33 | </activity> |
34 | <activity | 34 | <activity |
35 | android:name=".activity.ChangePasswordActivity" | 35 | android:name=".activity.ChangePasswordActivity" |
36 | android:launchMode="singleTask" | 36 | android:launchMode="singleTask" |
37 | android:screenOrientation="landscape"> | 37 | android:screenOrientation="landscape"> |
38 | 38 | ||
39 | </activity> | 39 | </activity> |
40 | <activity | 40 | <activity |
41 | android:name=".activity.RegisterInfoActivity" | 41 | android:name=".activity.RegisterInfoActivity" |
42 | android:launchMode="singleTask" | 42 | android:launchMode="singleTask" |
43 | android:screenOrientation="landscape"> | 43 | android:screenOrientation="landscape"> |
44 | 44 | ||
45 | </activity> | 45 | </activity> |
46 | <activity | 46 | <activity |
47 | android:name=".activity.ElectronicCardValidationActivity" | 47 | android:name=".activity.ElectronicCardValidationActivity" |
48 | android:launchMode="singleTask" | 48 | android:launchMode="singleTask" |
49 | android:screenOrientation="landscape"> | 49 | android:screenOrientation="landscape"> |
50 | 50 | ||
51 | </activity> | 51 | </activity> |
52 | <activity | 52 | <activity |
53 | android:name=".activity.ChangeBangDingActivity" | 53 | android:name=".activity.ChangeBangDingActivity" |
54 | android:launchMode="singleTask" | 54 | android:launchMode="singleTask" |
55 | android:screenOrientation="landscape"> | 55 | android:screenOrientation="landscape"> |
56 | 56 | ||
57 | </activity> | 57 | </activity> |
58 | <activity | 58 | <activity |
59 | android:name=".activity.ChangeElectronicCardInfoActivity" | 59 | android:name=".activity.ChangeElectronicCardInfoActivity" |
60 | android:launchMode="singleTask" | 60 | android:launchMode="singleTask" |
61 | android:screenOrientation="landscape"> | 61 | android:screenOrientation="landscape"> |
62 | 62 | ||
63 | </activity> | 63 | </activity> |
64 | <activity | 64 | <activity |
65 | android:name=".activity.ChangeEletronicCardPhoneActivity" | 65 | android:name=".activity.ChangeEletronicCardPhoneActivity" |
66 | android:launchMode="singleTask" | 66 | android:launchMode="singleTask" |
67 | android:screenOrientation="landscape"> | 67 | android:screenOrientation="landscape"> |
68 | 68 | ||
69 | </activity> | 69 | </activity> |
70 | <activity | 70 | <activity |
71 | android:name=".activity.ChoiseTextBookActivity" | 71 | android:name=".activity.ChoiseTextBookActivity" |
72 | android:launchMode="singleTask" | 72 | android:launchMode="singleTask" |
73 | android:screenOrientation="landscape"> | 73 | android:screenOrientation="landscape"> |
74 | 74 | ||
75 | </activity> | 75 | </activity> |
76 | <activity | 76 | <activity |
77 | android:name=".activity.TheStartPageActivity" | 77 | android:name=".activity.TheStartPageActivity" |
78 | android:launchMode="singleTask" | 78 | android:launchMode="singleTask" |
79 | android:screenOrientation="landscape"> | 79 | android:screenOrientation="landscape"> |
80 | 80 | ||
81 | </activity> | 81 | </activity> |
82 | <activity | 82 | <activity |
83 | android:name=".activity.ElectronicCardEditInfoActivity" | 83 | android:name=".activity.ElectronicCardEditInfoActivity" |
84 | android:launchMode="singleTask" | 84 | android:launchMode="singleTask" |
85 | android:screenOrientation="landscape"> | 85 | android:screenOrientation="landscape"> |
86 | 86 | ||
87 | </activity> | 87 | </activity> |
88 | <activity | 88 | <activity |
89 | android:name=".activity.ElectronicCardInfoOKActivity" | 89 | android:name=".activity.ElectronicCardInfoOKActivity" |
90 | android:launchMode="singleTask" | 90 | android:launchMode="singleTask" |
91 | android:screenOrientation="landscape"> | 91 | android:screenOrientation="landscape"> |
92 | 92 | ||
93 | </activity> | 93 | </activity> |
94 | <activity | 94 | <activity |
95 | android:name=".activity.ElectronicCardLookInfoActivity" | 95 | android:name=".activity.ElectronicCardLookInfoActivity" |
96 | android:launchMode="singleTask" | 96 | android:launchMode="singleTask" |
97 | android:screenOrientation="landscape"> | 97 | android:screenOrientation="landscape"> |
98 | 98 | ||
99 | </activity> | 99 | </activity> |
100 | <activity | 100 | <activity |
101 | android:name=".activity.FeedBackActivity" | 101 | android:name=".activity.FeedBackActivity" |
102 | android:launchMode="singleTask" | 102 | android:launchMode="singleTask" |
103 | android:screenOrientation="landscape"> | 103 | android:screenOrientation="landscape"> |
104 | 104 | ||
105 | </activity> | 105 | </activity> |
106 | <activity | 106 | <activity |
107 | android:name=".activity.AccountManagementActivity" | 107 | android:name=".activity.AccountManagementActivity" |
108 | android:launchMode="singleTask" | 108 | android:launchMode="singleTask" |
109 | android:screenOrientation="landscape"> | 109 | android:screenOrientation="landscape"> |
110 | 110 | ||
111 | </activity> | 111 | </activity> |
112 | <activity | 112 | <activity |
113 | android:name=".activity.ChangePresonalInfoActivity" | 113 | android:name=".activity.ChangePresonalInfoActivity" |
114 | android:launchMode="singleTask" | 114 | android:launchMode="singleTask" |
115 | android:screenOrientation="landscape"> | 115 | android:screenOrientation="landscape"> |
116 | 116 | ||
117 | </activity> | 117 | </activity> |
118 | <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> | ||
119 | </application> | 118 | </application> |
119 | <!--权限--> | ||
120 | <uses-permission android:name="android.permission.CAMERA" /> | ||
121 | <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> | ||
122 | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | ||
123 | <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> | ||
124 | <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | ||
125 | <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> | ||
126 | <uses-permission android:name="android.permission.CALL_PHONE" /> | ||
127 | <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> | ||
128 | <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> | ||
129 | <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> | ||
130 | <uses-permission android:name="android.permission.INTERNET" /> | ||
131 | <uses-permission android:name="android.permission.READ_PHONE_STATE" /> | ||
132 | <uses-permission android:name="android.permission.READ_LOGS" /> | ||
120 | 133 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/activity/ChangePasswordActivity.java
1 | package com.hjx.personalcenter.activity; | 1 | package com.hjx.personalcenter.activity; |
2 | 2 | ||
3 | import android.app.Activity; | 3 | import android.app.Activity; |
4 | import android.os.Bundle; | 4 | import android.os.Bundle; |
5 | import android.text.TextUtils; | ||
6 | import android.text.method.HideReturnsTransformationMethod; | ||
7 | import android.text.method.PasswordTransformationMethod; | ||
8 | import android.view.View; | ||
9 | import android.widget.Button; | ||
10 | import android.widget.EditText; | ||
11 | import android.widget.ImageView; | ||
5 | 12 | ||
6 | import com.hjx.personalcenter.R; | 13 | import com.hjx.personalcenter.R; |
14 | import com.hjx.personalcenter.http.HttpManager; | ||
15 | import com.hjx.personalcenter.util.AlertUtils; | ||
16 | import com.hjx.personalcenter.util.PasswordCheckUtils; | ||
17 | import com.hjx.personalcenter.util.SaveParam; | ||
7 | 18 | ||
8 | /** | 19 | /**修改密码 |
9 | * Created by h on 2017/8/9. | 20 | * Created by h on 2017/6/27. |
10 | */ | 21 | */ |
11 | 22 | ||
12 | public class ChangePasswordActivity extends Activity { | 23 | public class ChangePasswordActivity extends Activity implements View.OnClickListener { |
24 | private EditText old_pwd,newpassword,newpassword1; | ||
25 | private Button sub_change_pwd; | ||
26 | private ImageView back_change_pwd,eyes_iv_change1,eyes_iv_change2; | ||
27 | public static Boolean showPassword = false; | ||
13 | @Override | 28 | @Override |
14 | protected void onCreate(Bundle savedInstanceState) { | 29 | protected void onCreate(Bundle savedInstanceState) { |
15 | super.onCreate(savedInstanceState); | 30 | super.onCreate(savedInstanceState); |
16 | setContentView(R.layout.activity_changepsword); | 31 | setContentView(R.layout.activity_changepsword); |
32 | initView(); | ||
33 | setLister(); | ||
34 | } | ||
35 | |||
36 | private void initView() { | ||
37 | old_pwd = (EditText) findViewById(R.id.et_oldpassword); | ||
38 | newpassword = (EditText) findViewById(R.id.et_newpassword); | ||
39 | newpassword1 = (EditText) findViewById(R.id.et_again_newpassword); | ||
40 | sub_change_pwd = (Button) findViewById(R.id.btn_ok); | ||
41 | back_change_pwd = (ImageView) findViewById(R.id.cancel); | ||
42 | eyes_iv_change1 = (ImageView) findViewById(R.id.iv_pwd_change); | ||
43 | |||
44 | |||
45 | } | ||
46 | |||
47 | private void setLister() { | ||
48 | sub_change_pwd.setOnClickListener(this); | ||
49 | back_change_pwd.setOnClickListener(this); | ||
50 | eyes_iv_change1.setOnClickListener(this); | ||
51 | eyes_iv_change2.setOnClickListener(this); | ||
52 | } | ||
53 | |||
54 | @Override | ||
55 | public void onClick(View v) { | ||
56 | String old_pwd1 = old_pwd.getText().toString().trim(); | ||
57 | String newpassword3 = newpassword.getText().toString().trim(); | ||
58 | String newpassword4 = newpassword1.getText().toString().trim(); | ||
59 | switch (v.getId()){ | ||
60 | //确认修改 | ||
61 | case R.id.btn_ok: | ||
62 | |||
63 | //Log.e("test","sp保存的密码是"+sp.getLoginParam(ChangePwd.this, "password")); | ||
64 | if (TextUtils.isEmpty(old_pwd1)|| | ||
65 | TextUtils.isEmpty(newpassword3) || TextUtils.isEmpty(newpassword4)){ | ||
66 | AlertUtils.showToast(ChangePasswordActivity.this, "请将必填项填写完整"); | ||
67 | return; | ||
68 | }else if(newpassword3.length()<8||newpassword4.length()<8){ | ||
69 | AlertUtils.showToast(ChangePasswordActivity.this,"密码不能少于8位"); | ||
70 | }else if(!newpassword3.matches(PasswordCheckUtils.PASSWORD_CHAR_AND_NUMBER)||!newpassword4.matches(PasswordCheckUtils.PASSWORD_CHAR_AND_NUMBER)){ | ||
71 | AlertUtils.showToast(ChangePasswordActivity.this, "密码必须由数字和字母组成"); | ||
72 | } | ||
73 | //得到原密码并且判断是否输入的一样 | ||
74 | else if(!SaveParam.getInstance().getLoginParam(ChangePasswordActivity.this,"password").equals(old_pwd1)){ | ||
75 | |||
76 | AlertUtils.showToast(ChangePasswordActivity.this, "原密码输入错误"); | ||
77 | |||
78 | }else if (!newpassword3.equals(newpassword4)){ | ||
79 | AlertUtils.showToast(ChangePasswordActivity.this, "两次密码输入不一致"); | ||
80 | return; | ||
81 | }else{ | ||
82 | //修改密码接口 | ||
83 | String name = SaveParam.getInstance().getLoginParam(ChangePasswordActivity.this,"username"); | ||
84 | HttpManager.getInstance().changepwd(this,name,old_pwd1,newpassword3); | ||
85 | } | ||
86 | |||
87 | break; | ||
88 | case R.id.iv_pwd_change: | ||
89 | if(showPassword){//显示密码 | ||
90 | showPassword = !showPassword; | ||
91 | eyes_iv_change1.setImageResource(R.mipmap.pwd_open); | ||
92 | newpassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); | ||
93 | newpassword.setSelection(newpassword.getText().toString().length()); | ||
94 | }else{//隐藏密码 | ||
95 | showPassword = !showPassword; | ||
96 | eyes_iv_change1.setImageResource(R.mipmap.pwd_hide); | ||
97 | newpassword.setTransformationMethod(PasswordTransformationMethod.getInstance()); | ||
98 | newpassword.setSelection(newpassword.getText().toString().length()); | ||
99 | } | ||
100 | break; | ||
101 | |||
102 | case R.id.cancel: | ||
103 | finish(); | ||
104 | break; | ||
105 | } | ||
106 | |||
17 | } | 107 | } |
18 | } | 108 | } |
19 | 109 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/activity/ForgotPasswordActivity.java
1 | package com.hjx.personalcenter.activity; | 1 | package com.hjx.personalcenter.activity; |
2 | 2 | ||
3 | import android.app.Activity; | 3 | import android.app.Activity; |
4 | import android.os.Bundle; | 4 | import android.os.Bundle; |
5 | import android.os.Handler; | ||
6 | import android.os.Message; | ||
7 | import android.text.TextUtils; | ||
8 | import android.text.method.HideReturnsTransformationMethod; | ||
9 | import android.text.method.PasswordTransformationMethod; | ||
10 | import android.view.View; | ||
11 | import android.widget.Button; | ||
12 | import android.widget.EditText; | ||
13 | import android.widget.ImageView; | ||
5 | 14 | ||
6 | import com.hjx.personalcenter.R; | 15 | import com.hjx.personalcenter.R; |
16 | import com.hjx.personalcenter.http.HttpCode; | ||
17 | import com.hjx.personalcenter.http.HttpManager; | ||
18 | import com.hjx.personalcenter.util.AlertUtils; | ||
19 | import com.hjx.personalcenter.util.Judgment; | ||
20 | import com.hjx.personalcenter.util.PasswordCheckUtils; | ||
21 | import com.hjx.personalcenter.util.PhoneNumCheckUtils; | ||
7 | 22 | ||
8 | /** | 23 | import org.json.JSONException; |
9 | * Created by h on 2017/8/9. | 24 | import org.json.JSONObject; |
25 | |||
26 | /**忘记密码 | ||
27 | * Created by h on 2017/6/17. | ||
10 | */ | 28 | */ |
11 | 29 | ||
12 | public class ForgotPasswordActivity extends Activity { | 30 | public class ForgotPasswordActivity extends Activity implements View.OnClickListener { |
31 | private ImageView back_forgit,iv_pwd_change; | ||
32 | private EditText forot_pwd_phone,forot_pwd_anthcode,forot_pwd_pwd,forot_pwd_pwd2; | ||
33 | private Button forot_pwd_sub,forot_pwd_getanthcode; | ||
34 | private String forot_pwd_phone1; | ||
35 | private String forot_pwd_anthcode1; | ||
36 | private String forot_pwd_pwd3; | ||
37 | private String forot_pwd_pwd4; | ||
38 | private String typeStr = "login"; | ||
39 | private int i = 0; | ||
40 | private Thread thread; | ||
41 | public static Boolean showPassword = false; | ||
42 | |||
43 | Handler handler = new Handler() { | ||
44 | @Override | ||
45 | public void handleMessage(Message msg) { | ||
46 | super.handleMessage(msg); | ||
47 | try { | ||
48 | JSONObject jsonObject; | ||
49 | String status; | ||
50 | switch (msg.what) { | ||
51 | case HttpCode.PASSWORD_SUCESS: | ||
52 | jsonObject = (JSONObject) msg.obj; | ||
53 | status = jsonObject.getString("status"); | ||
54 | // AlertUtils.showToast(ForgotPassword.this, jsonObject.optString("message")); | ||
55 | if (status.equals("100")) { | ||
56 | AlertUtils.showToast(ForgotPasswordActivity.this,"密码修改成功"); | ||
57 | } | ||
58 | |||
59 | break; | ||
60 | case HttpCode.PASSWORD_FAIL: | ||
61 | jsonObject = (JSONObject) msg.obj; | ||
62 | AlertUtils.showToast(ForgotPasswordActivity.this, "密码修改失败,请检查网络是否畅通。"); | ||
63 | break; | ||
64 | case HttpCode.AUTHCODE_SUCESS1: | ||
65 | jsonObject = (JSONObject) msg.obj; | ||
66 | status = jsonObject.optString("status"); | ||
67 | if (status.equals("100")) { | ||
68 | AlertUtils.showToast(ForgotPasswordActivity.this, "验证码发送成功"); | ||
69 | } | ||
70 | //AlertUtils.showToast(ForgotPassword.this, jsonObject.optString("message")); | ||
71 | break; | ||
72 | case HttpCode.AUTHCODE_FAIL1: | ||
73 | jsonObject = (JSONObject) msg.obj; | ||
74 | AlertUtils.showToast(ForgotPasswordActivity.this, jsonObject.optString("验证码发送失败,请检查网络")); | ||
75 | break; | ||
76 | case HttpCode.IS_REFISTER: | ||
77 | jsonObject = (JSONObject) msg.obj; | ||
78 | status = jsonObject.getString("status"); | ||
79 | if (status.equals("true")) { | ||
80 | getauthcode(); | ||
81 | // i = 60; | ||
82 | // new Thread(new ForgotPassword.ThreadShow()).start(); | ||
83 | |||
84 | }else { | ||
85 | AlertUtils.showToast(ForgotPasswordActivity.this, "该手机号没有注册"); | ||
86 | } | ||
87 | break; | ||
88 | case 1: | ||
89 | forot_pwd_getanthcode.setEnabled(false); | ||
90 | forot_pwd_getanthcode.setClickable(false); | ||
91 | forot_pwd_getanthcode.setText(Integer.toString(i--)+" s"); | ||
92 | if (i<=0){ | ||
93 | forot_pwd_getanthcode.setEnabled(true); | ||
94 | forot_pwd_getanthcode.setClickable(true); | ||
95 | forot_pwd_getanthcode.setText("获取验证码"); | ||
96 | |||
97 | } | ||
98 | break; | ||
99 | } | ||
100 | } catch (JSONException e) { | ||
101 | e.printStackTrace(); | ||
102 | } | ||
103 | } | ||
104 | }; | ||
13 | @Override | 105 | @Override |
14 | protected void onCreate(Bundle savedInstanceState) { | 106 | protected void onCreate(Bundle savedInstanceState) { |
15 | super.onCreate(savedInstanceState); | 107 | super.onCreate(savedInstanceState); |
16 | setContentView(R.layout.activity_forgetpsword); | 108 | setContentView(R.layout.activity_forgetpsword); |
109 | initView(); | ||
110 | setLister(); | ||
111 | } | ||
112 | //获取验证码 | ||
113 | private void getauthcode() { | ||
114 | forot_pwd_anthcode.requestFocus(); | ||
115 | HttpManager.getInstance().forgetauthCode(typeStr, forot_pwd_phone1, handler, this); | ||
116 | i = 60; | ||
117 | if(thread == null){ | ||
118 | thread = new Thread( new ThreadShow()); | ||
119 | thread.start(); | ||
120 | } | ||
121 | |||
122 | } | ||
123 | |||
124 | private void initView() { | ||
125 | forot_pwd_phone = (EditText) findViewById(R.id.et_phonenumber); | ||
126 | forot_pwd_anthcode = (EditText) findViewById(R.id.et_authcode); | ||
127 | forot_pwd_pwd = (EditText) findViewById(R.id.et_newpassword); | ||
128 | forot_pwd_pwd2 = (EditText) findViewById(R.id.et_again_newpassword); | ||
129 | forot_pwd_sub = (Button) findViewById(R.id.btn_ok); | ||
130 | forot_pwd_getanthcode = (Button) findViewById(R.id.btn_authcode); | ||
131 | iv_pwd_change=(ImageView) findViewById(R.id.iv_pwd_change); | ||
132 | back_forgit= (ImageView) findViewById(R.id.cancel); | ||
133 | } | ||
134 | private void setLister() { | ||
135 | iv_pwd_change.setOnClickListener(this); | ||
136 | back_forgit.setOnClickListener(this); | ||
137 | forot_pwd_sub.setOnClickListener(this); | ||
138 | forot_pwd_getanthcode.setOnClickListener(this); | ||
139 | |||
140 | } | ||
141 | |||
142 | |||
143 | @Override | ||
144 | public void onClick(View view) { | ||
145 | switch (view.getId()){ | ||
146 | case R.id.btn_ok: | ||
147 | forot_pwd_phone1 = forot_pwd_phone.getText().toString().trim(); | ||
148 | forot_pwd_anthcode1 = forot_pwd_anthcode.getText().toString().trim(); | ||
149 | forot_pwd_pwd3 = forot_pwd_pwd.getText().toString().trim(); | ||
150 | forot_pwd_pwd4 = forot_pwd_pwd2.getText().toString().trim(); | ||
151 | if (TextUtils.isEmpty(forot_pwd_phone1)|| | ||
152 | TextUtils.isEmpty(forot_pwd_pwd3) || TextUtils.isEmpty(forot_pwd_pwd4)){ | ||
153 | AlertUtils.showToast(ForgotPasswordActivity.this, "请将必填项填写完整"); | ||
154 | return; | ||
155 | }else if (Judgment.getInstance().isPhoneNum(forot_pwd_phone1)){ | ||
156 | AlertUtils.showToast(ForgotPasswordActivity.this, "手机号码输入有误"); | ||
157 | |||
158 | } | ||
159 | else if(forot_pwd_pwd3.length()<8||forot_pwd_pwd4.length()<8){ | ||
160 | AlertUtils.showToast(ForgotPasswordActivity.this, "密码不能少于8位"); | ||
161 | }else if(!forot_pwd_pwd3.matches(PasswordCheckUtils.PASSWORD_CHAR_AND_NUMBER)||!forot_pwd_pwd4.matches(PasswordCheckUtils.PASSWORD_CHAR_AND_NUMBER)){ | ||
162 | AlertUtils.showToast(ForgotPasswordActivity.this, "密码必须由英文和数字组成"); | ||
163 | } | ||
164 | else if (!forot_pwd_pwd3.equals(forot_pwd_pwd4)){ | ||
165 | AlertUtils.showToast(ForgotPasswordActivity.this, "两次输入的密码不一致"); | ||
166 | return; | ||
167 | }else { | ||
168 | //忘记密码接口 | ||
169 | HttpManager.getInstance().forgetpassword(this,forot_pwd_phone1,forot_pwd_pwd3,forot_pwd_anthcode1,handler); | ||
170 | } | ||
171 | break; | ||
172 | case R.id.btn_authcode: | ||
173 | forot_pwd_phone1 = forot_pwd_phone.getText().toString().trim(); | ||
174 | if (!PhoneNumCheckUtils.isPhone(forot_pwd_phone1)){ | ||
175 | AlertUtils.showToast(ForgotPasswordActivity.this, "请输入正确的手机号"); | ||
176 | }else { | ||
177 | forot_pwd_anthcode.requestFocus(); | ||
178 | ifregister(); | ||
179 | |||
180 | } | ||
181 | |||
182 | break; | ||
183 | case R.id.iv_pwd_change: | ||
184 | if(showPassword){//显示密码 | ||
185 | showPassword = !showPassword; | ||
186 | iv_pwd_change.setImageResource(R.mipmap.pwd_open); | ||
187 | forot_pwd_pwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); | ||
188 | forot_pwd_pwd.setSelection(forot_pwd_pwd.getText().toString().length()); | ||
189 | }else{//隐藏密码 | ||
190 | showPassword = !showPassword; | ||
191 | iv_pwd_change.setImageResource(R.mipmap.pwd_hide); | ||
192 | forot_pwd_pwd.setTransformationMethod(PasswordTransformationMethod.getInstance()); | ||
193 | forot_pwd_pwd.setSelection(forot_pwd_pwd.getText().toString().length()); | ||
194 | } | ||
195 | break; | ||
196 | |||
197 | case R.id.cancel: | ||
198 | finish(); | ||
199 | break; | ||
200 | } | ||
201 | } | ||
202 | //是否注册 | ||
203 | private void ifregister() { | ||
204 | forot_pwd_phone1 = forot_pwd_phone.getText().toString().trim(); | ||
205 | HttpManager.getInstance().isregistered(forot_pwd_phone1, handler, this); | ||
206 | } | ||
207 | // 线程类 定时器 | ||
208 | class ThreadShow implements Runnable { | ||
209 | |||
210 | @Override | ||
211 | public void run() { | ||
212 | // TODO Auto-generated method stub | ||
213 | while (true) { | ||
214 | try { | ||
215 | Thread.sleep(1000); | ||
216 | Message msg = new Message(); | ||
217 | msg.what = 1; | ||
218 | handler.sendMessage(msg); | ||
219 | System.out.println("send..."); | ||
220 | } catch (Exception e) { | ||
221 | // TODO Auto-generated catch block | ||
222 | e.printStackTrace(); | ||
223 | System.out.println("thread error..."); | ||
224 | } | ||
225 | } | ||
226 | } | ||
17 | } | 227 | } |
18 | } | 228 | } |
19 | 229 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/activity/RegisterInfoActivity.java
1 | package com.hjx.personalcenter.activity; | 1 | package com.hjx.personalcenter.activity; |
2 | 2 | ||
3 | import android.content.Intent; | 3 | import android.content.Intent; |
4 | import android.os.Bundle; | 4 | import android.os.Bundle; |
5 | import android.os.Handler; | ||
6 | import android.os.Message; | ||
5 | import android.support.v7.app.AppCompatActivity; | 7 | import android.support.v7.app.AppCompatActivity; |
6 | import android.view.View; | 8 | import android.view.View; |
7 | import android.widget.Button; | 9 | import android.widget.Button; |
8 | import android.widget.EditText; | 10 | import android.widget.EditText; |
9 | import android.widget.TextView; | 11 | import android.widget.TextView; |
10 | 12 | ||
11 | import com.hjx.personalcenter.R; | 13 | import com.hjx.personalcenter.R; |
12 | import com.hjx.personalcenter.customdialog.ListDialog; | 14 | import com.hjx.personalcenter.customdialog.GradeListDialog; |
15 | import com.hjx.personalcenter.customdialog.ProvinceListDialog; | ||
16 | import com.hjx.personalcenter.http.HttpCode; | ||
17 | import com.hjx.personalcenter.http.HttpManager; | ||
18 | |||
19 | import org.json.JSONException; | ||
20 | import org.json.JSONObject; | ||
13 | 21 | ||
14 | /**填写注册信息 熊巍 | 22 | /**填写注册信息 熊巍 |
15 | * Created by h on 2017/8/9. | 23 | * Created by h on 2017/8/9. |
16 | */ | 24 | */ |
17 | 25 | ||
18 | public class RegisterInfoActivity extends AppCompatActivity implements View.OnClickListener { | 26 | public class RegisterInfoActivity extends AppCompatActivity implements View.OnClickListener { |
19 | private EditText et_username; | 27 | private EditText et_username; |
20 | private TextView et_region,et_grade,et_school; | 28 | private TextView et_region,et_grade,et_school; |
21 | private Button btn_ok; | 29 | private Button btn_ok; |
22 | String[] items; | 30 | String[] items; |
31 | Handler handler = new Handler() { | ||
32 | @Override | ||
33 | public void handleMessage(Message msg) { | ||
34 | super.handleMessage(msg); | ||
35 | try { | ||
36 | JSONObject jsonObject; | ||
37 | String status; | ||
38 | switch (msg.what) { | ||
39 | case HttpCode.PROVICES: | ||
40 | jsonObject = (JSONObject) msg.obj; | ||
41 | status = jsonObject.getString("status"); | ||
42 | |||
43 | } | ||
44 | } catch (JSONException e) { | ||
45 | e.printStackTrace(); | ||
46 | } | ||
47 | } | ||
48 | }; | ||
23 | 49 | ||
24 | @Override | 50 | @Override |
25 | protected void onCreate(Bundle savedInstanceState) { | 51 | protected void onCreate(Bundle savedInstanceState) { |
26 | super.onCreate(savedInstanceState); | 52 | super.onCreate(savedInstanceState); |
27 | setContentView(R.layout.activity_registerinfo); | 53 | setContentView(R.layout.activity_registerinfo); |
28 | initView(); | 54 | initView(); |
29 | initData(); | 55 | initData(); |
30 | initLister(); | 56 | initLister(); |
31 | } | 57 | } |
32 | 58 | ||
33 | private void initView() { | 59 | private void initView() { |
34 | et_username = (EditText) findViewById(R.id.et_username); | 60 | et_username = (EditText) findViewById(R.id.et_username); |
35 | et_region = (TextView) findViewById(R.id.et_region); | 61 | et_region = (TextView) findViewById(R.id.et_region); |
36 | et_grade = (TextView) findViewById(R.id.et_grade); | 62 | et_grade = (TextView) findViewById(R.id.et_grade); |
37 | et_school = (TextView) findViewById(R.id.et_school); | 63 | et_school = (TextView) findViewById(R.id.et_school); |
38 | btn_ok = (Button) findViewById(R.id.btn_ok); | 64 | btn_ok = (Button) findViewById(R.id.btn_ok); |
39 | 65 | ||
40 | 66 | ||
41 | } | 67 | } |
42 | 68 | ||
43 | private void initData() { | 69 | private void initData() { |
44 | items = new String[] { "魏", "蜀", "吴" }; | 70 | items = new String[] { "魏", "蜀", "吴" }; |
45 | 71 | ||
46 | } | 72 | } |
47 | 73 | ||
48 | private void initLister() { | 74 | private void initLister() { |
49 | et_region.setOnClickListener(this); | 75 | et_region.setOnClickListener(this); |
50 | et_grade.setOnClickListener(this); | 76 | et_grade.setOnClickListener(this); |
51 | et_school.setOnClickListener(this); | 77 | et_school.setOnClickListener(this); |
52 | btn_ok.setOnClickListener(this); | 78 | btn_ok.setOnClickListener(this); |
53 | 79 | ||
54 | 80 | ||
55 | } | 81 | } |
56 | 82 | ||
57 | @Override | 83 | @Override |
58 | public void onClick(View v) { | 84 | public void onClick(View v) { |
59 | switch (v.getId()){ | 85 | switch (v.getId()){ |
60 | case R.id.et_region: | 86 | case R.id.et_region: |
87 | choiseregion(); | ||
61 | break; | 88 | break; |
62 | case R.id.et_grade: | 89 | case R.id.et_grade: |
63 | choisegrade(); | 90 | choisegrade(); |
64 | break; | 91 | break; |
65 | case R.id.et_school: | 92 | case R.id.et_school: |
66 | break; | 93 | break; |
67 | case R.id.btn_ok: | 94 | case R.id.btn_ok: |
68 | Intent intent = new Intent(); | 95 | Intent intent = new Intent(); |
69 | intent.setClass(RegisterInfoActivity.this,ChoiseTextBookActivity.class); | 96 | intent.setClass(RegisterInfoActivity.this,ChoiseTextBookActivity.class); |
70 | startActivity(intent); | 97 | startActivity(intent); |
71 | overridePendingTransition(R.anim.rightin, R.anim.rightout); | 98 | overridePendingTransition(R.anim.rightin, R.anim.rightout); |
72 | break; | 99 | break; |
73 | } | 100 | } |
74 | 101 | ||
75 | } | 102 | } |
76 | 103 | //选择地区 | |
104 | private void choiseregion() { | ||
105 | HttpManager.getInstance().provices(RegisterInfoActivity.this,handler); | ||
106 | ProvinceListDialog.getInstance().show(getSupportFragmentManager(), "ProvinceListDialog"); | ||
107 | } | ||
108 | //选择年级 | ||
77 | private void choisegrade() { | 109 | private void choisegrade() { |
78 | ListDialog.getInstance().show(getSupportFragmentManager(), "ListDialog"); | 110 | GradeListDialog.getInstance().show(getSupportFragmentManager(), "GradeListDialog"); |
79 | 111 | ||
80 | } | 112 | } |
81 | } | 113 | } |
82 | 114 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/areapicker/AreaBean.java
File was created | 1 | /** | |
2 | * HaoJiXing Teacher Q&A | ||
3 | * copyright(C)2013- Acorn International | ||
4 | * | ||
5 | * packeage:com.ozing.callteacher.widget.areapicker.Province.java | ||
6 | * create:2013年8月8日上午11:20:30 | ||
7 | */ | ||
8 | package com.hjx.personalcenter.areapicker; | ||
9 | |||
10 | /** | ||
11 | * @author jixiaolong<jixiaolong@chinadrtv.com> | ||
12 | * @code: 015261 | ||
13 | */ | ||
14 | public class AreaBean { | ||
15 | public static final int PROVINCE = 0x11; | ||
16 | public static final int CITY = 0x12; | ||
17 | public static final int COUNTY = 0x13; | ||
18 | protected int level; | ||
19 | protected String id; | ||
20 | protected String name; | ||
21 | protected String fullName; | ||
22 | protected String parentId; | ||
23 | |||
24 | public int getLevel() { | ||
25 | return level; | ||
26 | } | ||
27 | |||
28 | public void setLevel(int level) { | ||
29 | this.level = level; | ||
30 | } | ||
31 | |||
32 | public String getId() { | ||
33 | return id; | ||
34 | } | ||
35 | |||
36 | public void setId(String id) { | ||
37 | this.id = id; | ||
38 | } | ||
39 | |||
40 | public String getName() { | ||
41 | return name; | ||
42 | } | ||
43 | |||
44 | public void setName(String name) { | ||
45 | this.name = name; | ||
46 | } | ||
47 | |||
48 | public String getFullName() { | ||
49 | return fullName; | ||
50 | } | ||
51 | |||
52 | public void setFullName(String fullName) { | ||
53 | this.fullName = fullName; | ||
54 | } | ||
55 | |||
56 | public String getParentId() { | ||
57 | return parentId; | ||
58 | } | ||
59 | |||
60 | public void setParentId(String parentId) { | ||
61 | this.parentId = parentId; | ||
62 | } | ||
63 | |||
64 | @Override | ||
65 | public String toString() { | ||
66 | return fullName; | ||
67 | } | ||
68 | } | ||
69 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/customdialog/GradeListDialog.java
File was created | 1 | package com.hjx.personalcenter.customdialog; | |
2 | |||
3 | import android.content.Context; | ||
4 | import android.graphics.Color; | ||
5 | import android.os.Bundle; | ||
6 | import android.view.Gravity; | ||
7 | import android.view.LayoutInflater; | ||
8 | import android.view.View; | ||
9 | import android.view.ViewGroup; | ||
10 | import android.widget.AdapterView; | ||
11 | import android.widget.ArrayAdapter; | ||
12 | import android.widget.ListView; | ||
13 | import android.widget.Toast; | ||
14 | |||
15 | import com.hjx.personalcenter.R; | ||
16 | import com.mylhyl.circledialog.BaseCircleDialog; | ||
17 | import com.mylhyl.circledialog.res.values.CircleDimen; | ||
18 | |||
19 | import java.util.ArrayList; | ||
20 | |||
21 | /**自定义年级列表对话框 | ||
22 | * Created by h on 2017/8/10. | ||
23 | */ | ||
24 | |||
25 | public class GradeListDialog extends BaseCircleDialog implements AdapterView.OnItemClickListener { | ||
26 | ArrayAdapter listadapter; | ||
27 | ListView listView; | ||
28 | ArrayList<String> data = new ArrayList<>(); | ||
29 | public static GradeListDialog getInstance() { | ||
30 | GradeListDialog dialogFragment = new GradeListDialog(); | ||
31 | dialogFragment.setCanceledBack(true); | ||
32 | dialogFragment.setCanceledOnTouchOutside(true); | ||
33 | dialogFragment.setRadius(CircleDimen.RADIUS); | ||
34 | dialogFragment.setWidth(0.5f); | ||
35 | dialogFragment.setGravity(Gravity.CENTER); | ||
36 | dialogFragment.setBackgroundColor(Color.WHITE); | ||
37 | return dialogFragment; | ||
38 | } | ||
39 | @Override | ||
40 | public View createView(Context context, LayoutInflater inflater, ViewGroup container) { | ||
41 | |||
42 | return inflater.inflate(R.layout.custom_adilog_gradelist, container, false); | ||
43 | } | ||
44 | @Override | ||
45 | public void onActivityCreated(Bundle savedInstanceState) { | ||
46 | super.onActivityCreated(savedInstanceState); | ||
47 | listView = (ListView) getView().findViewById(R.id.listadapter); | ||
48 | for (int i=0;i<=50;i++){ | ||
49 | data.add("sss"+i); | ||
50 | } | ||
51 | |||
52 | listadapter = new ArrayAdapter(getActivity(),R.layout.custom_adilog_list_item,R.id.list_items,data); | ||
53 | listView.setAdapter(listadapter); | ||
54 | listView.setOnItemClickListener(this); | ||
55 | |||
56 | } | ||
57 | |||
58 | @Override | ||
59 | public void onItemClick(AdapterView<?> parent, View view, int position, long id) { | ||
60 | Toast.makeText(getActivity(),"你点击了第"+position+"个",Toast.LENGTH_LONG).show(); | ||
61 | |||
62 | dismiss(); | ||
63 | |||
64 | } | ||
65 | } | ||
66 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/customdialog/ListDialog.java
1 | package com.hjx.personalcenter.customdialog; | File was deleted | |
2 | |||
3 | import android.content.Context; | ||
4 | import android.graphics.Color; | ||
5 | import android.os.Bundle; | ||
6 | import android.view.Gravity; | ||
7 | import android.view.LayoutInflater; | ||
8 | import android.view.View; | ||
9 | import android.view.ViewGroup; | ||
10 | import android.widget.AdapterView; | ||
11 | import android.widget.ArrayAdapter; | ||
12 | import android.widget.ListView; | ||
13 | import android.widget.Toast; | ||
14 | |||
15 | import com.hjx.personalcenter.R; | ||
16 | import com.mylhyl.circledialog.BaseCircleDialog; | ||
17 | import com.mylhyl.circledialog.res.values.CircleDimen; | ||
18 | |||
19 | import java.util.ArrayList; | ||
20 | |||
21 | /**自定义列表对话框 | ||
22 | * Created by h on 2017/8/10. | ||
23 | */ | ||
24 | |||
25 | public class ListDialog extends BaseCircleDialog implements AdapterView.OnItemClickListener { | ||
26 | ArrayAdapter listadapter; | ||
27 | ListView listView; | ||
28 | ArrayList<String> data = new ArrayList<>(); | ||
29 | public static ListDialog getInstance() { | ||
30 | ListDialog dialogFragment = new ListDialog(); | ||
31 | dialogFragment.setCanceledBack(true); | ||
32 | dialogFragment.setCanceledOnTouchOutside(true); | ||
33 | dialogFragment.setRadius(CircleDimen.RADIUS); | ||
34 | dialogFragment.setWidth(0.5f); | ||
35 | dialogFragment.setGravity(Gravity.CENTER); | ||
36 | dialogFragment.setBackgroundColor(Color.WHITE); | ||
37 | return dialogFragment; | ||
38 | } | ||
39 | @Override | ||
40 | public View createView(Context context, LayoutInflater inflater, ViewGroup container) { | ||
41 | |||
42 | return inflater.inflate(R.layout.custom_adilog_list, container, false); | ||
43 | } | ||
44 | @Override | ||
45 | public void onActivityCreated(Bundle savedInstanceState) { | ||
46 | super.onActivityCreated(savedInstanceState); | ||
47 | listView = (ListView) getView().findViewById(R.id.listadapter); | ||
48 | for (int i=0;i<=50;i++){ | ||
49 | data.add("sss"+i); | ||
50 | } | ||
51 | |||
52 | listadapter = new ArrayAdapter(getActivity(),R.layout.custom_adilog_list_item,R.id.list_items,data); | ||
53 | listView.setAdapter(listadapter); | ||
54 | listView.setOnItemClickListener(this); | ||
55 | |||
56 | } | ||
57 | |||
58 | @Override | ||
59 | public void onItemClick(AdapterView<?> parent, View view, int position, long id) { | ||
60 | Toast.makeText(getActivity(),"你点击了第"+position+"个",Toast.LENGTH_LONG).show(); | ||
61 | |||
62 | dismiss(); | ||
63 | |||
64 | } | ||
65 | } | ||
66 | 1 | package com.hjx.personalcenter.customdialog; |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/customdialog/ProvinceListDialog.java
File was created | 1 | package com.hjx.personalcenter.customdialog; | |
2 | |||
3 | import android.content.Context; | ||
4 | import android.graphics.Color; | ||
5 | import android.os.Bundle; | ||
6 | import android.view.Gravity; | ||
7 | import android.view.LayoutInflater; | ||
8 | import android.view.View; | ||
9 | import android.view.ViewGroup; | ||
10 | import android.widget.AdapterView; | ||
11 | import android.widget.ArrayAdapter; | ||
12 | import android.widget.ListView; | ||
13 | import android.widget.Toast; | ||
14 | |||
15 | import com.hjx.personalcenter.R; | ||
16 | import com.mylhyl.circledialog.BaseCircleDialog; | ||
17 | import com.mylhyl.circledialog.res.values.CircleDimen; | ||
18 | |||
19 | import java.util.ArrayList; | ||
20 | |||
21 | /**自定义年级列表对话框 | ||
22 | * Created by h on 2017/8/10. | ||
23 | */ | ||
24 | |||
25 | public class ProvinceListDialog extends BaseCircleDialog implements AdapterView.OnItemClickListener { | ||
26 | ArrayAdapter listadapter; | ||
27 | ListView listView; | ||
28 | ArrayList<String> data = new ArrayList<>(); | ||
29 | public static ProvinceListDialog getInstance() { | ||
30 | ProvinceListDialog dialogFragment = new ProvinceListDialog(); | ||
31 | dialogFragment.setCanceledBack(true); | ||
32 | dialogFragment.setCanceledOnTouchOutside(true); | ||
33 | dialogFragment.setRadius(CircleDimen.RADIUS); | ||
34 | dialogFragment.setWidth(0.5f); | ||
35 | dialogFragment.setGravity(Gravity.CENTER); | ||
36 | dialogFragment.setBackgroundColor(Color.WHITE); | ||
37 | return dialogFragment; | ||
38 | } | ||
39 | @Override | ||
40 | public View createView(Context context, LayoutInflater inflater, ViewGroup container) { | ||
41 | return inflater.inflate(R.layout.custom_adilog_provicelist, container, false); | ||
42 | } | ||
43 | @Override | ||
44 | public void onActivityCreated(Bundle savedInstanceState) { | ||
45 | super.onActivityCreated(savedInstanceState); | ||
46 | listView = (ListView) getView().findViewById(R.id.listadapter); | ||
47 | for (int i=0;i<=50;i++){ | ||
48 | data.add("aaa"+i); | ||
49 | } | ||
50 | |||
51 | listadapter = new ArrayAdapter(getActivity(),R.layout.custom_adilog_list_item,R.id.list_items,data); | ||
52 | listView.setAdapter(listadapter); | ||
53 | listView.setOnItemClickListener(this); | ||
54 | |||
55 | } | ||
56 | |||
57 | @Override | ||
58 | public void onItemClick(AdapterView<?> parent, View view, int position, long id) { | ||
59 | Toast.makeText(getActivity(),"你点击了第"+position+"个",Toast.LENGTH_LONG).show(); | ||
60 | |||
61 | dismiss(); | ||
62 | |||
63 | } | ||
64 | } | ||
65 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/exception/RemoteException.java
File was created | 1 | /** | |
2 | * HaoJiXing Teacher Q&A | ||
3 | * copyright(C)2013- Acorn International | ||
4 | * | ||
5 | * packeage:com.ozing.callteacher.parser.RemoteException.java | ||
6 | * create:2013年7月25日下午1:58:14 | ||
7 | */ | ||
8 | package com.hjx.personalcenter.exception; | ||
9 | |||
10 | /** | ||
11 | * @author jixiaolong<jixiaolong@chinadrtv.com> | ||
12 | * @code: 015261 | ||
13 | */ | ||
14 | public class RemoteException extends Exception { | ||
15 | private ResponseError error; | ||
16 | /** | ||
17 | * | ||
18 | */ | ||
19 | private static final long serialVersionUID = -9062978963856572686L; | ||
20 | public RemoteException(String error) { | ||
21 | super(error); | ||
22 | this.error = new ResponseError(); | ||
23 | this.error.setMessage(error); | ||
24 | this.error.setStatus(-1); | ||
25 | } | ||
26 | public RemoteException(ResponseError error) { | ||
27 | super(error.getMessage()); | ||
28 | this.error = error; | ||
29 | } | ||
30 | |||
31 | public ResponseError getError() { | ||
32 | return error; | ||
33 | } | ||
34 | } | ||
35 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/exception/ResponseError.java
File was created | 1 | /** | |
2 | * HaoJiXing Teacher Q&A | ||
3 | * copyright(C)2013- Acorn International | ||
4 | * | ||
5 | * packeage:com.ozing.callteacher.parser.ResponseError.java | ||
6 | * create:2013年9月29日下午3:30:17 | ||
7 | */ | ||
8 | package com.hjx.personalcenter.exception; | ||
9 | |||
10 | |||
11 | /** | ||
12 | * @author jixiaolong<jixiaolong@chinadrtv.com> | ||
13 | * @code: 015261 | ||
14 | */ | ||
15 | public class ResponseError { | ||
16 | private int status = -1; | ||
17 | private String message; | ||
18 | public int getStatus() { | ||
19 | return status; | ||
20 | } | ||
21 | public void setStatus(int status) { | ||
22 | this.status = status; | ||
23 | } | ||
24 | public String getMessage() { | ||
25 | return message; | ||
26 | } | ||
27 | public void setMessage(String message) { | ||
28 | this.message = message; | ||
29 | } | ||
30 | |||
31 | public boolean hasError(){ | ||
32 | return status!=0 && status!=100; | ||
33 | } | ||
34 | |||
35 | } | ||
36 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/fragment/LoginFragment.java
1 | package com.hjx.personalcenter.fragment; | 1 | package com.hjx.personalcenter.fragment; |
2 | 2 | ||
3 | import android.content.Intent; | 3 | import android.content.Intent; |
4 | import android.os.Bundle; | 4 | import android.os.Bundle; |
5 | import android.support.annotation.Nullable; | 5 | import android.support.annotation.Nullable; |
6 | import android.support.v4.app.Fragment; | 6 | import android.support.v4.app.Fragment; |
7 | import android.text.TextUtils; | ||
7 | import android.view.LayoutInflater; | 8 | import android.view.LayoutInflater; |
8 | import android.view.View; | 9 | import android.view.View; |
9 | import android.view.ViewGroup; | 10 | import android.view.ViewGroup; |
10 | import android.widget.Button; | 11 | import android.widget.Button; |
12 | import android.widget.EditText; | ||
11 | import android.widget.TextView; | 13 | import android.widget.TextView; |
12 | 14 | ||
13 | import com.hjx.personalcenter.R; | 15 | import com.hjx.personalcenter.R; |
14 | import com.hjx.personalcenter.activity.ForgotPasswordActivity; | 16 | import com.hjx.personalcenter.activity.ForgotPasswordActivity; |
15 | import com.hjx.personalcenter.activity.MainActivity; | 17 | import com.hjx.personalcenter.activity.MainActivity; |
18 | import com.hjx.personalcenter.http.HttpManager; | ||
19 | import com.hjx.personalcenter.util.AlertUtils; | ||
20 | import com.hjx.personalcenter.util.PhoneNumCheckUtils; | ||
16 | 21 | ||
17 | /** | 22 | /** |
18 | * 登录 | 23 | * 登录 |
19 | * Created by h on 2017/8/8. | 24 | * Created by h on 2017/8/8. |
20 | */ | 25 | */ |
21 | 26 | ||
22 | public class LoginFragment extends Fragment implements View.OnClickListener { | 27 | public class LoginFragment extends Fragment implements View.OnClickListener { |
23 | private View mView; | 28 | private View mView; |
24 | private int type; | 29 | private int type; |
25 | private TextView tv_forget_pwd; | 30 | private TextView tv_forget_pwd; |
26 | private Button btn_login; | 31 | private Button btn_login; |
32 | private EditText phonenumber,login_pwwd; | ||
27 | public static String TABLAYOUT_FRAGMENT = "tab_fragment"; | 33 | public static String TABLAYOUT_FRAGMENT = "tab_fragment"; |
28 | Intent intent = new Intent(); | 34 | Intent intent = new Intent(); |
29 | public static LoginFragment newInstance(int type) { | 35 | public static LoginFragment newInstance(int type) { |
30 | LoginFragment fragment = new LoginFragment(); | 36 | LoginFragment fragment = new LoginFragment(); |
31 | Bundle bundle = new Bundle(); | 37 | Bundle bundle = new Bundle(); |
32 | bundle.putSerializable(TABLAYOUT_FRAGMENT, type); | 38 | bundle.putSerializable(TABLAYOUT_FRAGMENT, type); |
33 | fragment.setArguments(bundle); | 39 | fragment.setArguments(bundle); |
34 | return fragment; | 40 | return fragment; |
35 | 41 | ||
36 | } | 42 | } |
37 | 43 | ||
38 | @Override | 44 | @Override |
39 | public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { | 45 | public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { |
40 | if (mView == null) { | 46 | if (mView == null) { |
41 | mView = inflater.inflate(R.layout.fragment_loginandregister_login, container, false); | 47 | mView = inflater.inflate(R.layout.fragment_loginandregister_login, container, false); |
42 | initView(mView); | 48 | initView(mView); |
43 | initData(); | 49 | initData(); |
44 | setLister(); | 50 | setLister(); |
45 | 51 | ||
46 | 52 | ||
47 | } | 53 | } |
48 | return mView; | 54 | return mView; |
49 | } | 55 | } |
50 | //初始化 | 56 | //初始化 |
51 | private void initView(View mView) { | 57 | private void initView(View mView) { |
52 | tv_forget_pwd = (TextView) mView.findViewById(R.id.tv_forget_pwd); | 58 | tv_forget_pwd = (TextView) mView.findViewById(R.id.tv_forget_pwd); |
59 | phonenumber = (EditText) mView.findViewById(R.id.et_phonenumber); | ||
60 | login_pwwd = (EditText) mView.findViewById(R.id.et_password); | ||
53 | btn_login = (Button) mView.findViewById(R.id.btn_login); | 61 | btn_login = (Button) mView.findViewById(R.id.btn_login); |
54 | 62 | ||
55 | } | 63 | } |
56 | private void initData() { | 64 | private void initData() { |
57 | } | 65 | } |
58 | private void setLister() { | 66 | private void setLister() { |
59 | tv_forget_pwd.setOnClickListener(this); | 67 | tv_forget_pwd.setOnClickListener(this); |
60 | btn_login.setOnClickListener(this); | 68 | btn_login.setOnClickListener(this); |
61 | } | 69 | } |
62 | 70 | ||
63 | 71 | ||
64 | @Override | 72 | @Override |
65 | public void onClick(View v) { | 73 | public void onClick(View v) { |
66 | switch (v.getId()){ | 74 | switch (v.getId()){ |
67 | case R.id.tv_forget_pwd: | 75 | case R.id.tv_forget_pwd: |
68 | intent.setClass(getActivity(),ForgotPasswordActivity.class); | 76 | intent.setClass(getActivity(),ForgotPasswordActivity.class); |
69 | startActivity(intent); | 77 | startActivity(intent); |
70 | getActivity().overridePendingTransition(R.anim.rightin, R.anim.rightout); | 78 | getActivity().overridePendingTransition(R.anim.rightin, R.anim.rightout); |
71 | break; | 79 | break; |
72 | case R.id.btn_login: | 80 | case R.id.btn_login: |
73 | intent.setClass(getActivity(),MainActivity.class); | 81 | login(); |
74 | startActivity(intent); | ||
75 | getActivity().overridePendingTransition(R.anim.rightin, R.anim.rightout); | ||
76 | break; | 82 | break; |
77 | } | 83 | } |
78 | 84 | ||
79 | } | 85 | } |
86 | |||
87 | private void login() { | ||
88 | final String name = phonenumber.getText().toString().trim(); | ||
89 | final String pwd = login_pwwd.getText().toString().trim(); | ||
90 | if (TextUtils.isEmpty(name) || TextUtils.isEmpty(pwd)) { | ||
91 | AlertUtils.showToast(getActivity(), "请输入手机号和密码"); | ||
92 | return; | ||
93 | }else if (!PhoneNumCheckUtils.isPhone(name)){ | ||
94 | AlertUtils.showToast(getActivity(), "请输入正确的手机号"); | ||
95 | }else { | ||
96 | intent.setClass(getActivity(),MainActivity.class); | ||
97 | startActivity(intent); | ||
98 | getActivity().overridePendingTransition(R.anim.rightin, R.anim.rightout); | ||
99 | //登录接口 | ||
100 | HttpManager.getInstance().login(name,pwd, getActivity()); | ||
101 | } | ||
102 | |||
103 | |||
104 | } |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/fragment/RegisterFragment.java
1 | package com.hjx.personalcenter.fragment; | 1 | package com.hjx.personalcenter.fragment; |
2 | 2 | ||
3 | import android.content.Intent; | 3 | import android.content.Intent; |
4 | import android.os.Bundle; | 4 | import android.os.Bundle; |
5 | import android.os.Handler; | ||
6 | import android.os.Message; | ||
5 | import android.support.annotation.Nullable; | 7 | import android.support.annotation.Nullable; |
6 | import android.support.v4.app.Fragment; | 8 | import android.support.v4.app.Fragment; |
9 | import android.text.TextUtils; | ||
10 | import android.text.method.HideReturnsTransformationMethod; | ||
11 | import android.text.method.PasswordTransformationMethod; | ||
7 | import android.view.LayoutInflater; | 12 | import android.view.LayoutInflater; |
8 | import android.view.View; | 13 | import android.view.View; |
9 | import android.view.ViewGroup; | 14 | import android.view.ViewGroup; |
10 | import android.widget.Button; | 15 | import android.widget.Button; |
16 | import android.widget.EditText; | ||
17 | import android.widget.ImageView; | ||
11 | 18 | ||
12 | import com.hjx.personalcenter.R; | 19 | import com.hjx.personalcenter.R; |
13 | import com.hjx.personalcenter.activity.RegisterInfoActivity; | 20 | import com.hjx.personalcenter.activity.RegisterInfoActivity; |
21 | import com.hjx.personalcenter.http.HttpCode; | ||
22 | import com.hjx.personalcenter.http.HttpManager; | ||
23 | import com.hjx.personalcenter.util.AlertUtils; | ||
24 | import com.hjx.personalcenter.util.PasswordCheckUtils; | ||
25 | import com.hjx.personalcenter.util.PhoneNumCheckUtils; | ||
26 | |||
27 | import org.json.JSONException; | ||
28 | import org.json.JSONObject; | ||
14 | 29 | ||
15 | /** | 30 | /** |
16 | * 注册 | 31 | * 注册 |
17 | * Created by Administrator on 2016/11/7. | 32 | * Created by Administrator on 2016/11/7. |
18 | */ | 33 | */ |
19 | 34 | ||
20 | public class RegisterFragment extends Fragment implements View.OnClickListener { | 35 | public class RegisterFragment extends Fragment implements View.OnClickListener { |
21 | private View mView; | 36 | private View mView; |
22 | private Button btn_register; | 37 | |
38 | private Button btn_register,get_authcode; | ||
39 | private EditText phonenumber,password,anth_6num;//;//密码 | ||
40 | private ImageView openeyes; | ||
41 | private String sourceStr ="android"; | ||
42 | private String typeStr = "register"; | ||
43 | private int i = 0; | ||
44 | private Thread thread; | ||
23 | private int type; | 45 | private int type; |
46 | public static Boolean showPassword = false; | ||
24 | public static String TABLAYOUT_FRAGMENT = "tab_fragment"; | 47 | public static String TABLAYOUT_FRAGMENT = "tab_fragment"; |
25 | 48 | ||
26 | public static RegisterFragment newInstance(int type) { | 49 | public static RegisterFragment newInstance(int type) { |
27 | RegisterFragment fragment = new RegisterFragment(); | 50 | RegisterFragment fragment = new RegisterFragment(); |
28 | Bundle bundle = new Bundle(); | 51 | Bundle bundle = new Bundle(); |
29 | bundle.putSerializable(TABLAYOUT_FRAGMENT, type); | 52 | bundle.putSerializable(TABLAYOUT_FRAGMENT, type); |
30 | fragment.setArguments(bundle); | 53 | fragment.setArguments(bundle); |
31 | return fragment; | 54 | return fragment; |
32 | 55 | ||
33 | } | 56 | } |
57 | Handler handler = new Handler() { | ||
58 | @Override | ||
59 | public void handleMessage(Message msg) { | ||
60 | super.handleMessage(msg); | ||
61 | try { | ||
62 | JSONObject jsonObject; | ||
63 | String status; | ||
64 | switch (msg.what) { | ||
65 | case HttpCode.REGISTERED_SUCESS: | ||
66 | jsonObject = (JSONObject) msg.obj; | ||
67 | status = jsonObject.getString("status"); | ||
68 | //AlertUtils.showToast(RegisterActivity.this, jsonObject.optString("message")); | ||
69 | String access_token = jsonObject.getString("access_token"); | ||
70 | String userId = jsonObject.getString("userId"); | ||
71 | if (status.equals("100")) { | ||
72 | String usernameStr = phonenumber.getText().toString().trim(); | ||
73 | String passwordStr = password.getText().toString().trim(); | ||
74 | //HttpManager.getInstance().saveLoginInfo(usernameStr,passwordStr,access_token,"true",userId); | ||
75 | AlertUtils.showToast(getActivity(), "注册成功!"); | ||
76 | Intent intent = new Intent(); | ||
77 | intent.setClass(getActivity(),RegisterInfoActivity.class); | ||
78 | startActivity(intent); | ||
79 | getActivity().overridePendingTransition(R.anim.rightin, R.anim.rightout); | ||
80 | getActivity().finish(); | ||
81 | } | ||
82 | break; | ||
83 | case HttpCode.REGISTERED_FAIL: | ||
84 | AlertUtils.showToast(getActivity(), "注册失败"); | ||
85 | break; | ||
86 | case HttpCode.AUTHCODE_SUCESS: | ||
87 | jsonObject = (JSONObject) msg.obj; | ||
88 | status = jsonObject.optString("status"); | ||
89 | if (status.equals("100")) { | ||
90 | AlertUtils.showToast(getActivity(), "验证码发送成功"); | ||
91 | } | ||
92 | |||
93 | break; | ||
94 | case HttpCode.AUTHCODE_FAIL: | ||
95 | jsonObject = (JSONObject) msg.obj; | ||
96 | AlertUtils.showToast(getActivity(), "验证码发送失败"); | ||
97 | break; | ||
98 | case HttpCode.IS_REFISTER: | ||
99 | jsonObject = (JSONObject) msg.obj; | ||
100 | status = jsonObject.getString("status"); | ||
101 | if (!status.equals("true")) { | ||
102 | getauthcode(); | ||
103 | |||
104 | }else { | ||
105 | AlertUtils.showToast(getActivity(), "该手机号已经注册过了"); | ||
106 | } | ||
107 | break; | ||
108 | case 1: | ||
109 | get_authcode.setEnabled(false); | ||
110 | get_authcode.setClickable(false); | ||
111 | get_authcode.setText(Integer.toString(i--)+" s"); | ||
112 | if (i<=0){ | ||
113 | get_authcode.setEnabled(true); | ||
114 | get_authcode.setClickable(true); | ||
115 | get_authcode.setText("获取验证码"); | ||
116 | } | ||
117 | break; | ||
118 | } | ||
119 | } catch (JSONException e) { | ||
120 | e.printStackTrace(); | ||
121 | } | ||
122 | } | ||
123 | }; | ||
34 | @Override | 124 | @Override |
35 | public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { | 125 | public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { |
36 | if (mView == null) { | 126 | if (mView == null) { |
37 | mView = inflater.inflate(R.layout.fragment_loginandregister_register, container, false); | 127 | mView = inflater.inflate(R.layout.fragment_loginandregister_register, container, false); |
38 | initView(mView); | 128 | initView(mView); |
39 | initData(); | 129 | initData(); |
40 | setLister(); | 130 | setLister(); |
41 | 131 | ||
42 | 132 | ||
43 | } | 133 | } |
44 | return mView; | 134 | return mView; |
45 | } | 135 | } |
46 | 136 | ||
47 | private void initView(View mView) { | 137 | private void initView(View mView) { |
138 | get_authcode = (Button) mView.findViewById(R.id.btn_authcode); | ||
139 | anth_6num = (EditText) mView.findViewById(R.id.et_authcode); | ||
140 | phonenumber = (EditText) mView.findViewById(R.id.et_phonenumber); | ||
141 | password = (EditText) mView.findViewById(R.id.et_password); | ||
142 | openeyes= (ImageView) mView.findViewById(R.id.iv_pwd_change); | ||
48 | btn_register = (Button) mView.findViewById(R.id.btn_register); | 143 | btn_register = (Button) mView.findViewById(R.id.btn_register); |
49 | 144 | ||
50 | } | 145 | } |
51 | private void initData() { | 146 | private void initData() { |
52 | } | 147 | } |
53 | private void setLister() { | 148 | private void setLister() { |
149 | get_authcode.setOnClickListener(this); | ||
150 | openeyes.setOnClickListener(this); | ||
54 | btn_register.setOnClickListener(this); | 151 | btn_register.setOnClickListener(this); |
55 | } | 152 | } |
56 | 153 | ||
57 | 154 | ||
58 | @Override | 155 | @Override |
59 | public void onClick(View v) { | 156 | public void onClick(View v) { |
60 | switch (v.getId()){ | 157 | switch (v.getId()){ |
61 | case R.id.btn_register: | 158 | case R.id.btn_register: |
159 | //测试 | ||
62 | Intent intent = new Intent(); | 160 | Intent intent = new Intent(); |
63 | intent.setClass(getActivity(),RegisterInfoActivity.class); | 161 | intent.setClass(getActivity(),RegisterInfoActivity.class); |
64 | startActivity(intent); | 162 | startActivity(intent); |
65 | getActivity().overridePendingTransition(R.anim.rightin, R.anim.rightout); | 163 | getActivity().overridePendingTransition(R.anim.rightin, R.anim.rightout); |
164 | getActivity().finish(); | ||
165 | |||
166 | String usernameStr = phonenumber.getText().toString().trim(); | ||
167 | String authcodeStr = anth_6num.getText().toString().trim(); | ||
168 | String passwordStr = password.getText().toString().trim(); | ||
169 | if (TextUtils.isEmpty(usernameStr) || TextUtils.isEmpty(authcodeStr)||TextUtils.isEmpty(passwordStr)) { | ||
170 | AlertUtils.showToast(getActivity(), "手机号,密码和验证码不能为空"); | ||
171 | return; | ||
172 | } else if(passwordStr.length()<8){ | ||
173 | AlertUtils.showToast(getActivity(), "密码不能少于8位"); | ||
174 | }else if (!PhoneNumCheckUtils.isPhone(usernameStr)){ | ||
175 | AlertUtils.showToast(getActivity(), "手机号码输入错误"); | ||
176 | |||
177 | }else if(!passwordStr.matches(PasswordCheckUtils.PASSWORD_CHAR_AND_NUMBER)){ | ||
178 | AlertUtils.showToast(getActivity(), "密码由英文和数字组成"); | ||
179 | }else { | ||
180 | register(); | ||
181 | } | ||
182 | |||
183 | break; | ||
184 | case R.id.iv_pwd_change: | ||
185 | if(showPassword){//显示密码 | ||
186 | showPassword = !showPassword; | ||
187 | openeyes.setImageResource(R.mipmap.pwd_open); | ||
188 | password.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); | ||
189 | password.setSelection(password.getText().toString().length()); | ||
190 | }else{//隐藏密码 | ||
191 | showPassword = !showPassword; | ||
192 | openeyes.setImageResource(R.mipmap.pwd_hide); | ||
193 | password.setTransformationMethod(PasswordTransformationMethod.getInstance()); | ||
194 | password.setSelection(password.getText().toString().length()); | ||
195 | } | ||
196 | break; | ||
197 | case R.id.btn_authcode: | ||
198 | usernameStr = phonenumber.getText().toString().trim(); | ||
199 | if (!PhoneNumCheckUtils.isPhone(usernameStr)){ | ||
200 | AlertUtils.showToast(getActivity(), "请输入正确的手机号"); | ||
201 | }else { | ||
202 | anth_6num.requestFocus(); | ||
203 | ifregister(); | ||
204 | } | ||
205 | |||
66 | break; | 206 | break; |
67 | } | 207 | } |
68 | 208 | ||
69 | } | 209 | } |
210 | //获取验证码 | ||
211 | private void getauthcode() { | ||
212 | String usernameStr = phonenumber.getText().toString().trim(); | ||
213 | HttpManager.getInstance().authCode(typeStr, usernameStr, handler, getActivity()); | ||
214 | i = 60; | ||
215 | if(thread == null){ | ||
216 | thread = new Thread( new ThreadShow()); | ||
217 | thread.start(); | ||
218 | } | ||
219 | } | ||
220 | |||
221 | private void ifregister() { | ||
222 | String usernameStr = phonenumber.getText().toString().trim(); | ||
223 | HttpManager.getInstance().isregistered(usernameStr, handler, getActivity()); | ||
224 | } | ||
225 | |||
226 | private void register() { | ||
227 | String usernameStr = phonenumber.getText().toString().trim(); | ||
228 | String authcodeStr = anth_6num.getText().toString().trim(); | ||
229 | String passwordStr = password.getText().toString().trim(); | ||
230 | HttpManager.getInstance().register(getActivity(), usernameStr, passwordStr, authcodeStr, sourceStr,handler); | ||
231 | } | ||
232 | // 线程类 定时器 | ||
233 | class ThreadShow implements Runnable { | ||
234 | |||
235 | @Override | ||
236 | public void run() { | ||
237 | // TODO Auto-generated method stub | ||
238 | while (true) { | ||
239 | try { | ||
240 | Thread.sleep(1000); | ||
241 | Message msg = new Message(); | ||
242 | msg.what = 1; | ||
243 | handler.sendMessage(msg); | ||
244 | System.out.println("send..."); | ||
245 | } catch (Exception e) { | ||
246 | // TODO Auto-generated catch block | ||
247 | e.printStackTrace(); | ||
248 | System.out.println("thread error..."); | ||
249 | } | ||
250 | } | ||
251 | } | ||
252 | } | ||
70 | } | 253 | } |
71 | 254 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/http/HttpClient.java
File was created | 1 | package com.hjx.personalcenter.http; | |
2 | |||
3 | |||
4 | import com.loopj.android.http.AsyncHttpClient; | ||
5 | |||
6 | public class HttpClient extends AsyncHttpClient { | ||
7 | private static HttpClient client; | ||
8 | |||
9 | public static HttpClient getInstance() { | ||
10 | if(client == null) { | ||
11 | client = new HttpClient(); | ||
12 | } | ||
13 | return client; | ||
14 | } | ||
15 | private HttpClient() {} | ||
16 | |||
17 | } | ||
18 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/http/HttpCode.java
File was created | 1 | package com.hjx.personalcenter.http; | |
2 | |||
3 | /** | ||
4 | * Created by wei on 2017/6/21. | ||
5 | */ | ||
6 | |||
7 | public class HttpCode { | ||
8 | //登录 | ||
9 | public static final int LONGIN_SUCESS = 1; | ||
10 | public static final int LONGIN_FAIL = 0; | ||
11 | //注册 | ||
12 | public static final int REGISTERED_SUCESS = 2; | ||
13 | public static final int REGISTERED_FAIL = 3; | ||
14 | //注册验证码 | ||
15 | public static final int AUTHCODE_SUCESS = 4; | ||
16 | public static final int AUTHCODE_FAIL = 5; | ||
17 | //忘记密码验证码 | ||
18 | public static final int AUTHCODE_SUCESS1 = 6; | ||
19 | public static final int AUTHCODE_FAIL1 = 7; | ||
20 | //是否已经注册 | ||
21 | public static final int IS_REFISTER = 8; | ||
22 | //忘记密码 | ||
23 | public static final int PASSWORD_SUCESS = 9; | ||
24 | public static final int PASSWORD_FAIL = 10; | ||
25 | //s省 | ||
26 | public static final int PROVICES = 11; | ||
27 | //姓名 | ||
28 | public static final int CHANGENAME_SUCESS = 12; | ||
29 | //获取个人信息 | ||
30 | public static final int STUDENTINFO_SUCESS = 13; | ||
31 | //意见反馈 | ||
32 | public static final int FEEDBACL_SUCESS = 14; | ||
33 | //私人订制查询 | ||
34 | public static final int PRIVATEDZ = 15; | ||
35 | |||
36 | |||
37 | |||
38 | } | ||
39 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/http/HttpKey.java
File was created | 1 | package com.hjx.personalcenter.http; | |
2 | |||
3 | /**请求参数 | ||
4 | * Created by wei on 2017/6/20. | ||
5 | */ | ||
6 | |||
7 | public class HttpKey { | ||
8 | //注册key | ||
9 | public static String USERNAME = "username"; | ||
10 | public static String PASSWORD = "password"; | ||
11 | public static String SMSCODE = "smscode"; | ||
12 | public static String SOURCE = "source"; | ||
13 | //忘记密码 | ||
14 | public static String AUTHCODE = "authCode"; | ||
15 | //注册验证码和忘记密码验证码 | ||
16 | public static String TYPE = "type"; | ||
17 | public static String MOBIL = "mobile"; | ||
18 | //修改密码 | ||
19 | public static String OLDPASS = "oldPass"; | ||
20 | public static String NEWPASS = "newPass"; | ||
21 | |||
22 | |||
23 | |||
24 | } | ||
25 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/http/HttpManager.java
File was created | 1 | package com.hjx.personalcenter.http; | |
2 | |||
3 | import android.app.Activity; | ||
4 | import android.app.ProgressDialog; | ||
5 | import android.content.Context; | ||
6 | import android.content.Intent; | ||
7 | import android.os.Handler; | ||
8 | import android.os.Message; | ||
9 | import android.util.Log; | ||
10 | import android.widget.Toast; | ||
11 | |||
12 | import com.hjx.personalcenter.activity.LoginAndRegisterActivity; | ||
13 | import com.hjx.personalcenter.util.DialogPermission; | ||
14 | import com.hjx.personalcenter.util.SaveParam; | ||
15 | import com.loopj.android.http.AsyncHttpResponseHandler; | ||
16 | import com.loopj.android.http.JsonHttpResponseHandler; | ||
17 | import com.loopj.android.http.RequestParams; | ||
18 | |||
19 | import org.apache.http.Header; | ||
20 | import org.apache.http.entity.ByteArrayEntity; | ||
21 | import org.apache.http.message.BasicHeader; | ||
22 | import org.apache.http.protocol.HTTP; | ||
23 | import org.json.JSONException; | ||
24 | import org.json.JSONObject; | ||
25 | |||
26 | import java.io.UnsupportedEncodingException; | ||
27 | |||
28 | public class HttpManager { | ||
29 | private static HttpManager instance; | ||
30 | private ProgressDialog mProgress = null; | ||
31 | public static HttpManager getInstance() { | ||
32 | if (instance == null) { | ||
33 | instance = new HttpManager(); | ||
34 | } | ||
35 | return instance; | ||
36 | } | ||
37 | |||
38 | |||
39 | //登录接口 | ||
40 | |||
41 | public void login(final String username, final String password, final Context mContext) { | ||
42 | mProgress = DialogPermission.showProgress(mContext, null, "正在登录...", | ||
43 | false, true, null); | ||
44 | HttpClient.getInstance().addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); | ||
45 | HttpClient.getInstance().get(HttpUrl.loginUrl + "?username=" + username + "&password=" + password, new AsyncHttpResponseHandler() { | ||
46 | @Override | ||
47 | public void onSuccess(int arg0, Header[] arg1, byte[] arg2) { | ||
48 | |||
49 | String str = new String(arg2); | ||
50 | JSONObject jsonObject = null; | ||
51 | try { | ||
52 | jsonObject = new JSONObject(new String(arg2)); | ||
53 | String status = jsonObject.getString("status"); | ||
54 | if (status.equals("100")) { | ||
55 | String access_token = jsonObject.getString("access_token"); | ||
56 | String userId = jsonObject.getString("userId"); | ||
57 | // //登录成功,保存登录数据并且获取个人信息 | ||
58 | saveLoginInfo(mContext,username, password, access_token, "true", userId); | ||
59 | //HttpManager.getInstance().getuserinfo(username,mContext); | ||
60 | |||
61 | }else if (status.equals("200")) { | ||
62 | closeProgress(); | ||
63 | Toast.makeText(mContext, "用户名不存在!", Toast.LENGTH_LONG).show(); | ||
64 | return; | ||
65 | } else if(status.equals("204")){ | ||
66 | closeProgress(); | ||
67 | Toast.makeText(mContext, "密码错误!", Toast.LENGTH_LONG).show(); | ||
68 | }else{ | ||
69 | closeProgress(); | ||
70 | Toast.makeText(mContext, "登录失败!请检查网络", Toast.LENGTH_LONG).show(); | ||
71 | |||
72 | |||
73 | |||
74 | } | ||
75 | } catch (JSONException e) { | ||
76 | e.printStackTrace(); | ||
77 | } | ||
78 | |||
79 | |||
80 | } | ||
81 | |||
82 | @Override | ||
83 | public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) { | ||
84 | closeProgress(); | ||
85 | Toast.makeText(mContext, "请检查网络。。"+arg3 , Toast.LENGTH_LONG).show(); | ||
86 | } | ||
87 | }); | ||
88 | } | ||
89 | |||
90 | //注册接口 | ||
91 | public void register(final Context context, String username, String password, String smscode, String source, final Handler handler) { | ||
92 | mProgress = DialogPermission.showProgress(context, null, "正在注册...", | ||
93 | false, true, null); | ||
94 | JSONObject jsonObject = new JSONObject(); | ||
95 | ByteArrayEntity entity = null; | ||
96 | try { | ||
97 | jsonObject.put(HttpKey.USERNAME, username); | ||
98 | jsonObject.put(HttpKey.PASSWORD, password); | ||
99 | jsonObject.put(HttpKey.SMSCODE, smscode); | ||
100 | jsonObject.put(HttpKey.SOURCE, source); | ||
101 | Log.e("test", "jsonObject" + jsonObject); | ||
102 | entity = new ByteArrayEntity(jsonObject.toString().getBytes("UTF-8")); | ||
103 | entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); | ||
104 | } catch (JSONException e) { | ||
105 | e.printStackTrace(); | ||
106 | } catch (UnsupportedEncodingException e) { | ||
107 | e.printStackTrace(); | ||
108 | } | ||
109 | HttpClient.getInstance().addHeader("Accept", "*/*"); | ||
110 | HttpClient.getInstance().post(context, HttpUrl.registeredUrl, entity, "application/json", new JsonHttpResponseHandler() { | ||
111 | @Override | ||
112 | public void onSuccess(int statusCode, Header[] headers, JSONObject response) { | ||
113 | super.onSuccess(statusCode, headers, response); | ||
114 | closeProgress(); | ||
115 | Log.e("test", "onSuccess" + response); | ||
116 | Message msg = Message.obtain(); | ||
117 | msg.what = HttpCode.REGISTERED_SUCESS; | ||
118 | msg.obj = response; | ||
119 | handler.sendMessage(msg); | ||
120 | |||
121 | } | ||
122 | |||
123 | @Override | ||
124 | public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) { | ||
125 | super.onFailure(statusCode, headers, throwable, errorResponse); | ||
126 | closeProgress(); | ||
127 | Log.e("test", "onFailure" + errorResponse); | ||
128 | Toast.makeText(context, "请检查网络。。", Toast.LENGTH_LONG).show(); | ||
129 | } | ||
130 | |||
131 | }); | ||
132 | } | ||
133 | |||
134 | //注册验证码 | ||
135 | public void authCode(final String type, final String mobile, final Handler handler, final Context mContext) { | ||
136 | RequestParams params = new RequestParams(); | ||
137 | params.put(HttpKey.TYPE, type); | ||
138 | params.put(HttpKey.MOBIL, mobile); | ||
139 | HttpClient.getInstance().addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); | ||
140 | HttpClient.getInstance().post(HttpUrl.authCodedUrl, params, new JsonHttpResponseHandler() { | ||
141 | |||
142 | @Override | ||
143 | public void onSuccess(int statusCode, Header[] headers, JSONObject response) { | ||
144 | Log.e("test", "onSuccess-----" + response); | ||
145 | Message msg = Message.obtain(); | ||
146 | msg.what = HttpCode.AUTHCODE_SUCESS; | ||
147 | msg.obj = response; | ||
148 | handler.sendMessage(msg); | ||
149 | } | ||
150 | |||
151 | @Override | ||
152 | public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) { | ||
153 | Toast.makeText(mContext, "请检查网络。。" + errorResponse, Toast.LENGTH_LONG).show(); | ||
154 | } | ||
155 | }); | ||
156 | } | ||
157 | |||
158 | //验证码 | ||
159 | public void forgetauthCode(final String type, final String mobile, final Handler handler, final Context mContext) { | ||
160 | RequestParams params = new RequestParams(); | ||
161 | params.put("type", type); | ||
162 | params.put("mobile", mobile); | ||
163 | HttpClient.getInstance().addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); | ||
164 | HttpClient.getInstance().post(HttpUrl.authCodedUrl, params, new JsonHttpResponseHandler() { | ||
165 | |||
166 | @Override | ||
167 | public void onSuccess(int statusCode, Header[] headers, JSONObject response) { | ||
168 | Log.e("test", "onSuccess-----" + response); | ||
169 | Message msg = Message.obtain(); | ||
170 | msg.what = HttpCode.AUTHCODE_SUCESS1; | ||
171 | msg.obj = response; | ||
172 | handler.sendMessage(msg); | ||
173 | } | ||
174 | |||
175 | @Override | ||
176 | public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) { | ||
177 | Toast.makeText(mContext, "请检查网络。。" + errorResponse, Toast.LENGTH_LONG).show(); | ||
178 | } | ||
179 | }); | ||
180 | } | ||
181 | |||
182 | //手机号是否注册 | ||
183 | public void isregistered(final String mobile, final Handler handler, final Context mContext) { | ||
184 | RequestParams params = new RequestParams(); | ||
185 | params.put(HttpKey.USERNAME, mobile); | ||
186 | HttpClient.getInstance().get(HttpUrl.isRegiterUrl + "?mobile=" + mobile, new JsonHttpResponseHandler() { | ||
187 | @Override | ||
188 | public void onSuccess(int statusCode, Header[] headers, JSONObject response) { | ||
189 | Log.e("test", "isregistered" + response.toString()); | ||
190 | Message msg = Message.obtain(); | ||
191 | msg.what = HttpCode.IS_REFISTER; | ||
192 | msg.obj = response; | ||
193 | handler.sendMessage(msg); | ||
194 | |||
195 | } | ||
196 | |||
197 | @Override | ||
198 | public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) { | ||
199 | Toast.makeText(mContext, "失敗" + errorResponse, Toast.LENGTH_LONG).show(); | ||
200 | |||
201 | } | ||
202 | }); | ||
203 | } | ||
204 | |||
205 | //修改密码 | ||
206 | public void changepwd(final Context context, String username, String old_pwd1, String newpassword3) { | ||
207 | RequestParams params = new RequestParams(); | ||
208 | params.put(HttpKey.USERNAME, username); | ||
209 | params.put(HttpKey.OLDPASS, old_pwd1); | ||
210 | params.put(HttpKey.NEWPASS, newpassword3); | ||
211 | HttpClient.getInstance().addHeader("Accept", "*/*"); | ||
212 | HttpClient.getInstance().setTimeout(10 * 1000); | ||
213 | HttpClient.getInstance().post(HttpUrl.changepassword, params, new AsyncHttpResponseHandler() { | ||
214 | @Override | ||
215 | public void onSuccess(int i, Header[] headers, byte[] bytes) { | ||
216 | try { | ||
217 | JSONObject jsonObject = new JSONObject(new String(bytes)); | ||
218 | String status = jsonObject.optString("status"); | ||
219 | if (status.equals("100")) { | ||
220 | Log.e("test", "onSuccess" + new String(bytes)); | ||
221 | Toast.makeText(context, "密码修改成功!", Toast.LENGTH_LONG).show(); | ||
222 | SaveParam.getInstance().clearData((Activity) context); | ||
223 | Intent intent = new Intent(); | ||
224 | intent.setClass(context, LoginAndRegisterActivity.class); | ||
225 | ((Activity) context).startActivity(intent); | ||
226 | ((Activity) context).finish(); | ||
227 | } | ||
228 | } catch (JSONException e) { | ||
229 | e.printStackTrace(); | ||
230 | } | ||
231 | } | ||
232 | |||
233 | @Override | ||
234 | public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) { | ||
235 | Log.e("test", "onFailure" + new String(bytes)); | ||
236 | Toast.makeText(context, "密码修改失败,请检查网络!", Toast.LENGTH_LONG).show(); | ||
237 | onFinish(); | ||
238 | } | ||
239 | }); | ||
240 | |||
241 | } | ||
242 | |||
243 | //忘记密码 | ||
244 | public void forgetpassword(final Context context, String forot_pwd_phone1, String forot_pwd_pwd3, String forot_pwd_anthcode1, Handler handler) { | ||
245 | RequestParams params = new RequestParams(); | ||
246 | params.put(HttpKey.USERNAME, forot_pwd_phone1); | ||
247 | params.put(HttpKey.PASSWORD, forot_pwd_pwd3); | ||
248 | params.put(HttpKey.AUTHCODE, forot_pwd_anthcode1); | ||
249 | HttpClient.getInstance().addHeader("Accept", "*/*"); | ||
250 | HttpClient.getInstance().post(HttpUrl.forgetpassword, params, new AsyncHttpResponseHandler() { | ||
251 | @Override | ||
252 | public void onSuccess(int i, Header[] headers, byte[] bytes) { | ||
253 | try { | ||
254 | JSONObject jsonObject = new JSONObject(new String(bytes)); | ||
255 | String status = jsonObject.optString("status"); | ||
256 | if (status.equals("100")) { | ||
257 | Log.e("test", "onSuccess" + new String(bytes)); | ||
258 | Toast.makeText(context, "密码修改成功!", Toast.LENGTH_LONG).show(); | ||
259 | ((Activity) context).finish(); | ||
260 | } | ||
261 | } catch (JSONException e) { | ||
262 | e.printStackTrace(); | ||
263 | } | ||
264 | } | ||
265 | |||
266 | @Override | ||
267 | public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) { | ||
268 | Log.e("test", "onFailure" + new String(bytes)); | ||
269 | Toast.makeText(context, "忘记密码修改失败,请检查网络!", Toast.LENGTH_LONG).show(); | ||
270 | } | ||
271 | }); | ||
272 | |||
273 | } | ||
274 | |||
275 | //保存用户登录信息 | ||
276 | public void saveLoginInfo(Context context,String username, String password, String access_token, String loginStatus, String userId) { | ||
277 | SaveParam.getInstance().saveLoginParam(context,"username", username); | ||
278 | SaveParam.getInstance().saveLoginParam(context,"password", password); | ||
279 | SaveParam.getInstance().saveLoginParam(context,"access_token", access_token); | ||
280 | SaveParam.getInstance().saveLoginParam(context,"login", loginStatus); | ||
281 | SaveParam.getInstance().saveLoginParam(context,"userId", userId); | ||
282 | |||
283 | |||
284 | } | ||
285 | |||
286 | //保存用户个人信息 | ||
287 | public void savePresonInfo(Context context,String lastname, String gender, String mobilePortrait) { | ||
288 | SaveParam.getInstance().saveLoginParam(context,"lastname", lastname); | ||
289 | SaveParam.getInstance().saveLoginParam(context,"gender", gender); | ||
290 | SaveParam.getInstance().saveLoginParam(context,"mobilePortrait", mobilePortrait); | ||
291 | } | ||
292 | |||
293 | public void provices(final Context mContext, final Handler handler) { | ||
294 | HttpClient.getInstance().addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); | ||
295 | HttpClient.getInstance().get(HttpUrl.loginUrl, new AsyncHttpResponseHandler() { | ||
296 | @Override | ||
297 | public void onSuccess(int arg0, Header[] arg1, byte[] arg2) { | ||
298 | Log.e("test", "isregistered" + arg2.toString()); | ||
299 | Message msg = Message.obtain(); | ||
300 | msg.what = HttpCode.PROVICES; | ||
301 | msg.obj = arg2; | ||
302 | handler.sendMessage(msg); | ||
303 | } | ||
304 | |||
305 | @Override | ||
306 | public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) { | ||
307 | Toast.makeText(mContext, "请检查网络。。"+arg3 , Toast.LENGTH_LONG).show(); | ||
308 | } | ||
309 | }); | ||
310 | } | ||
311 | |||
312 | |||
313 | |||
314 | private void closeProgress() { | ||
315 | try { | ||
316 | if (mProgress != null) { | ||
317 | mProgress.dismiss(); | ||
318 | mProgress = null; | ||
319 | } | ||
320 | } catch (Exception e) { | ||
321 | e.printStackTrace(); | ||
322 | } | ||
323 | } | ||
324 | |||
325 | } | ||
326 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/http/HttpUrl.java
File was created | 1 | package com.hjx.personalcenter.http; | |
2 | |||
3 | /** | ||
4 | * Created by h on 2017/8/15. | ||
5 | */ | ||
6 | |||
7 | public class HttpUrl { | ||
8 | private final static String Enviroment = "DEVELOPMENT"; | ||
9 | |||
10 | public static String GetDomain(){ | ||
11 | return Enviroment.equals("DEVELOPMENT") ? "http://boss.test.hjx.com" : "http://boss.hjx.com"; | ||
12 | } | ||
13 | |||
14 | public static String loginUrl = GetDomain()+"/user/access_token";//登录 | ||
15 | public static String provinceUrl = GetDomain()+"/ozing/provinces";//省 | ||
16 | public static String forgetpassword=GetDomain()+"/ozing/timer/user/newpassword";//忘记密码/ | ||
17 | public static String registeredUrl=GetDomain()+"/ozing/timer/anking/user";//注册 | ||
18 | public static String authCodedUrl=GetDomain()+"/ozing/timer/user/fetchAuthCode";//验证码 | ||
19 | public static String isRegiterUrl=GetDomain()+"/ozing/timer/user/registered";//手机号是否注册 | ||
20 | public static String changepassword=GetDomain()+"/ozing/timer/user/changepassword";//修改密码 | ||
21 | |||
22 | } | ||
23 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/parser/BaseParser.java
File was created | 1 | /** | |
2 | * HaoJiXing Teacher Q&A | ||
3 | * copyright(C)2013- Acorn International | ||
4 | * | ||
5 | * packeage:com.ozing.callteacher.parser.BaseParser.java | ||
6 | * create:2013年7月25日下午1:58:14 | ||
7 | */ | ||
8 | package com.hjx.personalcenter.parser; | ||
9 | |||
10 | import android.text.TextUtils; | ||
11 | |||
12 | import com.hjx.personalcenter.exception.RemoteException; | ||
13 | import com.hjx.personalcenter.exception.ResponseError; | ||
14 | |||
15 | import org.json.JSONException; | ||
16 | import org.json.JSONObject; | ||
17 | |||
18 | /** | ||
19 | * @author jixiaolong<jixiaolong@chinadrtv.com> | ||
20 | * @code: 015261 | ||
21 | */ | ||
22 | public abstract class BaseParser<T> { | ||
23 | public abstract T parse(String response) throws RemoteException, com.hjx.personalcenter.exception.RemoteException; | ||
24 | |||
25 | public static ResponseError getError(String response){ | ||
26 | ResponseError error = new ResponseError(); | ||
27 | if(TextUtils.isEmpty(response)){ | ||
28 | error.setStatus(-1); | ||
29 | error.setMessage("接口空数据"); | ||
30 | }else{ | ||
31 | if(response.contains("status")){ | ||
32 | //{"status":100,"message":"success","access_token":"0b129fa4-cd71-4777-89d0-215bf4652146"} | ||
33 | //{"status":204,"message":"wrong password"} | ||
34 | //{"status":200,"message":"user not exist"} | ||
35 | try { | ||
36 | JSONObject object = new JSONObject(response); | ||
37 | int status = object.optInt("status"); | ||
38 | error.setStatus(status); | ||
39 | if(status!=0 && status!=100){ | ||
40 | String msg = object.optString("message"); | ||
41 | if(!TextUtils.isEmpty(msg)) | ||
42 | error.setMessage(msg); | ||
43 | } | ||
44 | } catch (JSONException e) { | ||
45 | error.setMessage("返回json数据错误:["+response+"]"); | ||
46 | } | ||
47 | }else if(response.contains("error")){ | ||
48 | error.setMessage("服务器内部错误"); | ||
49 | }else{ | ||
50 | error.setStatus(100); | ||
51 | } | ||
52 | } | ||
53 | return error; | ||
54 | } | ||
55 | } | ||
56 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/parser/ProvinceParser.java
File was created | 1 | /** | |
2 | * HaoJiXing Teacher Q&A | ||
3 | * copyright(C)2013- Acorn International | ||
4 | * | ||
5 | * packeage:com.ozing.callteacher.parser.ProvinceParser.java | ||
6 | * create:2013年8月8日上午11:40:21 | ||
7 | */ | ||
8 | package com.hjx.personalcenter.parser; | ||
9 | |||
10 | |||
11 | import com.hjx.personalcenter.areapicker.AreaBean; | ||
12 | import com.hjx.personalcenter.exception.RemoteException; | ||
13 | import com.hjx.personalcenter.exception.ResponseError; | ||
14 | |||
15 | import org.json.JSONArray; | ||
16 | import org.json.JSONException; | ||
17 | import org.json.JSONObject; | ||
18 | |||
19 | import java.util.ArrayList; | ||
20 | import java.util.List; | ||
21 | |||
22 | |||
23 | /** | ||
24 | * @author jixiaolong<jixiaolong@chinadrtv.com> | ||
25 | * @code: 015261 | ||
26 | */ | ||
27 | public class ProvinceParser extends BaseParser<List<AreaBean>> { | ||
28 | |||
29 | @Override | ||
30 | public List<AreaBean> parse(String response) throws RemoteException { | ||
31 | ResponseError error = getError(response); | ||
32 | if(error.hasError()){ | ||
33 | throw new RemoteException(error); | ||
34 | } | ||
35 | |||
36 | List<AreaBean> mList = new ArrayList<AreaBean>(); | ||
37 | try { | ||
38 | JSONObject object = new JSONObject(response); | ||
39 | JSONArray areaobj = object.getJSONArray("provinces"); | ||
40 | for(int i=0;i<areaobj.length();i++){ | ||
41 | JSONObject pro = areaobj.getJSONObject(i); | ||
42 | AreaBean bean = new AreaBean(); | ||
43 | bean.setLevel(AreaBean.PROVINCE); | ||
44 | bean.setId(pro.optString("regionId")); | ||
45 | bean.setName(pro.optString("regionName")); | ||
46 | bean.setFullName(pro.optString("regionName")); | ||
47 | bean.setParentId(pro.optString("parentId")); | ||
48 | mList.add(bean); | ||
49 | } | ||
50 | } catch (JSONException e) { | ||
51 | e.printStackTrace(); | ||
52 | } | ||
53 | return mList; | ||
54 | } | ||
55 | |||
56 | } | ||
57 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/util/AlertUtils.java
File was created | 1 | package com.hjx.personalcenter.util; | |
2 | |||
3 | |||
4 | import android.content.Context; | ||
5 | import android.widget.Toast; | ||
6 | |||
7 | public class AlertUtils { | ||
8 | public static void showToast(Context context, String msg) { | ||
9 | Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); | ||
10 | } | ||
11 | } | ||
12 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/util/DialogPermission.java
File was created | 1 | package com.hjx.personalcenter.util; | |
2 | |||
3 | import android.app.AlertDialog; | ||
4 | import android.app.ProgressDialog; | ||
5 | import android.content.Context; | ||
6 | import android.content.DialogInterface; | ||
7 | import android.content.Intent; | ||
8 | import android.provider.Settings; | ||
9 | import android.util.Log; | ||
10 | |||
11 | /** | ||
12 | * 权限提示对话框 | ||
13 | * Created by yf on 2016/7/25. | ||
14 | */ | ||
15 | public class DialogPermission { | ||
16 | Context mContext; | ||
17 | String mNotice; | ||
18 | |||
19 | public DialogPermission(Context context, String notice) { | ||
20 | mContext = context; | ||
21 | mNotice = notice; | ||
22 | showDialog(); | ||
23 | } | ||
24 | |||
25 | private void showDialog() { | ||
26 | new AlertDialog.Builder(mContext).setTitle("系统提示")//设置对话框标题 | ||
27 | |||
28 | .setMessage(mNotice)//设置显示的内容 | ||
29 | |||
30 | .setPositiveButton("设置", new DialogInterface.OnClickListener() {//添加确定按钮 | ||
31 | |||
32 | @Override | ||
33 | |||
34 | public void onClick(DialogInterface dialog, int which) {//确定按钮的响应事件 | ||
35 | Intent intent = new Intent(Settings.ACTION_APN_SETTINGS); | ||
36 | mContext.startActivity(intent); | ||
37 | } | ||
38 | |||
39 | }).setNegativeButton("放弃", new DialogInterface.OnClickListener() {//添加返回按钮 | ||
40 | @Override | ||
41 | public void onClick(DialogInterface dialog, int which) {//响应事件 | ||
42 | |||
43 | Log.i("DialogPermission", "Dialog关闭"); | ||
44 | } | ||
45 | }).show();//在按键响应事件中显示此对话框 | ||
46 | |||
47 | } | ||
48 | |||
49 | /** | ||
50 | * 显示进度条 | ||
51 | * | ||
52 | * @param context 环境 | ||
53 | * @param title 标题 | ||
54 | * @param message 信息 | ||
55 | * @param indeterminate 确定性 | ||
56 | * @param cancelable 可撤销 | ||
57 | * @return | ||
58 | */ | ||
59 | public static ProgressDialog showProgress(Context context, | ||
60 | CharSequence title, CharSequence message, boolean indeterminate, | ||
61 | boolean cancelable, DialogInterface.OnDismissListener listener) { | ||
62 | ProgressDialog dialog = new ProgressDialog(context); | ||
63 | dialog.setTitle(title); | ||
64 | dialog.setMessage(message); | ||
65 | dialog.setIndeterminate(indeterminate); | ||
66 | dialog.setCancelable(false); | ||
67 | // dialog.setDefaultButton(false); | ||
68 | if (cancelable && listener != null) | ||
69 | dialog.setOnDismissListener(listener); | ||
70 | |||
71 | dialog.show(); | ||
72 | return dialog; | ||
73 | } | ||
74 | |||
75 | private void closeProgress() { | ||
76 | try { | ||
77 | if (mProgress != null) { | ||
78 | mProgress.dismiss(); | ||
79 | mProgress = null; | ||
80 | } | ||
81 | } catch (Exception e) { | ||
82 | e.printStackTrace(); | ||
83 | } | ||
84 | } | ||
85 | |||
86 | private ProgressDialog mProgress = null; | ||
87 | |||
88 | } | ||
89 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/util/Judgment.java
File was created | 1 | package com.hjx.personalcenter.util; | |
2 | |||
3 | import java.util.regex.Matcher; | ||
4 | import java.util.regex.Pattern; | ||
5 | |||
6 | public class Judgment { | ||
7 | private static Judgment instance; | ||
8 | |||
9 | public static Judgment getInstance() { | ||
10 | if (instance == null) { | ||
11 | instance = new Judgment(); | ||
12 | } | ||
13 | return instance; | ||
14 | } | ||
15 | |||
16 | |||
17 | // 是英文 | ||
18 | public boolean isEnglish(String english) { | ||
19 | Pattern pattern = Pattern.compile("^[A-Za-z]+$"); | ||
20 | Matcher m = pattern.matcher(english); | ||
21 | if (m.matches()) { | ||
22 | return true; | ||
23 | } else { | ||
24 | return false; | ||
25 | } | ||
26 | } | ||
27 | |||
28 | public boolean isEnglishAndChinese(String str) { | ||
29 | int j = 0; | ||
30 | int k = 0; | ||
31 | int i = str.length(); | ||
32 | Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]"); | ||
33 | Matcher m = pattern.matcher(str); | ||
34 | while (m.find()) { | ||
35 | j++; | ||
36 | } | ||
37 | for (int idx = 0; idx < i; idx++) { | ||
38 | char c = str.charAt(idx); | ||
39 | int tmp = (int) c; | ||
40 | if ((tmp >= 'a' && tmp <= 'z') || (tmp >= 'A' && tmp <= 'Z') || tmp == '.') { | ||
41 | k++; | ||
42 | } | ||
43 | } | ||
44 | if (i == j + k) { | ||
45 | return true; | ||
46 | } else { | ||
47 | return false; | ||
48 | } | ||
49 | |||
50 | } | ||
51 | |||
52 | //英文和数字 | ||
53 | public boolean isEnglishAndDigit(String str) { | ||
54 | int j = 0; | ||
55 | int k = 0; | ||
56 | int i = str.length(); | ||
57 | for (int idx = 0; idx < str.length(); idx++) { | ||
58 | if (Character.isDigit(str.charAt(idx))) { | ||
59 | j++; | ||
60 | } | ||
61 | } | ||
62 | for (int idx = 0; idx < i; idx++) { | ||
63 | char c = str.charAt(idx); | ||
64 | if ('a' <= c && c <= 'z' || 'A' <= c && c <= 'Z') { | ||
65 | k++; | ||
66 | } | ||
67 | } | ||
68 | if ((k + j) == i) { | ||
69 | return false; | ||
70 | } | ||
71 | |||
72 | return true; | ||
73 | } | ||
74 | |||
75 | public boolean isChinese(String name) { | ||
76 | int j = 0; | ||
77 | int i = name.length(); | ||
78 | Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]"); | ||
79 | Matcher m = pattern.matcher(name); | ||
80 | while (m.find()) { | ||
81 | j++; | ||
82 | } | ||
83 | if (i == j) { | ||
84 | return false; | ||
85 | } else { | ||
86 | return true; | ||
87 | } | ||
88 | } | ||
89 | |||
90 | //中文和点 | ||
91 | public boolean isChineseandPoint(String name) { | ||
92 | int j = 0; | ||
93 | int i = name.length(); | ||
94 | int k = 0; | ||
95 | Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]"); | ||
96 | Matcher m = pattern.matcher(name); | ||
97 | while (m.find()) { | ||
98 | j++; | ||
99 | } | ||
100 | for (int idx = 0; idx < i; idx++) { | ||
101 | char c = name.charAt(idx); | ||
102 | if (c == '.') { | ||
103 | k++; | ||
104 | } | ||
105 | } | ||
106 | if (i == j + k) { | ||
107 | return true; | ||
108 | } else { | ||
109 | return false; | ||
110 | } | ||
111 | |||
112 | } | ||
113 | |||
114 | //数字和* | ||
115 | public boolean isJustDigitStar(String str) { | ||
116 | |||
117 | int len = 0; | ||
118 | for (int idx = 0; idx < str.length(); idx++) { | ||
119 | if (Character.isDigit(str.charAt(idx)) || str.charAt(idx) == '*') { | ||
120 | len++; | ||
121 | } | ||
122 | } | ||
123 | |||
124 | if (len == str.length()) { | ||
125 | return true; | ||
126 | } | ||
127 | |||
128 | return false; | ||
129 | } | ||
130 | |||
131 | // 所有都为数字 | ||
132 | public boolean isAllDigit(String str) { | ||
133 | int len = 0; | ||
134 | for (int idx = 0; idx < str.length(); idx++) { | ||
135 | if (Character.isDigit(str.charAt(idx))) { | ||
136 | len++; | ||
137 | } | ||
138 | } | ||
139 | if (len == str.length()) { | ||
140 | return true; | ||
141 | } | ||
142 | |||
143 | return false; | ||
144 | } | ||
145 | |||
146 | public boolean isEnglishAndBackSpace(String str) { | ||
147 | int len = 0; | ||
148 | for (int i = 0; i < str.length(); i++) { | ||
149 | char c = str.charAt(i); | ||
150 | if ('a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || c == ' ') { | ||
151 | len++; | ||
152 | } | ||
153 | } | ||
154 | if (len == str.length()) { | ||
155 | return true; | ||
156 | } | ||
157 | return false; | ||
158 | } | ||
159 | |||
160 | // 地址 | ||
161 | public boolean isAddress(String address) { | ||
162 | int i = 0, j = 0, k = 0; | ||
163 | int count = address.length(); | ||
164 | Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]"); | ||
165 | Matcher m = pattern.matcher(address); | ||
166 | while (m.find()) { | ||
167 | i++; | ||
168 | } | ||
169 | for (int idx = 0; idx < count; idx++) { | ||
170 | char c = address.charAt(idx); | ||
171 | int tmp = (int) c; | ||
172 | if ((tmp >= 'a' && tmp <= 'z') || (tmp >= 'A' && tmp <= 'Z')) { | ||
173 | j++; | ||
174 | } | ||
175 | |||
176 | if (Character.isDigit(address.charAt(idx))) { | ||
177 | k++; | ||
178 | } | ||
179 | |||
180 | } | ||
181 | if ((i + j + k) == count) { | ||
182 | return true; | ||
183 | } else { | ||
184 | return false; | ||
185 | } | ||
186 | |||
187 | } | ||
188 | |||
189 | public boolean judgeContainsIAndO(String str) { | ||
190 | for (int i = 1; i < str.length(); i++) { | ||
191 | if (str.charAt(i) == 'I' || str.charAt(i) == 'O') { | ||
192 | return false; | ||
193 | } | ||
194 | } | ||
195 | return true; | ||
196 | } | ||
197 | |||
198 | |||
199 | //手机号码 | ||
200 | public boolean isPhoneNum(String phonenum) { | ||
201 | |||
202 | if (phonenum.length() != 11 || !phonenum.substring(0, 1).equals("1")) { | ||
203 | return true; | ||
204 | } else { | ||
205 | return false; | ||
206 | } | ||
207 | } | ||
208 | |||
209 | |||
210 | public boolean valibrithday(String beginTime, String brithday) { | ||
211 | if (brithday != null) { | ||
212 | String brith[] = brithday.split("-"); | ||
213 | int year = Integer.parseInt(brith[0]); | ||
214 | int month = Integer.parseInt(brith[1]); | ||
215 | int day = Integer.parseInt(brith[2]); | ||
216 | String strBegin[] = beginTime.split("-"); | ||
217 | |||
218 | int beginYear = Integer.parseInt(strBegin[0]); | ||
219 | int beginMonth = Integer.parseInt(strBegin[1]); | ||
220 | int beginDay = Integer.parseInt(strBegin[2]); | ||
221 | // 杈撳叆鐨勫紑濮嬫棩鏈熶笉鑳芥棭浜庡嚭鐢熸棩璧� | ||
222 | if ((beginYear * 365 + beginMonth * 30 + beginDay) > (year * 365 | ||
223 | + month * 30 + day)) { | ||
224 | return true; | ||
225 | } else { | ||
226 | return false; | ||
227 | } | ||
228 | |||
229 | } else { | ||
230 | return false; | ||
231 | } | ||
232 | } | ||
233 | } | ||
234 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/util/PasswordCheckUtils.java
File was created | 1 | package com.hjx.personalcenter.util; | |
2 | |||
3 | import java.util.regex.Matcher; | ||
4 | import java.util.regex.Pattern; | ||
5 | |||
6 | /** | ||
7 | * 密码格式验证 | ||
8 | * | ||
9 | * @author F | ||
10 | * | ||
11 | */ | ||
12 | public class PasswordCheckUtils { | ||
13 | |||
14 | /** | ||
15 | * 只为字母和数字组成 | ||
16 | * ^ 匹配一行的开头位置 | ||
17 | (?![0-9]+$) 预测该位置后面不全是数字 | ||
18 | (?![a-zA-Z]+$) 预测该位置后面不全是字母 | ||
19 | [0-9A-Za-z] {8,24} 由8-24位数字或者字母组成 | ||
20 | $ 匹配行结尾位置 | ||
21 | */ | ||
22 | public static final String PASSWORD_CHAR_AND_NUMBER = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,24}$"; | ||
23 | |||
24 | /** | ||
25 | * 可为纯数字/纯字母/数字和字母组成 | ||
26 | */ | ||
27 | public static final String PASSWORD_PATTERN = "^([a-zA-Z0-9]{3,24})$"; | ||
28 | |||
29 | /** | ||
30 | * 纯数字 | ||
31 | * | ||
32 | * @param str | ||
33 | * @return | ||
34 | */ | ||
35 | public static boolean isNumeric(String str) { | ||
36 | for (int i = str.length(); --i >= 0;) { | ||
37 | if (!Character.isDigit(str.charAt(i))) { | ||
38 | return false; | ||
39 | } | ||
40 | } | ||
41 | return true; | ||
42 | } | ||
43 | |||
44 | /** | ||
45 | * 纯字母 | ||
46 | * | ||
47 | * @param data | ||
48 | * @return | ||
49 | */ | ||
50 | public static boolean isChar(String data) { | ||
51 | for (int i = data.length(); --i >= 0;) { | ||
52 | char c = data.charAt(i); | ||
53 | if (((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))) { | ||
54 | return true; | ||
55 | } else { | ||
56 | return false; | ||
57 | } | ||
58 | } | ||
59 | return true; | ||
60 | } | ||
61 | |||
62 | public static boolean ispsd(String psd) { | ||
63 | Pattern p = Pattern.compile("^[a-zA-Z].*[0-9]|.*[0-9].*[a-zA-Z]"); | ||
64 | Matcher m = p.matcher(psd); | ||
65 | |||
66 | return m.matches(); | ||
67 | } | ||
68 | } | ||
69 |
PersonalCenter/app/src/main/java/com/hjx/personalcenter/util/PhoneNumCheckUtils.java
File was created | 1 | package com.hjx.personalcenter.util; | |
2 | |||
3 | /** | ||
4 | * Created by l on 2017/7/18. | ||
5 | */ | ||
6 | import java.util.regex.Pattern; | ||
7 | |||
8 | /** | ||
9 | * 手机号码或座机号码格式合法性验证 | ||
10 | * 判断手机号码是否合法(移动,联通,电信) | ||
11 | * | ||
12 | * @author F | ||
13 | * | ||
14 | */ | ||
15 | public class PhoneNumCheckUtils { | ||
16 | |||
17 | private static final String PHONE_CALL_PATTERN = "^(\\(\\d{3,4}\\)|\\d{3,4}-)?\\d{7,8}(-\\d{1,4})?$"; | ||
18 | |||
19 | /** | ||
20 | * 中国电信号码格式验证 手机段: 133,153,180,181,189,177,1700,173 | ||
21 | * **/ | ||
22 | private static final String CHINA_TELECOM_PATTERN = "(^1(33|53|7[37]|8[019])\\d{8}$)|(^1700\\d{7}$)"; | ||
23 | |||
24 | /** | ||
25 | * 中国联通号码格式验证 手机段:130,131,132,155,156,185,186,145,176,1707,1708,1709 | ||
26 | * **/ | ||
27 | private static final String CHINA_UNICOM_PATTERN = "(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\\d{8}$)|(^170[7-9]\\d{7}$)"; | ||
28 | |||
29 | /** | ||
30 | * 中国移动号码格式验证 | ||
31 | * 手机段:134,135,136,137,138,139,150,151,152,157,158,159,182,183,184 | ||
32 | * ,187,188,147,178,1705 | ||
33 | * | ||
34 | **/ | ||
35 | private static final String CHINA_MOBILE_PATTERN = "(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(^1705\\d{7}$)"; | ||
36 | |||
37 | /** | ||
38 | * 仅手机号格式校验 | ||
39 | */ | ||
40 | private static final String PHONE_PATTERN = new StringBuilder(300) | ||
41 | .append(CHINA_MOBILE_PATTERN).append("|") | ||
42 | .append(CHINA_TELECOM_PATTERN).append("|") | ||
43 | .append(CHINA_UNICOM_PATTERN).toString(); | ||
44 | |||
45 | /** | ||
46 | * 手机和座机号格式校验 | ||
47 | */ | ||
48 | private static final String PHONE_TEL_PATTERN = new StringBuilder(350) | ||
49 | .append(PHONE_PATTERN).append("|").append("(") | ||
50 | .append(PHONE_CALL_PATTERN).append(")").toString(); | ||
51 | |||
52 | /** | ||
53 | * 匹配多个号码以,、或空格隔开的格式,如 17750581369 | ||
54 | * 13306061248、(596)3370653,17750581369,13306061248 (0596)3370653 | ||
55 | */ | ||
56 | private static final String MULTI_PHONE_TEL_PATTERN = "^(?:(?:(?:(?:(?:(?:13[0-9])|(?:14[57])|(?:15[0-35-9])|(?:17[36-8])|(?:18[0-9]))\\d{8})|(?:170[057-9]\\d{7})|(?:\\(\\d{3,4}\\)|\\d{3,4}-)?\\d{7,8}(?:-\\d{1,4})?)[,\\s、])+)?(?:(?:(?:(?:13[0-9])|(?:14[57])|(?:15[0-35-9])|(?:17[36-8])|(?:18[0-9]))\\d{8})|(?:170[057-9]\\d{7})|(?:\\(\\d{3,4}\\)|\\d{3,4}-)?\\d{7,8}(?:-\\d{1,4})?)$"; | ||
57 | |||
58 | /** | ||
59 | * 匹配多个号码以,、或空格隔开的格式,如 17750581369 | ||
60 | * 13306061248、(596)3370653,17750581369,13306061248 (0596)3370653 | ||
61 | * | ||
62 | * @param input | ||
63 | * @return | ||
64 | */ | ||
65 | public static boolean checkMultiPhone(String input) { | ||
66 | return match(MULTI_PHONE_TEL_PATTERN, input); | ||
67 | } | ||
68 | |||
69 | /** | ||
70 | * 仅手机号码校验 | ||
71 | * | ||
72 | * @param input | ||
73 | * @return | ||
74 | */ | ||
75 | public static boolean isPhone(String input) { | ||
76 | return match(PHONE_PATTERN, input); | ||
77 | } | ||
78 | |||
79 | /** | ||
80 | * 手机号或座机号校验 | ||
81 | * | ||
82 | * @param input | ||
83 | * @return | ||
84 | */ | ||
85 | public static boolean isPhoneOrTel(String input) { | ||
86 | System.out.println(PHONE_TEL_PATTERN); | ||
87 | return match(PHONE_TEL_PATTERN, input); | ||
88 | } | ||
89 | |||
90 | /** | ||
91 | * 验证电话号码的格式 | ||
92 | * | ||
93 | * @author F | ||
94 | * @param str | ||
95 | * 校验电话字符串 | ||
96 | * @return 返回true,否则为false | ||
97 | */ | ||
98 | public static boolean isPhoneCallNum(String str) { | ||
99 | return match(PHONE_CALL_PATTERN, str); | ||
100 | } | ||
101 | |||
102 | /** | ||
103 | * 验证【电信】手机号码的格式 | ||
104 | * | ||
105 | * @author F | ||
106 | * @param str | ||
107 | * 校验手机字符串 | ||
108 | * @return 返回true,否则为false | ||
109 | */ | ||
110 | public static boolean isChinaTelecomPhoneNum(String str) { | ||
111 | return match(CHINA_TELECOM_PATTERN, str); | ||
112 | } | ||
113 | |||
114 | /** | ||
115 | * 验证【联通】手机号码的格式 | ||
116 | * | ||
117 | * @author F | ||
118 | * @param str | ||
119 | * 校验手机字符串 | ||
120 | * @return 返回true,否则为false | ||
121 | */ | ||
122 | public static boolean isChinaUnicomPhoneNum(String str) { | ||
123 | return match(CHINA_UNICOM_PATTERN, str); | ||
124 | } | ||
125 | |||
126 | /** | ||
127 | * 验证【移动】手机号码的格式 | ||
128 | * | ||
129 | * @author F | ||
130 | * @param str | ||
131 | * 校验手机字符串 | ||
132 | * @return 返回true,否则为false | ||
133 | */ | ||
134 | public static boolean isChinaMobilePhoneNum(String str) { | ||
135 | return match(CHINA_MOBILE_PATTERN, str); | ||
136 | } | ||
137 | |||
138 | /** | ||
139 | * 匹配函数 | ||
140 | * | ||
141 | * @param regex | ||
142 | * @param input | ||
143 | * @return | ||
144 | */ | ||
145 | private static boolean match(String regex, String input) { | ||
146 | return Pattern.matches(regex, input); | ||
147 | } | ||
148 | } | ||
149 |
PersonalCenter/app/src/main/res/layout/activity_forgetpsword.xml
1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | 2 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
3 | android:layout_width="match_parent" | 3 | android:layout_width="match_parent" |
4 | android:layout_height="match_parent" | 4 | android:layout_height="match_parent" |
5 | android:background="#ffffffff" | 5 | android:background="#ffffffff" |
6 | android:orientation="vertical"> | 6 | android:orientation="vertical"> |
7 | 7 | ||
8 | <RelativeLayout | 8 | <RelativeLayout |
9 | android:id="@+id/title" | 9 | android:id="@+id/title" |
10 | android:layout_width="match_parent" | 10 | android:layout_width="match_parent" |
11 | android:layout_height="wrap_content" | 11 | android:layout_height="wrap_content" |
12 | android:background="@color/login_text_blue" | 12 | android:background="@color/login_text_blue" |
13 | android:minHeight="50dp"> | 13 | android:minHeight="50dp"> |
14 | 14 | ||
15 | <ImageView | 15 | <ImageView |
16 | android:id="@+id/cancel" | 16 | android:id="@+id/cancel" |
17 | android:layout_width="wrap_content" | 17 | android:layout_width="wrap_content" |
18 | android:layout_height="wrap_content" | 18 | android:layout_height="wrap_content" |
19 | android:layout_centerVertical="true" | 19 | android:layout_centerVertical="true" |
20 | android:paddingLeft="20dp" | 20 | android:paddingLeft="20dp" |
21 | android:paddingRight="20dp" | 21 | android:paddingRight="20dp" |
22 | android:src="@mipmap/title_back" /> | 22 | android:src="@mipmap/title_back" /> |
23 | 23 | ||
24 | <TextView | 24 | <TextView |
25 | android:id="@+id/menu_title" | 25 | android:id="@+id/menu_title" |
26 | android:layout_width="wrap_content" | 26 | android:layout_width="wrap_content" |
27 | android:layout_height="wrap_content" | 27 | android:layout_height="wrap_content" |
28 | android:layout_centerInParent="true" | 28 | android:layout_centerInParent="true" |
29 | android:text="@string/string_menu_title" | 29 | android:text="@string/string_menu_title" |
30 | android:textColor="@android:color/white" | 30 | android:textColor="@android:color/white" |
31 | android:textSize="22sp" /> | 31 | android:textSize="22sp" /> |
32 | </RelativeLayout> | 32 | </RelativeLayout> |
33 | 33 | ||
34 | <RelativeLayout | 34 | <RelativeLayout |
35 | android:layout_width="match_parent" | 35 | android:layout_width="match_parent" |
36 | android:layout_height="match_parent" | 36 | android:layout_height="match_parent" |
37 | android:layout_below="@id/title" | 37 | android:layout_below="@id/title" |
38 | android:background="#ffffffff" | 38 | android:background="#ffffffff" |
39 | android:orientation="vertical" | 39 | android:orientation="vertical" |
40 | android:paddingLeft="250dp" | 40 | android:paddingLeft="250dp" |
41 | android:paddingRight="250dp"> | 41 | android:paddingRight="250dp"> |
42 | 42 | ||
43 | <EditText | 43 | <EditText |
44 | android:id="@+id/et_phonenumber" | 44 | android:id="@+id/et_phonenumber" |
45 | style="@style/login_register_edit_style" | 45 | style="@style/login_register_edit_style" |
46 | android:layout_marginTop="150dp" | 46 | android:layout_marginTop="150dp" |
47 | android:hint="手机号" | 47 | android:hint="手机号" |
48 | android:inputType="phone" /> | 48 | android:inputType="phone" /> |
49 | 49 | ||
50 | <TextView | 50 | <TextView |
51 | android:id="@+id/phonenumber_error_hint" | 51 | android:id="@+id/phonenumber_error_hint" |
52 | style="@style/registererrhint_style" | 52 | style="@style/registererrhint_style" |
53 | android:layout_below="@id/et_phonenumber" /> | 53 | android:layout_below="@id/et_phonenumber" /> |
54 | 54 | ||
55 | <LinearLayout | 55 | <LinearLayout |
56 | android:id="@+id/rl_authcode" | 56 | android:id="@+id/rl_authcode" |
57 | android:layout_width="match_parent" | 57 | android:layout_width="match_parent" |
58 | android:layout_height="wrap_content" | 58 | android:layout_height="wrap_content" |
59 | android:layout_below="@id/et_phonenumber" | 59 | android:layout_below="@id/et_phonenumber" |
60 | android:layout_marginTop="30dp" | 60 | android:layout_marginTop="30dp" |
61 | android:orientation="horizontal"> | 61 | android:orientation="horizontal"> |
62 | 62 | ||
63 | <EditText | 63 | <EditText |
64 | android:id="@+id/et_authcode" | 64 | android:id="@+id/et_authcode" |
65 | style="@style/login_register_edit_rect_style" | 65 | style="@style/login_register_edit_rect_style" |
66 | android:layout_marginRight="-4px" | 66 | android:layout_marginRight="-4px" |
67 | android:layout_weight="1" | 67 | android:layout_weight="1" |
68 | android:hint="验证码" | 68 | android:hint="验证码" |
69 | android:numeric="integer" /> | 69 | android:numeric="integer" /> |
70 | 70 | ||
71 | <Button | 71 | <Button |
72 | android:id="@+id/btn_authcode" | 72 | android:id="@+id/btn_authcode" |
73 | style="@style/login_register_btn_authcode_rect_style" | 73 | style="@style/login_register_btn_authcode_rect_style" |
74 | android:layout_marginLeft="0px" | 74 | android:layout_marginLeft="0px" |
75 | android:layout_marginTop="0px" | 75 | android:layout_marginTop="0px" |
76 | android:layout_weight="2" | 76 | android:layout_weight="2" |
77 | android:text="获取验证码" | 77 | android:text="获取验证码" |
78 | android:textColor="@color/btn_text_color" /> | 78 | android:textColor="@color/btn_text_color" /> |
79 | </LinearLayout> | 79 | </LinearLayout> |
80 | 80 | ||
81 | <TextView | 81 | <TextView |
82 | android:id="@+id/authcode_error_hint" | 82 | android:id="@+id/authcode_error_hint" |
83 | style="@style/registererrhint_style" | 83 | style="@style/registererrhint_style" |
84 | android:layout_below="@id/rl_authcode" /> | 84 | android:layout_below="@id/rl_authcode" /> |
85 | 85 | ||
86 | <RelativeLayout | 86 | <RelativeLayout |
87 | android:id="@+id/pwd_rl" | 87 | android:id="@+id/pwd_rl" |
88 | android:layout_width="match_parent" | 88 | android:layout_width="match_parent" |
89 | android:layout_height="wrap_content" | 89 | android:layout_height="wrap_content" |
90 | android:layout_below="@id/rl_authcode" | 90 | android:layout_below="@id/rl_authcode" |
91 | android:layout_marginTop="30dp"> | 91 | android:layout_marginTop="30dp"> |
92 | 92 | ||
93 | <EditText | 93 | <EditText |
94 | android:id="@+id/et_newpassword" | 94 | android:id="@+id/et_newpassword" |
95 | style="@style/login_register_edit_style" | 95 | style="@style/login_register_edit_style" |
96 | android:hint="密码为英文和数字组成,最少8位" | 96 | android:hint="密码为英文和数字组成,最少8位" |
97 | android:inputType="textPassword" /> | 97 | android:inputType="textPassword" /> |
98 | 98 | ||
99 | <ImageView | 99 | <ImageView |
100 | android:id="@+id/iv_pwd_change" | 100 | android:id="@+id/iv_pwd_change" |
101 | style="@style/iv_pwd_change_style" /> | 101 | android:padding="10dp" |
102 | android:layout_marginRight="10dp" | ||
103 | android:layout_marginLeft="10dp" | ||
104 | android:layout_width="40dp" | ||
105 | android:layout_height="wrap_content" | ||
106 | android:layout_alignParentRight="true" | ||
107 | android:layout_centerVertical="true" | ||
108 | android:src="@mipmap/pwd_hide"/> | ||
102 | </RelativeLayout> | 109 | </RelativeLayout> |
103 | 110 | ||
104 | <TextView | 111 | <TextView |
105 | android:id="@+id/newpassword_error_hint" | 112 | android:id="@+id/newpassword_error_hint" |
106 | style="@style/registererrhint_style" | 113 | style="@style/registererrhint_style" |
107 | android:layout_below="@id/pwd_rl" /> | 114 | android:layout_below="@id/pwd_rl" /> |
108 | 115 | ||
109 | <EditText | 116 | <EditText |
110 | android:id="@+id/et_again_newpassword" | 117 | android:id="@+id/et_again_newpassword" |
111 | style="@style/login_register_edit_style" | 118 | style="@style/login_register_edit_style" |
112 | android:layout_below="@id/pwd_rl" | 119 | android:layout_below="@id/pwd_rl" |
113 | android:layout_marginTop="30dp" | 120 | android:layout_marginTop="30dp" |
114 | android:hint="再次输入新密码" | 121 | android:hint="再次输入新密码" |
115 | android:inputType="textPassword" /> | 122 | android:inputType="textPassword" /> |
116 | 123 | ||
117 | <TextView | 124 | <TextView |
118 | android:id="@+id/again_newpassword_error_hint" | 125 | android:id="@+id/again_newpassword_error_hint" |
119 | style="@style/registererrhint_style" | 126 | style="@style/registererrhint_style" |
120 | android:layout_below="@id/et_again_newpassword" /> | 127 | android:layout_below="@id/et_again_newpassword" /> |
121 | 128 | ||
122 | <Button | 129 | <Button |
123 | android:id="@+id/btn_ok" | 130 | android:id="@+id/btn_ok" |
124 | style="@style/button_login_register_style" | 131 | style="@style/button_login_register_style" |
125 | android:layout_below="@id/et_again_newpassword" | 132 | android:layout_below="@id/et_again_newpassword" |
126 | android:layout_marginTop="30dp" | 133 | android:layout_marginTop="30dp" |
127 | android:text="确 定" /> | 134 | android:text="确 定" /> |
128 | </RelativeLayout> | 135 | </RelativeLayout> |
129 | 136 | ||
130 | </RelativeLayout> | 137 | </RelativeLayout> |
PersonalCenter/app/src/main/res/layout/custom_adilog_gradelist.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | android:layout_width="match_parent" | ||
4 | android:layout_height="match_parent" | ||
5 | android:orientation="vertical"> | ||
6 | |||
7 | <RelativeLayout | ||
8 | android:id="@+id/title" | ||
9 | android:layout_width="match_parent" | ||
10 | android:layout_height="wrap_content" | ||
11 | android:minHeight="70dp" > | ||
12 | |||
13 | <ImageView | ||
14 | android:id="@+id/cancel" | ||
15 | android:layout_width="wrap_content" | ||
16 | android:layout_height="wrap_content" | ||
17 | android:layout_centerVertical="true" | ||
18 | android:layout_alignParentRight="true" | ||
19 | android:padding="20dp" | ||
20 | android:src="@mipmap/cancel_fork" /> | ||
21 | |||
22 | <TextView | ||
23 | android:id="@+id/menu_title" | ||
24 | android:layout_width="wrap_content" | ||
25 | android:layout_height="wrap_content" | ||
26 | android:layout_centerInParent="true" | ||
27 | android:padding="20dp" | ||
28 | android:text="选年级" | ||
29 | android:textColor="@android:color/black" | ||
30 | android:textSize="22sp" /> | ||
31 | </RelativeLayout> | ||
32 | <ListView | ||
33 | android:id="@+id/listadapter" | ||
34 | android:layout_width="match_parent" | ||
35 | android:layout_height="400dp"> | ||
36 | |||
37 | </ListView> | ||
38 | </LinearLayout> | ||
39 |
PersonalCenter/app/src/main/res/layout/custom_adilog_list.xml
1 | <?xml version="1.0" encoding="utf-8"?> | File was deleted | |
2 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | android:layout_width="match_parent" | ||
4 | android:layout_height="match_parent" | ||
5 | android:orientation="vertical"> | ||
6 | |||
7 | <RelativeLayout | ||
8 | android:id="@+id/title" | ||
9 | android:layout_width="match_parent" | ||
10 | android:layout_height="wrap_content" | ||
11 | android:minHeight="70dp" > | ||
12 | |||
13 | <ImageView | ||
14 | android:id="@+id/cancel" | ||
15 | android:layout_width="wrap_content" | ||
16 | android:layout_height="wrap_content" | ||
17 | android:layout_centerVertical="true" | ||
18 | android:layout_alignParentRight="true" | ||
19 | android:padding="20dp" | ||
20 | android:src="@mipmap/cancel_fork" /> | ||
21 | |||
22 | <TextView | ||
23 | android:id="@+id/menu_title" | ||
24 | android:layout_width="wrap_content" | ||
25 | android:layout_height="wrap_content" | ||
26 | android:layout_centerInParent="true" | ||
27 | android:padding="20dp" | ||
28 | android:text="选年级" | ||
29 | android:textColor="@android:color/black" | ||
30 | android:textSize="22sp" /> | ||
31 | </RelativeLayout> | ||
32 | <ListView | ||
33 | android:id="@+id/listadapter" | ||
34 | android:layout_width="match_parent" | ||
35 | android:layout_height="400dp"> | ||
36 | |||
37 | </ListView> | ||
38 | </LinearLayout> | ||
39 | 1 | <?xml version="1.0" encoding="utf-8"?> |
PersonalCenter/app/src/main/res/layout/custom_adilog_provicelist.xml
File was created | 1 | <?xml version="1.0" encoding="utf-8"?> | |
2 | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
3 | android:layout_width="match_parent" | ||
4 | android:layout_height="match_parent" | ||
5 | android:orientation="vertical"> | ||
6 | |||
7 | <RelativeLayout | ||
8 | android:id="@+id/title" | ||
9 | android:layout_width="match_parent" | ||
10 | android:layout_height="wrap_content" | ||
11 | android:minHeight="70dp" > | ||
12 | |||
13 | <ImageView | ||
14 | android:id="@+id/cancel" | ||
15 | android:layout_width="wrap_content" | ||
16 | android:layout_height="wrap_content" | ||
17 | android:layout_centerVertical="true" | ||
18 | android:layout_alignParentRight="true" | ||
19 | android:padding="20dp" | ||
20 | android:src="@mipmap/cancel_fork" /> | ||
21 | |||
22 | <TextView | ||
23 | android:id="@+id/menu_title" | ||
24 | android:layout_width="wrap_content" | ||
25 | android:layout_height="wrap_content" | ||
26 | android:layout_centerInParent="true" | ||
27 | android:padding="20dp" | ||
28 | android:text="请选择省份" | ||
29 | android:textColor="@android:color/black" | ||
30 | android:textSize="22sp" /> | ||
31 | </RelativeLayout> | ||
32 | <ListView | ||
33 | android:id="@+id/listadapter" | ||
34 | android:layout_width="match_parent" | ||
35 | android:layout_height="400dp"> | ||
36 | |||
37 | </ListView> | ||
38 | </LinearLayout> | ||
39 |
PersonalCenter/app/src/main/res/layout/fragment_loginandregister_register.xml
1 | <?xml version="1.0" encoding="utf-8"?> | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | 2 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
3 | android:layout_width="match_parent" | 3 | android:layout_width="match_parent" |
4 | android:layout_height="match_parent" | 4 | android:layout_height="match_parent" |
5 | android:background="#ffffffff" | 5 | android:background="#ffffffff" |
6 | android:orientation="vertical" | 6 | android:orientation="vertical" |
7 | android:paddingLeft="250dp" | 7 | android:paddingLeft="250dp" |
8 | android:paddingRight="250dp"> | 8 | android:paddingRight="250dp"> |
9 | 9 | ||
10 | <EditText | 10 | <EditText |
11 | android:id="@+id/et_phonenumber" | 11 | android:id="@+id/et_phonenumber" |
12 | style="@style/login_register_edit_style" | 12 | style="@style/login_register_edit_style" |
13 | android:layout_marginTop="20dp" | 13 | android:layout_marginTop="20dp" |
14 | android:hint="手机号" | 14 | android:hint="手机号" |
15 | android:inputType="phone" /> | 15 | android:inputType="phone" /> |
16 | 16 | ||
17 | <TextView | 17 | <TextView |
18 | android:id="@+id/phonenumber_error_hint" | 18 | android:id="@+id/phonenumber_error_hint" |
19 | style="@style/registererrhint_style" | 19 | style="@style/registererrhint_style" |
20 | android:layout_below="@id/et_phonenumber" /> | 20 | android:layout_below="@id/et_phonenumber" /> |
21 | 21 | ||
22 | <LinearLayout | 22 | <LinearLayout |
23 | android:id="@+id/rl_authcode" | 23 | android:id="@+id/rl_authcode" |
24 | android:layout_width="match_parent" | 24 | android:layout_width="match_parent" |
25 | android:layout_height="wrap_content" | 25 | android:layout_height="wrap_content" |
26 | android:layout_below="@id/et_phonenumber" | 26 | android:layout_below="@id/et_phonenumber" |
27 | android:layout_marginTop="30dp" | 27 | android:layout_marginTop="30dp" |
28 | android:orientation="horizontal"> | 28 | android:orientation="horizontal"> |
29 | 29 | ||
30 | <EditText | 30 | <EditText |
31 | android:id="@+id/et_authcode" | 31 | android:id="@+id/et_authcode" |
32 | style="@style/login_register_edit_rect_style" | 32 | style="@style/login_register_edit_rect_style" |
33 | android:layout_marginRight="-4px" | 33 | android:layout_marginRight="-4px" |
34 | android:layout_weight="1" | 34 | android:layout_weight="1" |
35 | android:hint="验证码" | 35 | android:hint="验证码" |
36 | android:numeric="integer" /> | 36 | android:numeric="integer" /> |
37 | 37 | ||
38 | <Button | 38 | <Button |
39 | android:id="@+id/btn_authcode" | 39 | android:id="@+id/btn_authcode" |
40 | style="@style/login_register_btn_authcode_rect_style" | 40 | style="@style/login_register_btn_authcode_rect_style" |
41 | android:layout_marginLeft="0px" | 41 | android:layout_marginLeft="0px" |
42 | android:layout_marginTop="0px" | 42 | android:layout_marginTop="0px" |
43 | android:layout_weight="2" | 43 | android:layout_weight="2" |
44 | android:text="获取验证码" | 44 | android:text="获取验证码" |
45 | android:textColor="@color/btn_text_color" /> | 45 | android:textColor="@color/btn_text_color" /> |
46 | </LinearLayout> | 46 | </LinearLayout> |
47 | 47 | ||
48 | <TextView | 48 | <TextView |
49 | android:id="@+id/authcode_error_hint" | 49 | android:id="@+id/authcode_error_hint" |
50 | style="@style/registererrhint_style" | 50 | style="@style/registererrhint_style" |
51 | android:layout_below="@id/rl_authcode" /> | 51 | android:layout_below="@id/rl_authcode" /> |
52 | 52 | ||
53 | <RelativeLayout | 53 | <RelativeLayout |
54 | android:id="@+id/pwd_rl" | 54 | android:id="@+id/pwd_rl" |
55 | android:layout_width="match_parent" | 55 | android:layout_width="match_parent" |
56 | android:layout_height="wrap_content" | 56 | android:layout_height="wrap_content" |
57 | android:layout_below="@id/rl_authcode" | 57 | android:layout_below="@id/rl_authcode" |
58 | android:layout_marginTop="30dp"> | 58 | android:layout_marginTop="30dp"> |
59 | 59 | ||
60 | <EditText | 60 | <EditText |
61 | android:id="@+id/et_password" | 61 | android:id="@+id/et_password" |
62 | style="@style/login_register_edit_style" | 62 | style="@style/login_register_edit_style" |
63 | android:hint="密码为英文和数字组成,最少8位" | 63 | android:hint="密码为英文和数字组成,最少8位" |
64 | android:inputType="textPassword" /> | 64 | android:inputType="textPassword" /> |
65 | 65 | ||
66 | <ImageView | 66 | <ImageView |
67 | android:id="@+id/iv_pwd_change" | 67 | android:id="@+id/iv_pwd_change" |
68 | style="@style/iv_pwd_change_style" /> | 68 | android:padding="10dp" |
69 | android:layout_marginRight="10dp" | ||
70 | android:layout_marginLeft="10dp" | ||
71 | android:layout_width="40dp" | ||
72 | android:layout_height="wrap_content" | ||
73 | android:layout_alignParentRight="true" | ||
74 | android:layout_centerVertical="true" | ||
75 | android:src="@mipmap/pwd_hide" /> | ||
69 | </RelativeLayout> | 76 | </RelativeLayout> |
70 | 77 | ||
71 | <TextView | 78 | <TextView |
72 | android:id="@+id/password_error_hint" | 79 | android:id="@+id/password_error_hint" |
73 | style="@style/registererrhint_style" | 80 | style="@style/registererrhint_style" |
74 | android:layout_below="@id/pwd_rl" /> | 81 | android:layout_below="@id/pwd_rl" /> |
75 | 82 | ||
76 | <Button | 83 | <Button |
77 | android:id="@+id/btn_register" | 84 | android:id="@+id/btn_register" |
78 | style="@style/button_login_register_style" | 85 | style="@style/button_login_register_style" |
79 | android:layout_below="@id/pwd_rl" | 86 | android:layout_below="@id/pwd_rl" |
80 | android:layout_marginTop="30dp" | 87 | android:layout_marginTop="30dp" |
81 | android:text="立即注册" /> | 88 | android:text="立即注册" /> |
82 | 89 | ||
83 | </RelativeLayout> | 90 | </RelativeLayout> |
PersonalCenter/app/src/main/res/mipmap-xhdpi/pwd_open.png
861 Bytes
PersonalCenter/app/src/main/res/values/strings.xml
1 | <resources> | 1 | <resources> |
2 | <string name="app_name">PersonalCenter</string> | 2 | <string name="app_name">PersonalCenter</string> |
3 | 3 | ||
4 | 4 | ||
5 | 5 | ||
6 | //登录注册 | 6 | //登录注册 |
7 | <string name="cancel">取 消</string> | 7 | <string name="cancel">取 消</string> |
8 | <string name="ok">确 定</string> | 8 | <string name="ok">确 定</string> |
9 | <string name="forget_pwd">忘记密码</string> | 9 | <string name="forget_pwd">忘记密码</string> |
10 | <string name="string_menu_title">修改密码</string> | 10 | <string name="string_menu_title">忘记密码</string> |
11 | <string name="string_regist_info">填写注册信息</string> | 11 | <string name="string_regist_info">填写注册信息</string> |
12 | <string name="string_textbook_info">选择教材版本</string> | 12 | <string name="string_textbook_info">选择教材版本</string> |
13 | <string name="string_regist_username">用户名</string> | 13 | <string name="string_regist_username">用户名</string> |
14 | <string name="string_regist_region">地区</string> | 14 | <string name="string_regist_region">地区</string> |
15 | <string name="string_regist_grade">年级</string> | 15 | <string name="string_regist_grade">年级</string> |
16 | <string name="string_regist_school">学校</string> | 16 | <string name="string_regist_school">学校</string> |
17 | <string name="string_regist_next">下一步</string> | 17 | <string name="string_regist_next">下一步</string> |
18 | <string name="string_start_page">开始学习体验</string> | 18 | <string name="string_start_page">开始学习体验</string> |
19 | <string name="bangding">绑定家长控制</string> | 19 | <string name="bangding">绑定家长控制</string> |
20 | <string name="finish">完成</string> | 20 | <string name="finish">完成</string> |
21 | <string name="account_management">账户管理</string> | 21 | <string name="account_management">账户管理</string> |
22 | <string name="changge_preson">修改个人信息</string> | 22 | <string name="changge_preson">修改个人信息</string> |
23 | 23 | ||
24 | //电子保卡 | 24 | //电子保卡 |
25 | <string name="string_electroniccard_info_title">填写保卡信息</string> | 25 | <string name="string_electroniccard_info_title">填写保卡信息</string> |
26 | <string name="string_electroniccard_info_fill">填写电子保卡</string> | 26 | <string name="string_electroniccard_info_fill">填写电子保卡</string> |
27 | <string name="change_electroniccard_info_fill">修改保卡信息</string> | 27 | <string name="change_electroniccard_info_fill">修改保卡信息</string> |
28 | <string name="string_electroniccard_info_change">修改保卡信息</string> | 28 | <string name="string_electroniccard_info_change">修改保卡信息</string> |
29 | <string name="string_electroniccard_info_ok">确认保卡信息</string> | 29 | <string name="string_electroniccard_info_ok">确认保卡信息</string> |
30 | <string name="string_electroniccard_info_look">好记星-电子报卡</string> | 30 | <string name="string_electroniccard_info_look">好记星-电子报卡</string> |
31 | <string name="string_electroniccard_change_bangding">更换绑定</string> | 31 | <string name="string_electroniccard_change_bangding">更换绑定</string> |
32 | <string name="electronic_card">温馨提示:若您想修改的相关信息请拨打客服电话</string> | 32 | <string name="electronic_card">温馨提示:若您想修改的相关信息请拨打客服电话</string> |
33 | <string name="electronic_card1">请先填写《好记星-电子保卡》信息</string> | 33 | <string name="electronic_card1">请先填写《好记星-电子保卡》信息</string> |
34 | <string name="electronic_card2">该信息是本产品的三包证明,为维护您的合法权益,请认真填写</string> | 34 | <string name="electronic_card2">该信息是本产品的三包证明,为维护您的合法权益,请认真填写</string> |
35 | <string name="electronic_card3">您已填写完《好记星-电子保卡》信息</string> | 35 | <string name="electronic_card3">您已填写完《好记星-电子保卡》信息</string> |
36 | <string name="electronic_card4">您也可以设置家长管理,用手机及时了解和管理孩子的学习情况</string> | 36 | <string name="electronic_card4">您也可以设置家长管理,用手机及时了解和管理孩子的学习情况</string> |
37 | 37 | ||
38 | //意见反馈 | 38 | //意见反馈 |
39 | <string name="feedback">写下您对我们产品的意见吧,我们将努力完善,最多输入500字。</string> | 39 | <string name="feedback">写下您对我们产品的意见吧,我们将努力完善,最多输入500字。</string> |
40 | <string name="qq">QQ或手机号码</string> | 40 | <string name="qq">QQ或手机号码</string> |
41 | <string name="hint">留下您的联系方式,方便与您沟通。</string> | 41 | <string name="hint">留下您的联系方式,方便与您沟通。</string> |
42 | 42 | ||
43 | 43 | ||
44 | //个人中心 | 44 | //个人中心 |
45 | <string name="titel_preson">个人中心</string> | 45 | <string name="titel_preson">个人中心</string> |
46 | 46 | ||
47 | 47 | ||
48 | 48 | ||
49 | </resources> | 49 | </resources> |
50 | 50 |
PersonalCenter/pickerview/build.gradle
1 | apply plugin: 'com.android.library' | 1 | apply plugin: 'com.android.library' |
2 | apply plugin: 'maven' | 2 | apply plugin: 'maven' |
3 | apply plugin: 'com.novoda.bintray-release'//添加插件 | 3 | apply plugin: 'com.novoda.bintray-release'//添加插件 |
4 | 4 | ||
5 | 5 | ||
6 | 6 | ||
7 | android { | 7 | android { |
8 | compileSdkVersion 25 | 8 | compileSdkVersion 25 |
9 | buildToolsVersion "25.0.2" | 9 | buildToolsVersion "25.0.2" |
10 | 10 | ||
11 | defaultConfig { | 11 | defaultConfig { |
12 | minSdkVersion 15 | 12 | minSdkVersion 15 |
13 | targetSdkVersion 25 | 13 | targetSdkVersion 25 |
14 | versionCode 22 | 14 | versionCode 22 |
15 | versionName "3.2.6" | 15 | versionName "3.2.6" |
16 | } | 16 | } |
17 | buildTypes { | 17 | buildTypes { |
18 | release { | 18 | release { |
19 | minifyEnabled false | 19 | minifyEnabled false |
20 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' | 20 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' |
21 | } | 21 | } |
22 | } | 22 | } |
23 | lintOptions { | 23 | lintOptions { |
24 | abortOnError false | 24 | abortOnError false |
25 | } | 25 | } |
26 | } | 26 | } |
27 | 27 | ||
28 | allprojects { | 28 | allprojects { |
29 | tasks.withType(Javadoc) {//兼容中文字符 | 29 | tasks.withType(Javadoc) {//兼容中文字符 |
30 | options{ | 30 | options{ |
31 | encoding "UTF-8" | 31 | encoding "UTF-8" |
32 | charSet 'UTF-8' | 32 | charSet 'UTF-8' |
33 | links "http://docs.oracle.com/javase/7/docs/api" | 33 | links "http://docs.oracle.com/javase/7/docs/api" |
34 | } | 34 | } |
35 | } | 35 | } |
36 | } | 36 | } |
37 | publish { | 37 | publish { |
38 | userOrg = 'contrarywind'//bintray.com 用户名/组织名 user/org name | 38 | userOrg = 'contrarywind'//bintray.com 用户名/组织名 user/org name |
39 | groupId = 'com.contrarywind'//JCenter上显示的路径 path | 39 | groupId = 'com.contrarywind'//JCenter上显示的路径 path |
40 | artifactId = 'Android-PickerView'//项目名称 project name | 40 | artifactId = 'Android-PickerView'//项目名称 project name |
41 | publishVersion = '3.2.6'//版本号 version code | 41 | publishVersion = '3.2.6'//版本号 version code |
42 | desc = 'this is a pickerview for android'//项目描述 description | 42 | desc = 'this is a pickerview for android'//项目描述 description |
43 | website = 'https://github.com/Contrarywind/Android-PickerView' //项目网址链接 link | 43 | website = 'https://github.com/Contrarywind/Android-PickerView' //项目网址链接 link |
44 | } | 44 | } |
45 | 45 | ||
46 | dependencies { | 46 | dependencies { |
47 | compile fileTree(include: ['*.jar'], dir: 'libs') | 47 | compile fileTree(include: ['*.jar'], dir: 'libs') |
48 | |||
49 | } | 48 | } |