登录信息的存储案例

1.信息文件存储知识点:Flie输出流和输入流,TextUtil,Map的使用。

2.案例所需的图片:


3.案例文件的目录,如下图:

4.登录页面顶部布局login_top,图片和代码如下:


代码:
<?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:background="@drawable/login_topbg"
    android:padding="@dimen/activity_horizontal_margin">
   <EditText
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:id="@+id/etName"
       android:drawableLeft="@drawable/icon_user"
       android:background="@android:drawable/edit_text"
       android:hint="请输入账号"
       android:drawablePadding="10dp"
       />
   <EditText
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:id="@+id/etPass"
       android:inputType="textPassword"
       android:drawableLeft="@drawable/icon_pass"
      android:background="@android:drawable/edit_text"
       android:hint="请输入密码"
       android:layout_below="@+id/etName"
       android:drawablePadding="10dp">
       <requestFocus/>
   </EditText>

   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_below="@+id/etPass"
       android:layout_alignParentLeft="true"
       android:layout_alignParentStart="true">
      <CheckBox
          android:id="@+id/checkbox"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="记住密码"
          android:layout_weight="1"
          android:layout_marginLeft="20dp"/>
      <Button
          android:id="@+id/btn_login"
          android:onClick="login"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="登录"
          android:layout_weight="1"
          android:background="@drawable/btn_select"
          android:layout_marginRight="20dp"/>
   </LinearLayout>
</RelativeLayout>

5.登录顶部背景设置login_topbg.xml,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#55FFFFFF"></solid>
    <corners android:radius="10dp"></corners>
</shape>

6.登录按钮选择时的设置btn_select.xml、btn_shape.xml、btn_shape_after.xml,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:andriod="http://schemas.android.com/apk/res/android">
    <item andriod:drawable="@drawable/btn_shape" andriod:state_pressed="false"/>
    <item andriod:drawable="@drawable/btn_shape_after" andriod:state_pressed="true"/>
</selector>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:andriod="http://schemas.android.com/apk/res/android">
    <solid andriod:color="#FF72CAE1"/>
    <corners andriod:radius="10dp"/>
</shape>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:andriod="http://schemas.android.com/apk/res/android">
    <solid andriod:color="#87cefa"/>
    <corners andriod:radius="10dp"/>
</shape>

7.登录主页面activity_main,图片和代码如下:


代码:
<?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_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/activity_horizontal_margin"
    tools:context="bzu.edu.cn.login.MainActivity"
    android:background="@drawable/loginbg">
  <include layout="@layout/login_top"></include>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@drawable/deer"
        android:id="@+id/imageView"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />
</RelativeLayout>

8.登录页面背景loginbg.xml,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:startColor="#FFACDAE5"
        android:endColor="#FF72CAE1"
        android:angle="45"/>
</shape>

9.java类UserInfo用于对用户信息的操作,代码如下:

package bzu.edu.cn.login;


import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by dpl on 2017/4/6 0006.
 */

public class UserInfo{         //用于用户信息的读取和保存
     public static Map<String,String> readInfo(){
         Map<String,String> map=new HashMap<String,String>();
         File file=new File("/data/data/bzu.edu.cn.login/UserInfo.txt");//指定文件存储位置
         try {
             FileInputStream fis=new FileInputStream(file);//文件输入流
             BufferedReader bfr=new BufferedReader(new InputStreamReader(fis));
             String content=bfr.readLine();//读取数据
             String[] splits=content.split("##");//切割字符串,映射到map集合中
             String name=splits[0];
             String pwd=splits[1];
             map.put("name",name);//将用户名和密码放入map中
             map.put("pwd",pwd);
             fis.close();
             return map;
         } catch (Exception e) {
             e.printStackTrace();
             return null;
         }
     }
    public static boolean saveInfo(String name,String pwd){
        String result=name+"##"+pwd;
        File file=new File("/data/data/bzu.edu.cn.login/UserInfo.txt");
        try {
            FileOutputStream fos=new FileOutputStream(file);//输入流
            fos.write(result.getBytes());
            fos.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
}

10.java主类MainActivity,代码如下:

package bzu.edu.cn.login;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import java.util.Map;

public class MainActivity extends AppCompatActivity {
    private EditText et_name;
    private EditText et_pass;
    private CheckBox cb_ischeck;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_name=(EditText)findViewById(R.id.etName);
        et_pass=(EditText)findViewById(R.id.etPass);
        cb_ischeck=(CheckBox)findViewById(R.id.checkbox);
        Map<String,String> map=UserInfo.readInfo();
        if(map!=null){
            String name=map.get("name");//取出用户名和密码
            String pwd=map.get("pwd");
            et_name.setText(name);//添加到EditText控件上
            et_pass.setText(pwd);
        }
    }
    public void login(View view){
        String name=et_name.getText().toString().trim();
        String pwd=et_pass.getText().toString().trim();
        if (TextUtils.isEmpty(name)||TextUtils.isEmpty(pwd)){
            Toast.makeText(MainActivity.this,"用户名或密码不能为空!",Toast.LENGTH_LONG).show();
        }else {
            Toast.makeText(MainActivity.this,"正在登陆",Toast.LENGTH_LONG).show();
        }
        if(cb_ischeck.isChecked()){
            boolean result=UserInfo.saveInfo(name,pwd);
            if(result){
                Toast.makeText(MainActivity.this,"保存成功",Toast.LENGTH_LONG).show();
            }else {
                Toast.makeText(MainActivity.this,"保存失败",Toast.LENGTH_LONG).show();
            }
        }else {
            Toast.makeText(MainActivity.this,"是否勾选记住密码?",Toast.LENGTH_LONG).show();
        }

    }
}

11.运行效果图:



12.重新打开软件如图:


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值