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; } } }
总体上代码还是非常简单的,有点复杂的地方都有注释,应该是一看就可以明白了。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。