Android数据存储和访问--用户登录记住密码
2017-04-08 17:52
686 查看
今天给大家介绍一个案例,用户登录和记住密码,运行结果图如下:
实验目的:当用户选中了记住密码复选框并成功登录过一次之后,这个时候如果在重新启动登录,之前输入的内容就会还保留在文本框中,如果取消记住密码,则下次登录时需要重新输入。
设计思路:首先我们应该先做出整体的样子,把整个动画界面做出来,然后创建工具类用来实现密码和用户的存储与获取功能,主要使用SharedPreferences方法。编写界面交互代码,最后运行实现。
创建程序
创建Case_login程序,包名为bzu.edu.cn(程序名包名可以自己定义)。设置用户交互界面。
我整体用的是相对布局设计,记住密码复选框和登录按钮在线性布局里书写。
在drawable目录下建立xml文件,但不是选择器而是为了描述形状,和绘制有关系的都是放在drawable目录下取名为logintop_roundbg
在定义一个选择器描述按钮按下和松开时的样子,建立btn_select.xml文件:
btn_shape.xml和btn_shape_after.xml文件中分别为:
在res/values/strings.xml中定义:
布局文件编写
login_top.xml文件:
activity_main.xml文件:
activity-login文件:
SharedPreferences介绍:
SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置参数,它是采用xml文件存放数据的,文件存放在”/data/data/shared_prefs”目录下。
SharedPreferences的用法:
由于SharedPreferences是一个接口,而且在这个接口里没有提供写入数据和读取数据的能力。但它是通过其Editor接口中的一些方法来操作SharedPreference的,用法见下面代码:
Context.getSharedPreferences(String name,int mode)来得到一个SharedPreferences实例
name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。
mode:是指定读写方式,其值有三种,分别为:
Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写
Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写
Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。
3.在LoginActivity.java中编写界面交互代码
4.运行
实验目的:当用户选中了记住密码复选框并成功登录过一次之后,这个时候如果在重新启动登录,之前输入的内容就会还保留在文本框中,如果取消记住密码,则下次登录时需要重新输入。
设计思路:首先我们应该先做出整体的样子,把整个动画界面做出来,然后创建工具类用来实现密码和用户的存储与获取功能,主要使用SharedPreferences方法。编写界面交互代码,最后运行实现。
创建程序
创建Case_login程序,包名为bzu.edu.cn(程序名包名可以自己定义)。设置用户交互界面。
我整体用的是相对布局设计,记住密码复选框和登录按钮在线性布局里书写。
在drawable目录下建立xml文件,但不是选择器而是为了描述形状,和绘制有关系的都是放在drawable目录下取名为logintop_roundbg
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="10dp"></corners> <solid android:color="#55FFFFFF"></solid> </shape>
在定义一个选择器描述按钮按下和松开时的样子,建立btn_select.xml文件:
<?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和btn_shape_after.xml文件中分别为:
<?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>
<?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>
在res/values/strings.xml中定义:
<string name="app_name">Case_Login</string> <string name="etName">请输入账号</string> <string name="etPass">请输入密码</string> <string name="btnLogin">登录</string>
布局文件编写
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/etName" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:drawable/edit_text" android:drawableLeft="@drawable/icon_user" android:drawablePadding="10dp" android:ems="10" android:hint="@string/etName"> <requestFocus /> </EditText> <EditText android:id="@+id/etPassword" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/etName" android:background="@android:drawable/edit_text" android:drawableLeft="@drawable/icon_pass" android:drawablePadding="10dp" android:ems="10" android:hint="@string/etPass" android:inputType="textPassword"> <requestFocus /> </EditText> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/etPassword"> <CheckBox android:text="记住密码" android:layout_width="0dp" android:layout_height="wrap_content" android:id="@+id/cbIsRememberPass" android:textSize="20sp" android:layout_weight="1" /> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" 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:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="cn.edu.bzu.case_login.MainActivity"> <TextView android:text="Welcome_you" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentTop="true" android:textSize="40sp" android:layout_marginTop="263dp" android:id="@+id/textView" /> </RelativeLayout>
activity-login文件:
<?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:id="@+id/activity_login" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:background="@drawable/loginbg" tools:context="cn.edu.bzu.case_login.LoginActivity"> <include layout="@layout/login_top"></include> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" app:srcCompat="@drawable/deer" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_marginBottom="20dp" android:id="@+id/imageView" /> </RelativeLayout>
SharedPreferences介绍:
SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置参数,它是采用xml文件存放数据的,文件存放在”/data/data/shared_prefs”目录下。
SharedPreferences的用法:
由于SharedPreferences是一个接口,而且在这个接口里没有提供写入数据和读取数据的能力。但它是通过其Editor接口中的一些方法来操作SharedPreference的,用法见下面代码:
Context.getSharedPreferences(String name,int mode)来得到一个SharedPreferences实例
name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上。
mode:是指定读写方式,其值有三种,分别为:
Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写
Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写
Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。
3.在LoginActivity.java中编写界面交互代码
package cn.edu.bzu.case_login; 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 LoginActivity extends AppCompatActivity { private EditText etName; private EditText etPassword; private CheckBox cbIsRememberPass; private SharedPreferences sharedPreferences; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); //获得实例对象 initViews(); sharedPreferences=getSharedPreferences("rememberpassword", Context.MODE_PRIVATE); boolean isRemember=sharedPreferences.getBoolean("rememberpassword",false); if (isRemember){//记住密码状态下 String name=sharedPreferences.getString("name",""); String password=sharedPreferences.getString("password",""); etName.setText(name); etPassword.setText(password); cbIsRememberPass.setChecked(true); } } private void initViews(){ etName=(EditText)findViewById(R.id.etName); etPassword=(EditText)findViewById(R.id.etPassword); cbIsRememberPass=(CheckBox)findViewById(R.id.cbIsRememberPass); } public void login(View view){ String name=etName.getText().toString(); String password=etPassword.getText().toString(); if ("admin".equals(name)&&"123456".equals(password)){ SharedPreferences.Editor editor=sharedPreferences.edit(); if(cbIsRememberPass.isChecked()){ editor.putBoolean("rememberpassword",true); editor.putString("name",name); editor.putString("password",password); }else{ editor.clear(); } editor.commit(); Intent intent=new Intent(this,MainActivity.class); startActivity(intent); finish(); }else { Toast.makeText(this, "账号或密码有误", Toast.LENGTH_SHORT).show(); }//登录失败的一个提醒,主要不要漏掉show()方法 } }
4.运行
相关文章推荐
- Android数据存储和访问之SharedPreferences存储方式_用户登录记住密码案例
- Android数据存储和访问——用户登录记住密码
- Android数据存储和访问-登录记住密码功能
- 实验3 Android数据存储和访问-登录记住密码功能
- Android数据存储和访问-登录记住密码功能
- 实验3:android数据储存和访问----登录记住密码功能
- 数据存储,实现用户登录界面及记住密码的实现。
- Android之数据存储共享参数简单用户登录(一)
- Android数据存储——登陆案例(记住密码)
- Android--第二天(项目安装启动,电话拨号器,用户通知,短信发送器,数据存储与访问)
- android开发,以记住用户登录密码为例说明SharedPreferences的简单应用
- Android用SharedPreferences保存数据实现注册和登录功能(首次安装默认打开注册,记住密码)
- 这才是一个完整的用户登录(Forms身份认证+记住密码+加密存储+LoginedPage/BasePage)
- Andriod数据存储(SharedPreferences)-用户登入记住密码练习
- android数据存储之sharedPreferences记住密码完成跳转
- android开发,以记住用户登录密码为例说明SharedPreferences的简单应用
- Android数据存储-通过SharedPreferences实现记住密码的操作
- Android实现登录界面记住密码的存储
- Android实现用户登录记住密码功能
- Android学习(19) -- 数据存储之File (简单登录保存用户名和密码)