您的位置:首页 > 其它

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

2015-07-01 22:39 316 查看


一:当用户点击登录按钮时,如果用户勾选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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: