通过sharepreferences(首选项)来完成,项目工程源码在最下面。
以下是login.xml界面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="right"
android:background="@drawable/bg"
android:gravity="right"
android:orientation="vertical" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1" >
<TableRow
android:layout_gravity="center"
android:gravity="center" >
<ImageView
android:id="@+id/ivlogo"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</ImageView>
</TableRow>
</TableLayout>
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1" >
<TableRow android:layout_marginTop="200dip" >
<TextView
android:id="@+id/tvaccount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dip"
android:gravity="center_vertical"
android:text="帐号:"
android:textSize="20sp" >
</TextView>
<EditText
android:id="@+id/etaccount"
android:layout_width="70dip"
android:layout_height="wrap_content"
android:layout_marginRight="20dip"
android:maxLength="20" >
</EditText>
</TableRow>
<TableRow android:layout_marginTop="10dip" >
<TextView
android:id="@+id/tvpw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dip"
android:gravity="center_vertical"
android:text="密码:"
android:textSize="20sp" >
</TextView>
<EditText
android:id="@+id/etpw"
android:layout_width="70dip"
android:layout_height="wrap_content"
android:layout_marginRight="20dip"
android:inputType="textPassword"
android:textScaleX="">
</EditText>
</TableRow>
</TableLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dip"
android:layout_marginTop="5dip"
android:orientation="horizontal" >
</LinearLayout>
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dip" >
<TableRow
android:layout_width="fill_parent"
android:gravity="center" >
<Button
android:id="@+id/btnlogin"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="登录" >
</Button>
<Button
android:id="@+id/btnexit"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="退出" >
</Button>
</TableRow>
</TableLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dip"
android:orientation="horizontal" >
<CheckBox
android:id="@+id/cbrp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="记住密码"
android:textSize="12sp" >
</CheckBox>
<CheckBox
android:id="@+id/cbal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自动登录"
android:textSize="12sp" >
</CheckBox>
</LinearLayout>
</LinearLayout>
以下是LoginActivity.java
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class LoginActivity extends Activity {
private EditText etAccount;
private EditText etPW;
private Button btnLogin;
private Button btnExit;
private CheckBox cbrp;
private CheckBox cbal;
private SharedPreferences sp;
private Intent intent;
private Editor ed;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
etAccount = (EditText) findViewById(R.id.etaccount);// 账号
etPW = (EditText) findViewById(R.id.etpw);// 密码
cbrp = (CheckBox) findViewById(R.id.cbrp);// 记住密码
cbal = (CheckBox) findViewById(R.id.cbal);// 自动登录
btnLogin = (Button) findViewById(R.id.btnlogin);// 登录
btnExit = (Button) findViewById(R.id.btnexit);// 退出
sp = getSharedPreferences("users", MODE_WORLD_READABLE);
ed = sp.edit();
// 从SharedPreferences里边取出 记住密码的状态
if (sp.getBoolean("ISCHECK", false)) {
// 将记住密码设置为被点击状态
cbrp.setChecked(true);
// 然后将值赋值给EditText
etAccount.setText(sp.getString("oa_name", ""));
etPW.setText(sp.getString("oa_pass", ""));
// 获取自动登录按钮的状态
if (sp.getBoolean("AUTO_ISCHECK", false)) {
// 设置自动登录被点击 然后实现跳转
cbal.setChecked(true);
}
}
btnLogin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
LoginMain();
}
});
// 将点击的checkBOx存入到users中
cbrp.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Boolean isChecked1 = cbrp.isChecked();
ed.putBoolean("ISCHECK", isChecked1);
ed.commit();
}
});
// 设置自动登录默认为不点击
Boolean value1 = sp.getBoolean("AUTO_ISCHECK", false);
cbal.setChecked(value1);
cbal.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Boolean isChecked2 = cbal.isChecked();
ed.putBoolean("AUTO_ISCHECK", isChecked2);
ed.commit();
}
});
// 如果记住密码跟自动登录都被选中就选择登录跳转
if (cbrp.isChecked() && cbal.isChecked()) {
LoginMain();
}
}
protected void LoginMain() {
// TODO Auto-generated method stub
// 将信息存入到users里面
ed.putString("oa_name", etAccount.getText().toString());
ed.putString("oa_pass", etPW.getText().toString());
ed.commit();
if (TextUtils.isEmpty(etAccount.getText().toString())) {
Toast.makeText(this, "请输入用户名", Toast.LENGTH_LONG).show();
return;
}
if (TextUtils.isEmpty(etPW.getText().toString())) {
Toast.makeText(this, "请输入密码", Toast.LENGTH_LONG).show();
return;
}
if ("bingo".equals(etAccount.getText().toString())
&& "123456".equals(etPW.getText().toString())) {
// 创建Intent对象,传入源Activity和目的Activity的类对象
intent = new Intent(LoginActivity.this, SecondActivity.class);
// 启动Activity
startActivity(intent);
} else {
// 登录信息错误,通过Toast显示提示信息
Toast.makeText(LoginActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT)
.show();
}
// 退出
btnExit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.exit(0);
}
});
}
}
以下是源码
http://download.csdn.net/detail/hxb111111/7364225