您的位置:首页 > 移动开发 > Android开发

Android中使用SharedPreferences实现用户登录记住密码

2017-04-11 16:30 681 查看
一、实验目的

掌握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);

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