Android中使用SharedPreferences实现用户登录记住密码
2017-04-11 16:30
681 查看
一、实验目的
掌握SharedPreferences的使用
二、实验仪器
Android Studio
三、实验任务
实现用户登录记住密码
1.运行效果图
当用户选中了记住密码复选框,并成功登录一次之后,这个时候如果再重新启动登陆界面,之前输入的用户名和密码就会显示在文本框中。
![](https://img-blog.csdn.net/20170411163902853?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHk3Nzg4NTIx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20170411163929119?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHk3Nzg4NTIx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20170411163957729?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHk3Nzg4NTIx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20170411164028424?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHk3Nzg4NTIx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.案例实现代码
(1)在res/drawable文件夹下创建一个logintop_roundbg文件夹,设置顶部布局的背景
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#55FFFFFF"/>
<corners android:radius="10dp"/>
</shape>
(2)在res/drawable文件夹下创建一个loginbg文件夹,设置页面的背景
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#FFACDAE5"
android:endColor="#FF72CAE1"
android:angle="45">
</gradient>
</shape>
(3)按钮点击前后颜色会发生变化,在res/drawable文件夹下创建三个文件夹来设置
第一个:btn_select
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_shape" android:state_pressed="false"></item>
<item android:drawable="@drawable/btn_shape_after" android:state_pressed="true"></item>
</selector>
第二个:btn_shape
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FF72CAE1"></solid>
<corners android:radius="10dp"></corners>
</shape>
第三个:btn_shape_after
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#87cefa"></solid>
<corners android:radius="10dp"></corners>
</shape>
(4)在Layout文件夹下添加了两个xml文件,login_success.xml用于显示登录成功的界面,login_top.xml用于现实登录页面顶部,还有一个activity_main.xml用于显示页面背景。
login_success.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Welcome you"
android:textSize="50sp"
android:layout_marginLeft="35dp"
android:layout_marginTop="300dp"/>
</LinearLayout>
login_top.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/activity_horizontal_margin"
android:background="@drawable/logintop_roundbg">
<EditText
android:id="@+id/et_Name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:drawablePadding="10dp"
android:drawableLeft="@drawable/icon_user"
android:background="@android:drawable/edit_text"
android:hint="@string/etName">
<requestFocus/>
</EditText>
<EditText
android:id="@+id/et_Pass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:drawablePadding="10dp"
android:layout_below="@id/et_Name"
android:drawableLeft="@drawable/icon_pass"
android:background="@android:drawable/edit_text"
android:hint="@string/etPass">
<requestFocus/>
</EditText>
<LinearLayout
android:layout_below="@id/et_Pass"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/cbIsRememberPass"
android:layout_width="0dp"
android:layout_weight="1"
android:text="记住密码"
android:textSize="20sp"
android:layout_height="wrap_content" />
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:background="@drawable/btn_select"
android:onClick="login"
android:text="@string/btnLogin"/>
</LinearLayout>
</RelativeLayout>
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:background="@drawable/loginbg"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="bzu.edu.cn.lab634.MainActivity">
<include layout="@layout/login_top"></include>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/deer"
android:layout_marginBottom="17dp"
android:id="@+id/imageView"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
(5)创建一个Main2Activity
MainActivity:
package bzu.edu.cn.lab634;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private EditText etName;
private EditText etPass;
private CheckBox cbIsRememberPass;
private SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
sharedPreferences=getSharedPreferences("remenberpass", Context.MODE_PRIVATE);
boolean isRemenber=sharedPreferences.getBoolean("remenberpass",false);
if(isRemenber){
String name=sharedPreferences.getString("name","");
String pass=sharedPreferences.getString("pass","");
etName.setText(name);
etPass.setText(pass);
cbIsRememberPass.setChecked(true);
}
}
private void initViews() {
etName=(EditText) findViewById(R.id.et_Name);
etPass=(EditText)findViewById(R.id.et_Pass);
cbIsRememberPass=(CheckBox) findViewById(R.id.cbIsRememberPass);
}
public void login(View view){
String name=etName.getText().toString();
String pass=etPass.getText().toString();
if("wzh".equals(name)&&"123456".equals(pass)){
SharedPreferences.Editor editor=sharedPreferences.edit();
if(cbIsRememberPass.isChecked()){
editor.putBoolean("remenberpass",true);
editor.putString("name",name);
editor.putString("pass",pass);
}else {
editor.clear();
}
editor.commit();
Intent intent=new Intent(this,Main2Activity.class);
startActivity(intent);
finish();
}else {
Toast.makeText(this,"账号或密码有误",Toast.LENGTH_LONG).show();
}
}
}
Main2Activity
package bzu.edu.cn.lab634;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_success);
}
}
掌握SharedPreferences的使用
二、实验仪器
Android Studio
三、实验任务
实现用户登录记住密码
1.运行效果图
当用户选中了记住密码复选框,并成功登录一次之后,这个时候如果再重新启动登陆界面,之前输入的用户名和密码就会显示在文本框中。
2.案例实现代码
(1)在res/drawable文件夹下创建一个logintop_roundbg文件夹,设置顶部布局的背景
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#55FFFFFF"/>
<corners android:radius="10dp"/>
</shape>
(2)在res/drawable文件夹下创建一个loginbg文件夹,设置页面的背景
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#FFACDAE5"
android:endColor="#FF72CAE1"
android:angle="45">
</gradient>
</shape>
(3)按钮点击前后颜色会发生变化,在res/drawable文件夹下创建三个文件夹来设置
第一个:btn_select
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_shape" android:state_pressed="false"></item>
<item android:drawable="@drawable/btn_shape_after" android:state_pressed="true"></item>
</selector>
第二个:btn_shape
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FF72CAE1"></solid>
<corners android:radius="10dp"></corners>
</shape>
第三个:btn_shape_after
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#87cefa"></solid>
<corners android:radius="10dp"></corners>
</shape>
(4)在Layout文件夹下添加了两个xml文件,login_success.xml用于显示登录成功的界面,login_top.xml用于现实登录页面顶部,还有一个activity_main.xml用于显示页面背景。
login_success.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Welcome you"
android:textSize="50sp"
android:layout_marginLeft="35dp"
android:layout_marginTop="300dp"/>
</LinearLayout>
login_top.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/activity_horizontal_margin"
android:background="@drawable/logintop_roundbg">
<EditText
android:id="@+id/et_Name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:drawablePadding="10dp"
android:drawableLeft="@drawable/icon_user"
android:background="@android:drawable/edit_text"
android:hint="@string/etName">
<requestFocus/>
</EditText>
<EditText
android:id="@+id/et_Pass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:drawablePadding="10dp"
android:layout_below="@id/et_Name"
android:drawableLeft="@drawable/icon_pass"
android:background="@android:drawable/edit_text"
android:hint="@string/etPass">
<requestFocus/>
</EditText>
<LinearLayout
android:layout_below="@id/et_Pass"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/cbIsRememberPass"
android:layout_width="0dp"
android:layout_weight="1"
android:text="记住密码"
android:textSize="20sp"
android:layout_height="wrap_content" />
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:background="@drawable/btn_select"
android:onClick="login"
android:text="@string/btnLogin"/>
</LinearLayout>
</RelativeLayout>
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:background="@drawable/loginbg"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="bzu.edu.cn.lab634.MainActivity">
<include layout="@layout/login_top"></include>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/deer"
android:layout_marginBottom="17dp"
android:id="@+id/imageView"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
(5)创建一个Main2Activity
MainActivity:
package bzu.edu.cn.lab634;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private EditText etName;
private EditText etPass;
private CheckBox cbIsRememberPass;
private SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
sharedPreferences=getSharedPreferences("remenberpass", Context.MODE_PRIVATE);
boolean isRemenber=sharedPreferences.getBoolean("remenberpass",false);
if(isRemenber){
String name=sharedPreferences.getString("name","");
String pass=sharedPreferences.getString("pass","");
etName.setText(name);
etPass.setText(pass);
cbIsRememberPass.setChecked(true);
}
}
private void initViews() {
etName=(EditText) findViewById(R.id.et_Name);
etPass=(EditText)findViewById(R.id.et_Pass);
cbIsRememberPass=(CheckBox) findViewById(R.id.cbIsRememberPass);
}
public void login(View view){
String name=etName.getText().toString();
String pass=etPass.getText().toString();
if("wzh".equals(name)&&"123456".equals(pass)){
SharedPreferences.Editor editor=sharedPreferences.edit();
if(cbIsRememberPass.isChecked()){
editor.putBoolean("remenberpass",true);
editor.putString("name",name);
editor.putString("pass",pass);
}else {
editor.clear();
}
editor.commit();
Intent intent=new Intent(this,Main2Activity.class);
startActivity(intent);
finish();
}else {
Toast.makeText(this,"账号或密码有误",Toast.LENGTH_LONG).show();
}
}
}
Main2Activity
package bzu.edu.cn.lab634;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_success);
}
}
相关文章推荐
- 使用jquery.cookie.js实现记住用户信息(下面以web的记住登录名和密码为例进行说明)
- android基础-利用SharedPreferences实现用户记住密码和自动登录
- Android实现用户登录记住密码功能
- Android 记住密码和自动登录界面的实现(SharedPreferences 的用法)
- Android 记住密码和自动登录界面的实现(SharedPreferences 的用法)
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- 使用Jquery搭建最佳用户体验的登录页面 之 记住密码自动登录功能,(含后台代码)
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android 记住密码和自动登录界面的实现(SharedPreferences 的用法)
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- android实现记住用户名和密码以及实现自动登录
- Android实现登录界面记住用户名与密码
- Android 记住密码和自动登录界面的实现
- Android 记住密码和自动登录界面的实现(SharedPreferences 的用法)
- Android 记住密码和自动登录界面的实现(SharedPreferences 的用法)1
- android开发,以记住用户登录密码为例说明SharedPreferences的简单应用
- 使用Jquery搭建最佳用户体验的登录页面 之 记住密码自动登录功能
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- asp.net 使用一般处理程序和ajax post实现登录以及记住密码