Android项目实战系列—基于博学谷(四)我的模块(下)

image

由于这个模块内容较多,篇幅较长,请耐心阅读。


“我”的模块分为四个部分

  • [ ] 我的界面
  • [ ] 设置界面
  • [x] 修改密码界面
  • [x] 设置密保和找回密码

一、修改密码

1、创建修改密码界面

com.boxuegu.activity包中,创建一个java类,命名为ModifyPswActivity。在res/layout文件夹下创建布局文件,命名为activity_modify_psw

2、修改密码界面代码——activity_modify_psw.xml

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:background="@drawable/register_bg"> 7 <include layout="@layout/main_title_bar"/> 8 <EditText 9 android:id="@+id/et_original_psw" 10 android:layout_width="fill_parent" 11 android:layout_height="48dp" 12 android:layout_gravity="center_horizontal" 13 android:layout_marginLeft="35dp" 14 android:layout_marginRight="35dp" 15 android:layout_marginTop="35dp" 16 android:background="@drawable/register_user_name_bg" 17 android:drawableLeft="@drawable/psw_icon" 18 android:drawablePadding="10dp" 19 android:gravity="center_vertical" 20 android:hint="请输入原始密码" 21 android:inputType="textPassword" 22 android:paddingLeft="8dp" 23 android:textColor="#000000" 24 android:textColorHint="#a3a3a3" 25 android:textSize="14sp"/> 26 <EditText 27 android:id="@+id/et_new_psw" 28 android:layout_width="fill_parent" 29 android:layout_height="48dp" 30 android:layout_gravity="center_horizontal" 31 android:layout_marginLeft="35dp" 32 android:layout_marginRight="35dp" 33 android:background="@drawable/register_psw_bg" 34 android:drawableLeft="@drawable/psw_icon" 35 android:drawablePadding="10dp" 36 android:hint="请输入新密码" 37 android:inputType="textPassword" 38 android:paddingLeft="8dp" 39 android:singleLine="true" 40 android:textColor="#000000" 41 android:textColorHint="#a3a3a3" 42 android:textSize="14sp"/> 43 <EditText 44 android:id="@+id/et_new_psw_again" 45 android:layout_width="fill_parent" 46 android:layout_height="48dp" 47 android:layout_gravity="center_horizontal" 48 android:layout_marginLeft="35dp" 49 android:layout_marginRight="35dp" 50 android:background="@drawable/register_psw_again_bg" 51 android:drawableLeft="@drawable/psw_icon" 52 android:drawablePadding="10dp" 53 android:hint="请再次输入新密码" 54 android:inputType="textPassword" 55 android:paddingLeft="8dp" 56 android:singleLine="true" 57 android:textColor="#000000" 58 android:textColorHint="#a3a3a3" 59 android:textSize="14sp"/> 60 <Button 61 android:id="@+id/btn_save" 62 android:layout_width="fill_parent" 63 android:layout_height="40dp" 64 android:layout_gravity="center_horizontal" 65 android:layout_marginLeft="35dp" 66 android:layout_marginRight="35dp" 67 android:layout_marginTop="15dp" 68 android:background="@drawable/register_selector" 69 android:text="保存" 70 android:textColor="@android:color/white" 71 android:textSize="18sp"/> 72</LinearLayout> 73

3、修改密码界面逻辑代码——ModifyPswActivity.java

