实现记住用户名密码的登陆界面

一:当用户点击登录按钮时,如果用户勾选CheckBox密码复选框时,这些用户名与密码都被自动保存起来。

MainActivity的布局文件:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     android:background="@drawable/loginbg"
 7     android:paddingBottom="@dimen/activity_vertical_margin"
 8     android:paddingLeft="@dimen/activity_horizontal_margin"
 9     android:paddingRight="@dimen/activity_horizontal_margin"
10     android:paddingTop="@dimen/activity_vertical_margin"
11     tools:context=".LoginActivity" >
12
13   <include layout="@layout/login_top"/>
14
15   <include layout="@layout/login_bottom"/>"
16
17 </LinearLayout>

二:当中调用其他两个xml文件,其代码就不显示了。

MainActivity的代码:

  1 public class MainActivity extends Activity {
  2
  3     private EditText uname;
  4     private EditText upass;
  5     private CheckBox cbkeep;
  6     private Button btlogin;
  7
  8     private SharedPreferences mSpSettings=null;
  9     private static final String PREFS_NAME="NamePwd";
 10
 11     @Override
 12     protected void onCreate(Bundle savedInstanceState) {
 13         super.onCreate(savedInstanceState);
 14         requestWindowFeature(Window.FEATURE_NO_TITLE);
 15         setContentView(R.layout.activity_main);
 16         findView();//得到布局中的控件
 17         setListener();//绑定控件事件
 18         getData();//获取数据
 19     }
 20
 21     /*绑定控件*/
 22     private void findView() {
 23         uname=(EditText) findViewById(R.id.etUsername);
 24         upass=(EditText) findViewById(R.id.tvPassword);
 25         cbkeep=(CheckBox) findViewById(R.id.ckname);
 26         btlogin=(Button) findViewById(R.id.btnLogin);
 27     }
 28
 29     /*为控件添加绑定事件*/
 30     private void setListener() {
 31         btlogin.setOnClickListener(new OnClickListener(){
 32
 33             @Override
 34             public void onClick(View v) {
 35                 //判断用户名和密码
 36                 if("admin".equals(uname.getText().toString())&&"admin".equals(upass.getText().toString())){
 37                     //判断复选框是否选中
 38                     if(cbkeep.isChecked()){
 39                         mSpSettings=getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
 40                         //得到Editor对象
 41                         Editor edit=mSpSettings.edit();
 42                         //记录保存标记
 43                         edit.putBoolean("isKeep",true);
 44                         //记录用户名
 45                         edit.putString("uname",uname.getText().toString());
 46                         //记录密码
 47                         edit.putString("upass",upass.getText().toString());
 48                         //提交数据
 49                         edit.commit();
 50                     }else{
 51                         mSpSettings=getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
 52                         //得到Editor对象
 53                         Editor edit=mSpSettings.edit();
 54                         //记录保存标记
 55                         edit.putBoolean("isKeep",false);
 56                         //记录用户名
 57                         edit.putString("uname","");
 58                         //记录密码
 59                         edit.putString("upass","");
 60                         //提交数据
 61                         edit.commit();
 62                     }
 63                     //跳转到首页
 64                     Intent intent=new Intent(MainActivity.this,SuccessActivity.class);
 65                     startActivity(intent);
 66                 }else{
 67                     //显示错误提示
 68                     Toast.makeText(getApplicationContext(), "用户名或密码错误", Toast.LENGTH_SHORT).show();
 69                 }
 70
 71             }
 72
 73
 74         });
 75     }
 76
 77     protected void onResume(){
 78         //在界面显示数据之前得到之前存储的数据
 79         super.onResume();
 80         getData();
 81     }
 82
 83     private void getData() {
 84         //得到sharedpreferences对象
 85         mSpSettings=getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
 86         //判断是否之前存储过用户名密码
 87         if(mSpSettings.getBoolean("idKeep", false)){
 88             //如果之前存储过,则显示在相应文本框内
 89             uname.setText(mSpSettings.getString("uname", ""));
 90             upass.setText(mSpSettings.getString("upass", ""));
 91         }else{
 92             //否则显示为空
 93             uname.setText("");
 94             upass.setText("");
 95         }
 96
 97     }
 98
 99
100
101 }

三:当用户点击登录按钮时,首先判断用户名与密码是否为合法用户,如果是合法用户并且用户勾选了记住密码,则写入用户名密码信息。确定保存这些信息,如用户名密码输入错误,则清空之前记录的用户名密码。然后转到SuccessActivity页面。

SuccessActivity页面的布局文件如下:

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:id="@+id/RelativeLayout1"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:background="@drawable/loginbg"
 7     android:orientation="vertical"
 8     android:paddingBottom="@dimen/activity_vertical_margin"
 9     android:paddingLeft="@dimen/activity_horizontal_margin"
