android 登陆案例

 

 

layout

 1 <?xml version="1.0"?>
 2 
 3 -<LinearLayout android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
 4 
 5 <EditText android:id="@+id/et_username" android:layout_height="wrap_content" android:layout_width="fill_parent" android:hint="@string/input_username"/>
 6 
 7 <EditText android:id="@+id/et_password" android:layout_height="wrap_content" android:layout_width="fill_parent" android:hint="@string/input_password" android:inputType="textPassword" android:layout_marginBottom="10dp" android:layout_marginTop="10dp"/>
 8 
 9 
10 -<RelativeLayout android:layout_height="wrap_content" android:layout_width="fill_parent">
11 
12 <CheckBox android:id="@+id/cb_rem" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/rem_password" android:layout_alignParentLeft="true" android:layout_centerVertical="true"/>
13 
14 <Button android:id="@+id/bt_login" android:paddingRight="50dp" android:paddingLeft="50dp" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/login" android:layout_centerVertical="true" android:layout_alignParentRight="true"/>
15 
16 </RelativeLayout>
17 
18 </LinearLayout>

 

 

java代码

 

 1 package com.itheima.login;
 2 
 3 import java.util.Map;
 4 
 5 import com.itheima.login.util.UserInfoUtil;
 6 
 7 import android.app.Activity;
 8 import android.content.Context;
 9 import android.os.Bundle;
10 import android.text.TextUtils;
11 import android.view.View;
12 import android.view.View.OnClickListener;
13 import android.widget.Button;
14 import android.widget.CheckBox;
15 import android.widget.EditText;
16 import android.widget.Toast;
17 
18 public class MainActivity extends Activity implements OnClickListener{
19 
20     private EditText et_username;
21     private EditText et_password;
22     private CheckBox cb_rem;
23     private Button bt_login;
24     private Context mContext;
25 
26     @Override
27     protected void onCreate(Bundle savedInstanceState) {
28         super.onCreate(savedInstanceState);
29         setContentView(R.layout.activity_main);
30         mContext = this;
31         et_username = (EditText) findViewById(R.id.et_username);
32         et_password = (EditText) findViewById(R.id.et_password);
33         cb_rem = (CheckBox) findViewById(R.id.cb_rem);
34         bt_login = (Button) findViewById(R.id.bt_login);
35         //b.设置按钮的点击事件
36         bt_login.setOnClickListener(this);
37 
38         
39         //f.回显用户名密码 ??
40         Map<String, String> map = UserInfoUtil.getUserInfo_android(mContext);//获取用户名密码
41         if(map != null){
42             String username = map.get("username");
43             String password = map.get("password");
44             et_username.setText(username);//设置用户名
45             et_password.setText(password);
46             cb_rem.setChecked(true);//设置复选框选中状态
47         }
48 
49     }
50 
51     private void login(){
52 
53         //c.在onclick方法中,获取用户输入的用户名密码和是否记住密码
54 
55             String username = et_username.getText().toString().trim();
56             String password = et_password.getText().toString().trim();
57             boolean isrem = cb_rem.isChecked();
58         //d.判断用户名密码是否为空,不为空请求服务器(省略,默认请求成功)
59             if(TextUtils.isEmpty(username) || TextUtils.isEmpty(password)){
60                 Toast.makeText(mContext, "用户名密码不能为空", Toast.LENGTH_SHORT).show();
61                 return ;
62             }
63             
64         //请求服务器,后面讲。。。。。。。。。。
65                 
66         //e.判断是否记住密码,如果记住,将用户名密码保存本地。???? 
67             if(isrem){
68                 boolean result = UserInfoUtil.saveUserInfo_android(mContext,username,password);
69                 if(result){
70                     Toast.makeText(mContext, "用户名密码保存成功", Toast.LENGTH_SHORT).show();
71                 }else{
72                     Toast.makeText(mContext, "用户名密码保存失败", Toast.LENGTH_SHORT).show();    
73                 }
74                 
75             }else{
76                 Toast.makeText(mContext, "无需保存", Toast.LENGTH_SHORT).show();
77             }
78 
79 
80 
81     }
82 
83     @Override
84     public void onClick(View v) {
85         switch (v.getId()) {
86         case R.id.bt_login:
87             login();
88             break;
89 
90         default:
91             break;
92         }
93     }
94 
95 
96 }

 

