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

效果图如下:

当用户点击登录按钮时,如果用户勾选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-08-11 14:08:32

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

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

一:当用户点击登录按钮时,如果用户勾选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_pa

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&

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

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

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

struts2的记住账号密码的登录设计

一个简单的基于struts2的登录功能,实现的额外功能有记住账号密码,登录错误提示.这里写上我在设计时的思路流程,希望大家能给点建设性的意见,帮助我改善设计. 登录功能的制作,首先将jsp界面搭建出来,界面搭建出来之后,我首先想的是如何用cookie来实现记住账号密码,这里我选择的是在class中实现这个cookie. jsp页面中的checkbox标签作为一个标记参数来判断用户是否选择了记住账号和密码,在登录提交之后,伴随着登录的账号.密码.激活码一起传递到action中,checkbox选中

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

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

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

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

python 练习一 从文本中读取用户名密码并登录

python练习一 编写一个登陆接口 可以输入用户名密码 认证成功后提示欢迎登陆信息 输错三次后该用户锁定无法登陆 1 # Author:Roach 2 import sys 3 name_list = open('user_pass','r+') 4 # 打开记录用户名密码的文本,文本内格式为:test:test 5 name_text = dict(line.strip().split(":") for line in name_list if line) 6 # 将每行分别读取并

【WPF学习笔记】之点登录按钮时判断用户名密码进行登录:动画系列之(二)

...... 承接动画系列之(一)的代码: 再添加登录按钮代码进行登录,验证用户名和密码在数据库是否正确. 直接上代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Do