Android 一个简单的登陆窗口的实现(文件的保存与读取)

好久没写过代码了,现在又开始重操旧业了。想了想,还是回到CSDN博客来吧,原本都是在Github上面自己弄

Pages写的,但是还是挺舍不得CSDN的。在这里继续开写吧,反正都是一些菜鸟的流水账的东西。记录Mark一下。

今天写的是一个简单的登陆界面,主要功能就是实现记住密码这个简单的功能,说白了就是在Android中实现文件

的保存与再次的读取。

首先是布局文件,很简单的线性布局。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="please input username" />

    <EditText
        android:id="@+id/et_username"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="text" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="please input password" />

    <EditText
        android:id="@+id/et_password"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword" />

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <CheckBox
            android:id="@+id/check_box"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="记住密码" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:onClick="loginIn"
            android:text="登陆" />
    </RelativeLayout>

</LinearLayout>


然后就是主要的代码了,为了简单几乎都写到一起了,虽然很不规范,但是基础学习嘛,暂且这样了


package com.bird.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;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

	private EditText username;
	private EditText password;
	private CheckBox cb;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		username = (EditText) findViewById(R.id.et_username);
		password = (EditText) findViewById(R.id.et_password);
		cb = (CheckBox) findViewById(R.id.check_box);
		
		//检查是否有保存的数据
		Map<String,String> map = getSavedInfo(this);
		if(map!=null){
			username.setText(map.get("username"));
			password.setText(map.get("password"));
		}
	}

	// 登陆的点击事件
	public void loginIn(View view) {
		String user = username.getText().toString().trim();
		String pass = password.getText().toString().trim();
		if (TextUtils.isEmpty(user) || TextUtils.isEmpty(pass)) {
			Toast.makeText(this, "用户名或者密码不能为空", Toast.LENGTH_SHORT).show();
			return;
		}
		//判断是否保存用户名密码
		if(cb.isChecked()){
			//保存用户名密码
			boolean result = saveUserInfo(this,user,pass);
			if(result){
				 Toast.makeText(this, "保存数据成功", Toast.LENGTH_LONG);
			}else{
				Toast.makeText(this, "数据保存失败", Toast.LENGTH_LONG);
			}
			
			
		}
		
		//登陆
		if("admin".equals(user)&&"admin".equals(pass)){
			Toast.makeText(this, "登陆成功", Toast.LENGTH_LONG).show();
		}else{
			Toast.makeText(this, "用户名或者密码错误", Toast.LENGTH_LONG).show();
		}
	}
	
	public boolean saveUserInfo(Context context, String username,String password){
		/**
		 * context is a 上下文类,保存应用的上线问信息包括安装的目录等等东西 
		 */
		File file = new File(context.getCacheDir(),"info.txt");
		try {
			FileOutputStream fos = new FileOutputStream(file);
			fos.write((username+"##"+password).getBytes());
			fos.close();
			return true;
		} catch (Exception e) {
			return false;
		}
	}
	
	
	public Map<String,String> getSavedInfo(Context context){
		
		try {
			File file = new File(context.getCacheDir(),"info.txt");
			FileInputStream fis;
			fis = new FileInputStream(file);
			BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
			String str = reader.readLine();
			reader.close();
			String[] infos = str.split("##");
			Map<String,String> map = new HashMap<String,String>();
			map.put("username", infos[0]);
			map.put("password", infos[1]);
			
			return map;
		} catch (Exception e) {
			return null;
		}
		
	}

}


总体上代码还是非常简单的,有点复杂的地方都有注释,应该是一看就可以明白了。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。