好久没写过代码了,现在又开始重操旧业了。想了想,还是回到优快云博客来吧,原本都是在Github上面自己弄
Pages写的,但是还是挺舍不得优快云的。在这里继续开写吧,反正都是一些菜鸟的流水账的东西。记录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;
}
}
}
总体上代码还是非常简单的,有点复杂的地方都有注释,应该是一看就可以明白了。