摘要:設置密保找回密碼界面思路由于設置密保和找回密碼兩個界面十分相似,代碼邏輯也十分相似,因此這兩個界面可以使用同一個布局文件和同一個來處理,首先導入所需圖片資源文件,再創建,將布局改為具體代碼如下先將設置密保部分隱藏,您的用戶名是請輸
設置密保&找回密碼界面 思路
由于設置密保和找回密碼兩個界面十分相似,代碼邏輯也十分相似,因此這兩個界面可以使用同一個布局文件和同一個
Activity 來處理,首先導入所需圖片資源文件,再創建 FindPswActivity ,將布局改為 LinearLayout
具體代碼如下:
activity_find_psw.xml設置密保&找回密碼邏輯 思路
由于設置密保界面和找回密碼界面用的同一個 Activity ,在這個Activity中主要是根據從設置界面和登錄界面
putExtra 傳遞過來的 from 參數的值來判斷要跳轉到哪個界面,若值為 security 則是設置密保的界面,否則處理的就是找回密碼的界面,完成設置密保&找回密碼邏輯后再處理設置界面與登錄界面的點擊事件
具體代碼如下:
FindPswActivitypackage cn.edu.lt.android.boxueguapp.activity; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; 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 cn.edu.lt.android.boxueguapp.R; import cn.edu.lt.android.boxueguapp.utils.AnalysisUtils; import cn.edu.lt.android.boxueguapp.utils.MD5Utils; public class FindPswActivity extends AppCompatActivity { private EditText et_validate_name, et_user_name; private Button btn_validate; private TextView tv_main_title; private TextView tv_back; //從哪個界面跳轉過來的(from為security時是從設置密保界面跳轉過來的,否則就是從登錄界面跳轉過來的) private String from; private TextView tv_reset_psw, tv_user_name; @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() { tv_main_title = (TextView) findViewById(R.id.tv_main_title); tv_back = (TextView) findViewById(R.id.tv_back); et_validate_name = (EditText) findViewById(R.id.et_validate_name); btn_validate = (Button) findViewById(R.id.btn_validate); tv_reset_psw = (TextView) findViewById(R.id.tv_reset_psw); et_user_name = (EditText) findViewById(R.id.et_user_name); tv_user_name = (TextView) findViewById(R.id.tv_user_name); 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"); savePsw(userName); } } } }); } /** * 保存初始化密碼 * @param userName */ private void savePsw(String userName) { String md5Psw = MD5Utils.md5("123456");//把密碼用Md5加密 SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE);//loginInfo表示文件名 SharedPreferences.Editor editor = sp.edit();//獲取編輯器 editor.putString(userName, md5Psw); editor.commit();//提交修改 } /** * 保存密保到SharedPreferences中 */ private void saveSecurity(String validateName) { SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE);//loginInfo表示文件名 SharedPreferences.Editor editor = sp.edit();//獲取編輯器 editor.putString(AnalysisUtils.readLoginUserName(this) + "_security", validateName);//存入賬號對應的密保 editor.commit();//提交修改 } /** * 從SharedPreferences中讀取密保 */ private String readSecurity(String userName) { SharedPreferences sp = getSharedPreferences("loginInfo", Context.MODE_PRIVATE); String security = sp.getString(userName + "_security", ""); return security; } /** * 從SharedPreferences中根據用戶輸入的用戶名來判斷是否有此用戶名 */ private boolean isExistUserName(String userName) { boolean hasUserName = false; SharedPreferences sp = getSharedPreferences("loginInfo", MODE_PRIVATE); String spPsw = sp.getString(userName, ""); if (!TextUtils.isEmpty(spPsw)) { hasUserName = true; } return hasUserName; } }LoginActivity
//找回密碼控件的點擊事件 tv_find_psw.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //跳轉找回密碼界面 Intent intent=new Intent(LoginActivity.this,FindPswActivity.class); startActivity(intent); } });SettingActivity
//設置密保的點擊事件 rl_security_setting.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(SettingActivity.this, FindPswActivity.class); intent.putExtra("from", "security"); startActivity(intent); } });優化 思路
為了界面美觀以及操作的便捷,找回密碼點擊驗證后,本需要手動回退到登錄界面,現本人加入倒計時,倒計時截止時將自動跳轉登錄界面
FindPswActivityprivate int countdown = 3;
//輸入的密保正確,重新給用戶設置一個密碼 tv_reset_psw.setVisibility(View.VISIBLE); tv_reset_psw.setTextColor(0xffff0000); tv_reset_psw.setText("初始密碼為123456"); tv_countdown.setVisibility(View.VISIBLE); tv_countdown.setAlpha(0.5f); 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);運行效果
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68305.html
摘要:設置界面思路設置界面有三個功能,分別為修改密碼設置密保和退出登錄。 設置界面 思路 設置界面有三個功能,分別為修改密碼、設置密保和退出登錄。創建 SettingActivity ,修改布局為 LinearLayout 具體代碼如下: activity_setting.xml ...
摘要:標題欄思路由于項目中大部分界面都有一個后退鍵和一個標題欄,為避免代碼冗雜以及便于利用,我們可以將后推薦和標題欄單獨抽取出來定義一個標題欄布局,在目錄下新建一個,選用具體代碼如下注冊界面思路將圖片導入目錄下,在包下創建,修改為布局具體代碼如 標題欄 思路 由于項目中大部分界面都有一個后退鍵和一個標題欄,為避免代碼冗雜以及便于利用,我們可以將后推薦和標題欄單獨抽取出來定義一個標題欄布局,在...
閱讀 2716·2021-09-24 09:47
閱讀 4366·2021-08-27 13:10
閱讀 2981·2019-08-30 15:44
閱讀 1281·2019-08-29 12:56
閱讀 2594·2019-08-28 18:07
閱讀 2614·2019-08-26 14:05
閱讀 2551·2019-08-26 13:41
閱讀 1265·2019-08-26 13:33