編輯:關於android開發
如圖當點擊按鈕時,會先判斷是否第一次登陸,如果是第一次登陸登陸則會彈出設置密碼的彈窗,若果登陸過則彈出登陸彈窗
其中輸入的密碼會用MD5加密下
package com.org.demo.wangfeng.demo;
import com.org.wangfeng.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class HomeActivity extends Activity {
private Button bbButton;
private SharedPreferences mPref;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.homeactivity);
mPref = getSharedPreferences("config", MODE_PRIVATE);
bbButton = (Button) findViewById(R.id.bb_home);
bbButton.setOnClickListener(new OnclickItem());
}
private class OnclickItem implements View.OnClickListener {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String savedPassword = mPref.getString("password", null);
if(!TextUtils.isEmpty(savedPassword)){
//輸入密碼彈窗
showPasswordInputDialog();
}else{
//如果沒有設置過,彈出設置密碼的彈窗
showPasswordSetDialog();
}
}
}
/**
* 設置密碼的彈窗
*/
private void showPasswordSetDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
final AlertDialog dialog = builder.create();
View view = View.inflate(this, R.layout.dialog_set_password, null);
dialog.setView(view, 0, 0, 0, 0);// 設置邊距為0,保證在2.x的版本上運行沒問題
final EditText edPassWord = (EditText) view
.findViewById(R.id.et_password);
final EditText edPassWordConfirm = (EditText) view
.findViewById(R.id.et_password_confirm);
Button btnOK = (Button) view.findViewById(R.id.btn_ok);
Button btnCancel = (Button) view.findViewById(R.id.btn_cancel);
btnOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String password = edPassWord.getText().toString();
String passwordConfirm = edPassWordConfirm.getText().toString();
if (!TextUtils.isEmpty(password) && !passwordConfirm.isEmpty()) {
// 當輸入的2個內容相同
if (password.equals(passwordConfirm)) {
Toast.makeText(HomeActivity.this, "登陸成功",
Toast.LENGTH_SHORT).show();
// 將密碼保存起來
mPref.edit()
.putString("password",
MD5Utils.encode(password)).commit();
dialog.dismiss();
} else {
Toast.makeText(HomeActivity.this, "2此輸入密碼不一致",
Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(HomeActivity.this, "輸入內容不能為空",
Toast.LENGTH_SHORT).show();
}
}
});
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
dialog.show();
}
/**
* 輸入密碼彈窗
*/
private void showPasswordInputDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
final AlertDialog dialog = builder.create();
View view = View.inflate(this, R.layout.dialog_input_password, null);
dialog.setView(view, 0, 0, 0, 0);
final EditText etPassword = (EditText) view
.findViewById(R.id.et_password);
Button btnOk = (Button) view.findViewById(R.id.btn_ok);
Button btnCancel = (Button) view.findViewById(R.id.btn_cancel);
btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String password = etPassword.getText().toString();
if (!TextUtils.isEmpty(password)) {
String savedPassword = mPref.getString("password", null);
if (MD5Utils.encode(password).equals(savedPassword)) {
Toast.makeText(HomeActivity.this, "登陸成功",
Toast.LENGTH_SHORT).show();
dialog.dismiss();
} else {
Toast.makeText(HomeActivity.this, "密碼錯誤",
Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(HomeActivity.this, "輸入內容不能為空",
Toast.LENGTH_SHORT).show();
}
}
});
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
dialog.show();
}
}
package com.org.demo.wangfeng.demo;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Utils {
/**
* md5加密
*
* @param password
* @return
*/
public static String encode(String password) {
try {
MessageDigest instance = MessageDigest.getInstance("MD5");// 獲取MD5算法對象
byte[] digest = instance.digest(password.getBytes());// 對字符串加密,返回字節數組
StringBuffer sb = new StringBuffer();
for (byte b : digest) {
int i = b & 0xff;// 獲取字節的低八位有效值
String hexString = Integer.toHexString(i);// 將整數轉為16進制
if (hexString.length() < 2) {
hexString = "0" + hexString;// 如果是1位的話,補0
}
sb.append(hexString);
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
// 沒有該算法時,拋出異常, 不會走到這裡
}
return "";
}
}

其實在android裡 if(text ==null || text.length()==0)是有封裝的。
在android.text.TextUtils裡
public static boolean isEmpty(CharSequence str) {
if (str == null || str.length() == 0)
return true;
else
return false;
}
所以我們可以使用
TextUtils.isEmpty(text)
代替
if(text == null || text.length() == 0)
Android ClearEditText:輸入用戶名、密碼錯誤時整體刪除及輸入為空時候晃動提示,android官網
Android ClearEditText:輸入用戶名、密碼錯誤時整體刪除及輸入為空時候晃動提示,android官網 1 package com.lixu.cleared
硅谷社交14--選擇聯系人頁面,硅谷社交14--聯系人
硅谷社交14--選擇聯系人頁面,硅谷社交14--聯系人 1)頁面布局 <?xml version=1.0 encoding=utf-8?> <Line
提示框的優化之自定義Toast組件之(三)Toast組件優化,toast組件
提示框的優化之自定義Toast組件之(三)Toast組件優化,toast組件開發步驟: 在toast_customer.xml文件中添加一個圖片組件對象顯示提示圖片
快速排序的離散數學分析,排序離散數學分析
快速排序的離散數學分析,排序離散數學分析 下面是偽代碼,這裡為了效率更高效,把切分值改成隨機化,算法原碼請參考 算法-5.快速排序 QUICKSO