1package com.boxuegu.activity; 2 3import android.content.Intent; 4import android.content.SharedPreferences; 5import android.content.pm.ActivityInfo; 6import com.boxuegu.R; 7import com.boxuegu.utils.AnalysisUtils; 8import com.boxuegu.utils.MD5Utils; 9import android.os.Bundle; 10import android.support.v7.app.AppCompatActivity; 11import android.text.TextUtils; 12import android.view.View; 13import android.widget.Button; 14import android.widget.EditText; 15import android.widget.TextView; 16import android.widget.Toast; 17 18public class ModifyPswActivity extends AppCompatActivity { 19 private TextView tv_main_title; 20 private TextView tv_back; 21 private EditText et_original_psw, et_new_psw, et_new_psw_again; 22 private Button btn_save; 23 private String originalPsw, newPsw, newPswAgain; 24 private String userName; 25 @Override 26 protected void onCreate(Bundle savedIntanceState){ 27 super.onCreate(savedIntanceState); 28 //设置界面布局 29 setContentView(R.layout.activity_modify_psw); 30 //设置界面为竖屏 31 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 32 init(); 33 userName = AnalysisUtils.readLoginUserName(this); 34 } 35 36 //获取界面控件并处理相关控件的点击事件 37 private void init(){ 38 tv_main_title = (TextView) findViewById(R.id.tv_main_title); 39 tv_main_title.setText("修改密码"); 40 tv_back = (TextView) findViewById(R.id.tv_back); 41 et_original_psw = (EditText) findViewById(R.id.et_original_psw); 42 et_new_psw = (EditText) findViewById(R.id.et_new_psw); 43 et_new_psw_again = (EditText) findViewById(R.id.et_new_psw_again); 44 btn_save = (Button) findViewById(R.id.btn_save); 45 tv_back.setOnClickListener(new View.OnClickListener() { 46 @Override 47 public void onClick(View v) { 48 ModifyPswActivity.this.finish(); 49 } 50 }); 51 52 //保存按钮的点击事件 53 btn_save.setOnClickListener(new View.OnClickListener(){ 54 @Override 55 public void onClick(View v) { 56 getEditString(); 57 if (TextUtils.isEmpty(originalPsw)) { 58 Toast.makeText(ModifyPswActivity.this, "请输入原始密码", 59 Toast.LENGTH_SHORT).show(); 60 return; 61 }else if (!MD5Utils.md5(originalPsw).equals(readPsw())) { 62 Toast.makeText(ModifyPswActivity.this, "输入的密码与原始密码不一致", 63 Toast.LENGTH_SHORT).show(); 64 return; 65 }else if (MD5Utils.md5(newPsw).equals(readPsw())) { 66 Toast.makeText(ModifyPswActivity.this, "输入的新密码与原始的密码不能一致", 67 Toast.LENGTH_SHORT).show(); 68 return; 69 }else if (TextUtils.isEmpty(newPsw)) { 70 Toast.makeText(ModifyPswActivity.this, "请输入新密码", 71 Toast.LENGTH_SHORT).show(); 72 return; 73 }else if (TextUtils.isEmpty(newPswAgain)) { 74 Toast.makeText(ModifyPswActivity.this, "请再次输入新密码", 75 Toast.LENGTH_SHORT).show(); 76 return; 77 }else if (!newPsw.equals(newPswAgain)) { 78 Toast.makeText(ModifyPswActivity.this, "两次输入的新密码不一致", 79 Toast.LENGTH_SHORT).show(); 80 return; 81 } else { 82 Toast.makeText(ModifyPswActivity.this,"新密码设置成功", 83 Toast.LENGTH_SHORT).show(); 84 modifyPsw(newPsw); 85 Intent intent = new Intent(ModifyPswActivity.this, LoginActivity.class); 86 startActivity(intent); 87 SettingActivity.instance.finish(); //关闭设置界面 88 ModifyPswActivity.this.finish(); //关闭本界面 89 } 90 } 91 }); 92 } 93 94 //获取控件上的字符串 95 private void getEditString(){ 96 originalPsw = et_original_psw.getText().toString().trim(); 97 newPsw = et_new_psw.getText().toString().trim(); 98 newPswAgain=et_new_psw_again.getText().toString().trim(); 99 } 100 101 //修改登录成功时保存在SharedPreferences中的密码 102 private void modifyPsw(String newPsw){ 103 String md5Psw = MD5Utils.md5(newPsw); 104 SharedPreferences sp = getSharedPreferences("loginInfo",MODE_PRIVATE); 105 SharedPreferences.Editor editor = sp.edit(); //获取编辑器 106 editor.putString(userName,md5Psw); //保存新密码 107 editor.commit(); //提交修改 108 } 109 110 //从SharedPreferences中读取原始密码 111 private String readPsw(){ 112 SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE); 113 String spPsw = sp.getString(userName, ""); 114 return spPsw; 115 } 116}

4、修改设置界面代码

在设置界面逻辑代码(SettingActivity.java)文件中找到init方法,在注释//跳转到修改密码的界面下方添加如下代码
1Intent intent = new Intent(SettingActivity.this,ModifyPswActivity.class); 2startActivity(intent);

二、设置密保和找回密码

1、创建设置密保和找回密码界面

com.boxuegu.activity包中,创建一个java类,命名为FindPswActivity。在res/layout文件夹下创建布局文件,命名为activity_find_psw。将所需图片find_psw_icon.png导入drawable文件夹中。

2、创建设置密保和找回密码界面界面代码——activity_find_psw.xml

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:background="@drawable/login_bg"> 7 <include layout="@layout/main_title_bar"/> 8 <TextView 9 android:id="@+id/tv_user_name" 10 android:layout_width="fill_parent" 11 android:layout_height="wrap_content" 12 android:layout_marginLeft="35dp" 13 android:layout_marginRight="35dp" 14 android:layout_marginTop="35dp" 15 android:text="您的用户名是?" 16 android:textColor="@android:color/white" 17 android:textSize="18sp" 18 android:visibility="gone"/> 19 <EditText 20 android:id="@+id/et_user_name" 21 android:layout_width="fill_parent" 22 android:layout_height="48dp" 23 android:layout_marginLeft="35dp" 24 android:layout_marginRight="35dp" 25 android:layout_marginTop="10dp" 26 android:background="@drawable/find_psw_icon" 27 android:hint="请输入您的用户名" 28 android:paddingLeft="8dp" 29 android:singleLine="true" 30 android:textColor="#000000" 31 android:textColorHint="#a3a3a3" 32 android:visibility="gone"/> 33 <TextView 34 android:layout_width="fill_parent" 35 android:layout_height="wrap_content" 36 android:layout_marginLeft="35dp" 37 android:layout_marginRight="35dp" 38 android:layout_marginTop="15dp" 39 android:text="您的姓名是?" 40 android:textColor="@android:color/white" 41 android:textSize="18sp"/> 42 <EditText 43 android:id="@+id/et_validate_name" 44 android:layout_width="fill_parent" 45 android:layout_height="48dp" 46 android:layout_marginLeft="35dp" 47 android:layout_marginRight="35dp" 48 android:layout_marginTop="10dp" 49 android:background="@drawable/find_psw_icon" 50 android:hint="请输入要验证的姓名" 51 android:paddingLeft="8dp" 52 android:singleLine="true" 53 android:textColor="#000000" 54 android:textColorHint="#a3a3a3"/> 55 <TextView 56 android:id="@+id/tv_reset_psw" 57 android:layout_width="fill_parent" 58 android:layout_height="wrap_content" 59 android:layout_marginLeft="35dp" 60 android:layout_marginRight="35dp" 61 android:layout_marginTop="10dp" 62 android:gravity="center_vertical" 63 android:textColor="@android:color/white" 64 android:textSize="15sp" 65 android:visibility="gone"/> 66 <Button 67 android:id="@+id/btn_validate" 68 android:layout_width="fill_parent" 69 android:layout_height="40dp" 70 android:layout_gravity="center_horizontal" 71 android:layout_marginLeft="35dp" 72 android:layout_marginRight="35dp" 73 android:layout_marginTop="15dp" 74 android:background="@drawable/register_selector" 75 android:text="验证" 76 android:textColor="@android:color/white" 77 android:textSize="18sp"/> 78 79</LinearLayout> 80

3、设置密保和找回密码界面逻辑代码

1package com.boxuegu.activity; 2 3import android.content.SharedPreferences; 4import android.content.pm.ActivityInfo; 5import android.support.v7.app.AppCompatActivity; 6import android.os.Bundle; 7import android.text.TextUtils; 8import android.view.View; 9import android.widget.Button; 10import android.widget.EditText; 11import android.widget.TextView; 12import android.widget.Toast; 13import com.boxuegu.R; 14import com.boxuegu.utils.AnalysisUtils; 15import com.boxuegu.utils.MD5Utils; 16 17public class FindPswActivity extends AppCompatActivity { 18 19 //form为security时从设置密保界面跳转过来,否则就从登录界面跳转过来的 20 private String from; 21 private TextView tv_main_title; 22 private TextView tv_back; 23 private Button btn_validate; 24 private EditText et_validate_name; 25 private TextView tv_reset_psw; 26 private EditText et_user_name; 27 private TextView tv_user_name; 28 29 @Override 30 protected void onCreate(Bundle savedInstanceState) { 31 super.onCreate(savedInstanceState); 32 //设置界面布局 33 setContentView(R.layout.activity_find_psw); 34 //设置界面为竖屏 35 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 36 from = getIntent().getStringExtra("from"); 37 init(); 38 } 39 40 //获取界面控件及处理相应控件的点击事件 41 private void init() { 42 tv_main_title = (TextView) findViewById(R.id.tv_main_title); 43 tv_back = (TextView) findViewById(R.id.tv_back); 44 et_validate_name = (EditText) findViewById(R.id.et_validate_name); 45 btn_validate = (Button) findViewById(R.id.btn_validate); 46 tv_reset_psw = (TextView) findViewById(R.id.tv_reset_psw); 47 et_user_name = (EditText) findViewById(R.id.et_user_name); 48 tv_user_name = (TextView) findViewById(R.id.tv_user_name); 49 if ("security".equals(from)){ 50 tv_main_title.setText("设置密保"); 51 }else{ 52 tv_main_title.setText("找回密码"); 53 tv_user_name.setVisibility(View.VISIBLE); 54 et_user_name.setVisibility(View.VISIBLE); 55 } 56 tv_back.setOnClickListener(new View.OnClickListener() { 57 @Override 58 public void onClick(View view) { 59 FindPswActivity.this.finish(); 60 } 61 }); 62 btn_validate.setOnClickListener(new View.OnClickListener() { 63 @Override 64 public void onClick(View view) { 65 String validateName = et_validate_name.getText().toString().trim(); 66 if ("security".equals(from)){ //设置密保 67 if (TextUtils.isEmpty(validateName)){ 68 Toast.makeText(FindPswActivity.this,"请输入要验证的姓名", 69 Toast.LENGTH_SHORT).show(); 70 return; 71 }else{ 72 Toast.makeText(FindPswActivity.this,"密保设置成功", 73 Toast.LENGTH_SHORT).show(); 74 //保存密保到SharedPreferences中 75 saveSecurity(validateName); 76 FindPswActivity.this.finish(); 77 } 78 }else{ //找回密码 79 String userName = et_user_name.getText().toString().trim(); 80 String sp_security = readSecurity(userName); 81 if (TextUtils.isEmpty(userName)){ 82 Toast.makeText(FindPswActivity.this,"请输入您的用户名", 83 Toast.LENGTH_SHORT).show(); 84 return; 85 }else if (!isExistUserName(userName)){ 86 Toast.makeText(FindPswActivity.this,"您输入的用户名不存在", 87 Toast.LENGTH_SHORT).show(); 88 return; 89 }else if (TextUtils.isEmpty(validateName)){ 90 Toast.makeText(FindPswActivity.this,"请输入要验证的姓名", 91 Toast.LENGTH_SHORT).show(); 92 return; 93 }if (!validateName.equals(sp_security)){ 94 Toast.makeText(FindPswActivity.this,"输入的密保不正确", 95 Toast.LENGTH_SHORT).show(); 96 return; 97 }else{ 98 //输入的密保正确,重新给用户设置一个密码:123456 99 tv_reset_psw.setVisibility(View.VISIBLE); 100 tv_reset_psw.setText("初始密码:123456"); 101 savePsw(userName); 102 } 103 } 104 } 105 }); 106 } 107 108 //保存初始化的密码 109 private void savePsw(String userName){ 110 String md5Psw = MD5Utils.md5("123456"); //密码MD5加密 111 SharedPreferences sp = getSharedPreferences("loginInfo",MODE_PRIVATE); 112 SharedPreferences.Editor editor = sp.edit(); //获取编辑器 113 editor.putString(userName,md5Psw); 114 editor.commit(); //提交修改 115 } 116 117 118 private void saveSecurity(String validateName){ 119 SharedPreferences sp = getSharedPreferences("loginInfo",MODE_PRIVATE); 120 SharedPreferences.Editor editor = sp.edit(); //获取编辑器 121 //存入对应账户的密保 122 editor.putString(AnalysisUtils.readLoginUserName(this)+"_security",validateName); 123 editor.commit(); //提交修改 124 } 125 126 //从SharedPreferences中读取密保 127 private String readSecurity(String userName){ 128 SharedPreferences sp = getSharedPreferences("loginInfo",MODE_PRIVATE); 129 String security = sp.getString(userName+"_security",""); 130 return security; 131 } 132 133 //从SharedPreferences中根据用户输入的用户名来判断是否有这个用户 134 private boolean isExistUserName(String userName){ 135 boolean hasUserName = false; 136 SharedPreferences sp = getSharedPreferences("loginInfo",MODE_PRIVATE); 137 String spPsw = sp.getString(userName,""); 138 if (!TextUtils.isEmpty(spPsw)){ 139 hasUserName=true; 140 } 141 return hasUserName; 142 } 143}

4、修改代码

(1)、修改登录界面

到登录界面逻辑代码(LoginActivity.java)文件夹中找到init方法。在注释//跳转到找回密码界面下方添加如下代码
1Intent intent = new Intent(LoginActivity.this, FindPswActivity.class); 2startActivity(intent);

(2)、修改设置界面

到设置界面逻辑代码(SettingActivity.java)文件夹中找到init方法。在注释//跳转到设置密保界面下方添加如下代码
1Intent intent = new Intent(SettingActivity.this,FindPswActivity.class); 2intent.putExtra("from","security"); 3startActivity(intent);

Android项目实战系列—基于博学谷 开源地址

image                image

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Android项目实战系列—基于博学谷(七)课程模块(下)

!image(https://www.cztcms.cn/wpcontent/uploads/2020/03/%E5%8D%9A%E5%AD%A6%E8%B0%B7.png)由于这个模块内容较多,分为上、中、下三篇博客分别来讲述,请耐心阅读。课程模块分为四个部分\\课程列表\\课

Android项目实战系列—基于博学谷(四)我的模块(上)

!image(https://www.cztcms.cn/wpcontent/uploads/2020/03/%E5%8D%9A%E5%AD%A6%E8%B0%B7.png)由于这个模块内容较多,篇幅较长,请耐心阅读。“我”的模块分为四个部分\x\我的界面\x\设置界面\

Android项目实战系列—基于博学谷(三)注册与登录模块

!image(https://www.cztcms.cn/wpcontent/uploads/2020/03/%E5%8D%9A%E5%AD%A6%E8%B0%B7.png)由于这个模块内容较多,篇幅较长,请耐心阅读。注册与登录模块分为三个部分\x\欢迎界面\x\注册界面\