10     android:paddingRight="@dimen/activity_horizontal_margin"
11     android:paddingTop="@dimen/activity_vertical_margin"
12     tools:context=".MainActivity" >
13
14     <TextView
15         android:id="@+id/textView1"
16         android:layout_width="wrap_content"
17         android:layout_height="wrap_content"
18         android:layout_centerInParent="true"
19         android:text="TextView"
20         android:textSize="20sp" />
21
22 </RelativeLayout>

SuccessActivity的代码:

 1 package com.example.minitwittersimulate;
 2
 3 import android.os.Bundle;
 4 import android.app.Activity;
 5 public class SuccessActivity extends Activity {
 6
 7
 8     @Override
 9     protected void onCreate(Bundle savedInstanceState) {
10         super.onCreate(savedInstanceState);
11         setContentView(R.layout.activity_success);
12     }
13
14
15
16 }

定义完SuccessActivity后,要在mainfest文件中注册Activity,否则打不开。

添加代码:<activity android:name=".SuccessActivity"></activity>

四:实际上SharedPreferences中的数据也是以文件的形式存储,只不过Android封装了这些文件的的过程和方式。可以在/data/data/PACKAGE_NAME/shared_prefs目录下查找,其中对应文件是使用xml来进行文件存储的,大致如下:

1 <?xml version=‘1.0‘ encoding=‘utf-8‘ standalone=‘yes‘?>
2 <map>
3     <int name="isKeep" value="true">
4     <string name="uname" value="zhangsan">
5     <string name="upass" value="1234">
6 </map>
时间: 2024-12-25 01:59:22

实现记住用户名密码的登陆界面的相关文章

实现记住用户名密码的登录界面

效果图如下: 当用户点击登录按钮时,如果用户勾选CheckBox密码复选框时,用户名与密码都被自动保存起来. MainActivity的布局文件: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match

SharedPreferences实现自动登录记住用户名密码

最近Android项目需要一个自动登录功能,完成之后,特总结一下,此功能依靠SharedPreferences进行实现. SharedPreferences简介 SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data/data/<包名>/shared_prefs目录下.SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现

Windows下让Git记住用户名密码(https)

最近开始跟老板共同维护公司的框架代码,于是毫不犹豫地选择了Git这个驰名的版本控制系统(公司使用的是TFS,但外网访问老是断线). 选择的托管平台是OSChina,原因是其可以新建私有项目. 在拉取和推送代码时用的是https,但是可恨的是每次都要输入用户名密码. 程序员生来就是解决问题的. 解决方法是:打开个人文件夹,一般为C:\Documents and Settings\用户名,其中有一个.gitconfig的文件,使用记事本打开.如果之前配置了名字和email的话,在这里面会看到. 我们

Jquery 实现 “下次自动登录” 记住用户名密码功能

转载自:http://blog.csdn.net/aspnet_lyc/article/details/12030039?utm_source=tuicool&utm_medium=referral Jquery将用户名密码存储到cookie中 需要导入jquery.js和jquery.cookie.js <html> <head> <title>test cookie</title> <script src="Scripts/jqu

TortoiseGit自动记住用户名密码的方法

TortoiseGit自动记住用户名密码的方法 windows下比较比较好用的git客户端有2种: msysgit + TortoiseGit(乌龟git) GitHub for Windows github的windows版也用过一段时间,但还是不太习惯.所以目前仍然青睐与msysgit+乌龟git的组合.TortoiseGit在提交时总数会提示你输入用户名密码,非常麻烦.解决方案如下: 方法一: 设置 -> git 编辑本地 .git/config 增加 [credential] helpe

jQuery cookie记住用户名密码自动登录

1.导入两个js文件 1).jquery-1.4.js 2).jquery.cookie.js 2.login.jsp页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&

vcenter web登陆时自动记住用户名密码的方法

1.windows vcenter环境修改以下文件 C:\ProgramData\VMware\vCenterServer\runtime\VMwareSTSService\webapps\websso\WEB-INF\view\unpentry.jsp 2.VCSA环境修改以下文件 /usr/lib/vmware-sso/vmware-sts/webapps/websso/WEB-INF/views/unpentry.jsp 3.在上述文件中找到以下这行代码,并将相应的值填进去 <input

10-30----作业,实现购物车,退出登陆,登陆记住用户名密码,检查用户是否登陆4个功能

1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&g

putty 实现不用输入用户名密码直接登陆

多谢谢Eric的教程 ,下面是我的简化版,原版为Eric所写 远程登陆Linux服务器有两大著名软件,一个是商业软件securecrt,一个是开源软件putty. 两者的安全性能都很高,发展了多年,值得信赖,但基于经济考虑,我选择了putty. 需要注意的是:无论你是选择securecrt还是putty,都严禁使用第三方提供的破解版.中文版等版本,它们都存在安全隐患.Putty就曾发生“后门”事件 putty官网下载地址:www.chiark.greenend.org.uk/%7Esgtatha