在前面博学谷
项目的基础上进行改善和增加新功能
源码资源下载:https://download.csdn.net/download/hyh17808770899/19844673
博学谷
的第三个新功能:找回密码成功后需要自己点击返回
才能回到登录界面,下面修改了使其倒计时3s后自动跳回登录界面。
1、修改xml文件
res目录下的layout文件夹中的activity_find_psw.xml
中添加代码:
73行:添加一个隐藏的TextView控件,就放到Button控件的上方
<!-- 找回密码界面倒计时自动跳转到登录界面倒计时显示 -->
<TextView
android:id="@+id/tv_countdown"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="35dp"
android:layout_marginLeft="35dp"
android:layout_marginTop="10dp"
android:layout_gravity="center_vertical"
android:textColor="@android:color/white"
android:textSize="18sp"
android:visibility="gone"/>
<!-- 找回密码界面倒计时自动跳转到登录界面倒计时显示 -->
2、修改逻辑代码
china.ynyx.heyunhui.activity
包中的FindPswActivity.java
文件中添加如下代码:
30行:先声明变量:
private TextView tv_countdown;
private int countdown = 3; //倒计时3s,这里可以修改
51行:
tv_countdown=(TextView)findViewById(R.id.tv_countdown);
102行:
//输入的密保正确,重新给用户设置一个密码
tv_reset_psw.setVisibility(View.VISIBLE);
tv_reset_psw.setText("初始密码:123456");
tv_countdown.setVisibility(View.VISIBLE);
tv_countdown.setText("此界面将在"+countdown+"秒后跳转");
savePsw(userName);
//倒计时跳转
final Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() { // UI thread
@Override
public void run() {
countdown--;
tv_countdown.setVisibility(View.VISIBLE);
tv_countdown.setText("此界面将在"+countdown+"秒后跳转");
if(countdown == 0){
timer.cancel();
Intent intent = new Intent(FindPswActivity.this, LoginActivity.class);
startActivity(intent);
FindPswActivity.this.finish();//跳转后关闭当前页面
}
}
});
}
};
timer.schedule(timerTask,1000,1000);
完整代码:
package china.ynyx.heyunhui.activity;
import java.util.Timer;
import java.util.TimerTask;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import china.ynyx.heyunhui.R;
import china.ynyx.heyunhui.utils.AnalysisUtils;
import china.ynyx.heyunhui.utils.MD5Utils;
public class FindPswActivity extends AppCompatActivity {
private TextView tv_main_title,tv_back,tv_user_name,tv_reset_psw,tv_countdown;
private Button btn_validate;
private EditText et_user_name,et_validate_name;
//from为security是从设置密保界面跳转过来的,否则就是从登录界面跳转过来的
private String from;
/*找回密码界面倒计时自动跳转到登录界面倒计时显示 */
private int countdown = 3; //倒计时3s,这里可以修改
/*找回密码界面倒计时自动跳转到登录界面倒计时显示 */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find_psw);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
from=getIntent().getStringExtra("from");
init();
}
//获取界面控件及处理相应控件的点击事件
private void init() {
// TODO Auto-generated method stub
tv_main_title=(TextView)findViewById(R.id.tv_main_title);
tv_main_title.setText("修改密码");
tv_back=(TextView)findViewById(R.id.tv_back);
et_validate_name=(EditText)findViewById(R.id.et_validate_name);
tv_reset_psw=(TextView)findViewById(R.id.tv_reset_psw);
/*找回密码界面倒计时自动跳转到登录界面倒计时显示 */
tv_countdown=(TextView)findViewById(R.id.tv_countdown);
/*找回密码界面倒计时自动跳转到登录界面倒计时显示 */
et_user_name=(EditText)findViewById(R.id.et_user_name);
tv_user_name=(TextView)findViewById(R.id.tv_user_name);
btn_validate=(Button)findViewById(R.id.btn_validate);
//通过from判断当前界面
if("security".equals(from)){
tv_main_title.setText("设置密保");
}else{
tv_main_title.setText("找回密码");
tv_user_name.setVisibility(View.VISIBLE);
et_user_name.setVisibility(View.VISIBLE);
}
tv_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FindPswActivity.this.finish();
}
});
btn_validate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String validateName=et_validate_name.getText().toString().trim();
//设置密保
if("security".equals(from)){
if(TextUtils.isEmpty(validateName)) {
Toast.makeText(FindPswActivity.this, "请输入要验证的姓名", Toast.LENGTH_SHORT).show();
return;
}else{
Toast.makeText(FindPswActivity.this,"设置密保成功",Toast.LENGTH_SHORT).show();
//保存密保到SharedPreferences中
saveSecurity(validateName);
FindPswActivity.this.finish();
}
}else{//找回密码
String userName=et_user_name.getText().toString().trim();
String sp_security=readSecurity(userName);
if(TextUtils.isEmpty(userName)){
Toast.makeText(FindPswActivity.this,"请输入您的用户名",Toast.LENGTH_SHORT).show();
return;
}else if(!isExistUserName(userName)){
Toast.makeText(FindPswActivity.this,"您输入的用户名不存在",Toast.LENGTH_SHORT).show();
return;
}else if(TextUtils.isEmpty(validateName)) {
Toast.makeText(FindPswActivity.this, "请输入要验证的姓名", Toast.LENGTH_SHORT).show();
return;
}if(!validateName.equals(sp_security)){
Toast.makeText(FindPswActivity.this, "输入的密保不正确", Toast.LENGTH_SHORT).show();
return;
}else {
/*找回密码界面倒计时自动跳转到登录界面倒计时显示 */
//输入的密保正确,重新给用户设置一个密码
tv_reset_psw.setVisibility(View.VISIBLE);
tv_reset_psw.setText("初始密码:123456");
tv_countdown.setVisibility(View.VISIBLE);
tv_countdown.setText("此界面将在"+countdown+"秒后跳转");
savePsw(userName);
//倒计时跳转
final Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() { // UI thread
@Override
public void run() {
countdown--;
tv_countdown.setVisibility(View.VISIBLE);
tv_countdown.setText("此界面将在"+countdown+"秒后跳转");
if(countdown == 0){
timer.cancel();
Intent intent = new Intent(FindPswActivity.this, LoginActivity.class);
startActivity(intent);
FindPswActivity.this.finish();//跳转后关闭当前页面
}
}
});
}
};
timer.schedule(timerTask,1000,1000);
/*找回密码界面倒计时自动跳转到登录界面倒计时显示 */
}
}
}
});
}
//保存初始化密码
private void savePsw(String userName) {
// TODO Auto-generated method stub
String md5Psw = MD5Utils.MD5("123456");
SharedPreferences sp = getSharedPreferences("loginInfo",Context.MODE_PRIVATE);
SharedPreferences.Editor editor =sp.edit();//获取编辑器
editor.putString(userName,md5Psw); //保存新密码
editor.commit();
}
//保存密保到SharedPreferences中
private void saveSecurity(String validateName) {
// TODO Auto-generated method stub
SharedPreferences sp = getSharedPreferences("loginInfo",Context.MODE_PRIVATE);
SharedPreferences.Editor editor =sp.edit(); //获取编辑器
editor.putString(AnalysisUtils.readLoginUserName(this)+"_security",validateName); //保存新密码
editor.commit();
}
//从SharedPreferences中读取密保
private String readSecurity(String userName) {
// TODO Auto-generated method stub
SharedPreferences sp = getSharedPreferences("loginInfo",Context.MODE_PRIVATE);
String security=sp.getString(userName+"_security","");
return security;
}
//从SharedPreferences中根据用户输入的用户名来判断是否有此用户
private boolean isExistUserName(String userName) {
// TODO Auto-generated method stub
boolean hasUserName=false;
SharedPreferences sp = getSharedPreferences("loginInfo",Context.MODE_PRIVATE);
String spPsw=sp.getString(userName,"");
if(!TextUtils.isEmpty(spPsw)){
hasUserName=true;
}
return hasUserName;
}
}