新建包的代码

  1 package com.itheima.login.util;
  2 
  3 import java.io.BufferedReader;
  4 import java.io.File;
  5 import java.io.FileInputStream;
  6 import java.io.FileOutputStream;
  7 import java.io.InputStreamReader;
  8 import java.util.HashMap;
  9 import java.util.Map;
 10 
 11 import android.content.Context;
 12 
 13 public class UserInfoUtil {
 14     
 15     //保存用户名密码
 16     public static boolean saveUserInfo_android(Context context,String username, String password) {
 17 
 18         try{
 19             String userinfo = username + "##"+ password;//封装用户名密码
 20             //得到私有目录下一个文件写入流; name : 私有目录文件的名称    mode: 文件的操作模式, 私有,追加,全局读,全局写
 21             FileOutputStream fileOutputStream = context.openFileOutput("userinfo.txt", Context.MODE_PRIVATE);
 22             fileOutputStream.write(userinfo.getBytes());//将用户名密码写入文件
 23             fileOutputStream.close();
 24             return true;
 25         }catch (Exception e) {
 26             e.printStackTrace();
 27         }
 28 
 29         return false;
 30     }
 31     
 32     
 33     //获取用户名密码
 34     public static Map<String ,String> getUserInfo_android(Context context){
 35         
 36         try{
 37             
 38             //通过context对象获取一个私有目录的文件读取流
 39             FileInputStream fileInputStream = context.openFileInput("userinfo.txt");
 40             BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
 41             //读取一行中包含用户密码,需要解析
 42             String readLine = bufferedReader.readLine();
 43             String[] split = readLine.split("##");
 44             HashMap<String, String> hashMap = new HashMap<String ,String>();
 45             hashMap.put("username", split[0]);
 46             hashMap.put("password", split[1]);
 47             bufferedReader.close();
 48             fileInputStream.close();
 49             return hashMap;
 50             
 51         }catch (Exception e) {
 52             e.printStackTrace();
 53         }
 54         return null;
 55         
 56     }
 57     
 58     
 59     
 60     //保存用户名密码
 61     public static boolean saveUserInfo(Context context,String username, String password) {
 62 
 63         try{
 64             String userinfo = username + "##"+ password;//封装用户名密码
 65 //            String path = "/data/data/com.itheima.login/";//指定保存的路径
 66             //通过Context对象获取私有目录的一个路径
 67             String path = context.getFilesDir().getPath();
 68             System.out.println("...............:"+path);
 69             File file = new File(path,"userinfo.txt");//创建file
 70             FileOutputStream fileOutputStream = new FileOutputStream(file);//创建文件写入流
 71             fileOutputStream.write(userinfo.getBytes());//将用户名密码写入文件
 72             fileOutputStream.close();
 73             return true;
 74         }catch (Exception e) {
 75             e.printStackTrace();
 76         }
 77 
 78         return false;
 79     }
 80     
 81     //获取用户名密码
 82     public static Map<String ,String> getUserInfo(Context context){
 83         
 84         try{
 85 //            String path = "/data/data/com.itheima.login/";//指定保存的路径
 86             
 87             //通过Context对象获取私有目录的一个路径
 88             String path = context.getFilesDir().getPath();
 89             System.out.println("...............:"+path);
 90             File file = new File(path,"userinfo.txt");//创建file
 91             FileInputStream fileInputStream = new FileInputStream(file);
 92             BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
 93             //读取一行中包含用户密码,需要解析
 94             String readLine = bufferedReader.readLine();
 95             String[] split = readLine.split("##");
 96             HashMap<String, String> hashMap = new HashMap<String ,String>();
 97             hashMap.put("username", split[0]);
 98             hashMap.put("password", split[1]);
 99             bufferedReader.close();
100             fileInputStream.close();
101             return hashMap;
102             
103         }catch (Exception e) {
104             e.printStackTrace();
105         }
106         return null;
107         
108     }
109 
110 }

 

我存在的问题与修正

*alt+enter------补全抽象方法*/

/*获取全局变量*****怎么做  fied*/

/*如何格式化代码*/

/*点击事件用全局语句*/

/*很多程序都用到contest,所以在类中定义对象吧!赋值this,以后toast用到直接调用*/

/*ctrl+1   封装临时自己打的类,crate class*/

/*创建方法*/

 

/*保存文件*/

1.保存到私有目录下

2.保存路径

3.创建一个File对象

4.再创建一个FileOotputStream对象,传File进去

 

 

 

/*私开包,斯开方法*/



/*保存文件*/
1.保存到私有目录下  /date/date/包名/
2.保存路径(特殊)
3.创建一个File对象(路径,文件类型加名字)
4.再创建一个FileOotputStream对象,传File进去,其实就是创建文件写入流
5.对读取这一块直接  try一下   catch输出信息(什么stake)
6.FS调用write方法,传字节流进去。传字节进去,而且自能传一个,怎么办?
  用字符串+ 处理   那混合了怎么办?
     加两个特殊字符进去##(不能用正则表达式的字符)。后面再用  分割字符串的方法分开
7.字符串调用自身  getbyte()方法
8.把流关闭  FS调用close()方法
9.最后return ture   告诉保存成功




/*Map?*/

/*toast*/
1.Toast.makeText(mtext,"Stri ng",Toast.选时间).show
2.mcontext=this     ,就是创建一个数据


/*什么时候回显*/
1.程序一加载就回显示
2.是不是要读取文件才能读取
3.读的路径一样,创建的文件一样
4.创建一个输入字节流  FIS(F)
4.用户名,密码都是一行,怎么读取一行
   创建BR对象(new IR(F))
5.创建字符串读取字节    BR。RL()
6.分割字符串的使用
7.集合的使用  哈希表
8.关闭流

 

 

posted @ 2016-07-19 10:53  Qi_Yuan  阅读(1463)  评论(0)    收藏  举报