<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:gravity="center_horizontal" 里面的内容居中显示 android:orientation="vertical" 垂直排列 tools:context=".MainActivity" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/qq" /> <EditText android:id="@+id/et_qqnumber" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入QQ号码" > </EditText> <EditText android:id="@+id/et_password" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入密码" android:inputType="textPassword" /> <CheckBox android:id="@+id/cb_remember" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="记住用户名和密码" /> <Button android:onClick="login" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="登陆" /> </LinearLayout>
package com.itheima.qqlogin; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import android.app.Activity; 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 et_qqnumber; private EditText et_password; private CheckBox cb_remember; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//先加载界面在获取id //寻找这些控件 et_qqnumber = (EditText) findViewById(R.id.et_qqnumber); et_password = (EditText) findViewById(R.id.et_password); cb_remember = (CheckBox) findViewById(R.id.cb_remember); restoreInfo(); } /** * 登陆按钮的点击事件 * @param view */ public void login(View view){ String qq = et_qqnumber.getText().toString().trim(); String password = et_password.getText().toString().trim(); if(TextUtils.isEmpty(qq)||TextUtils.isEmpty(password)){ Toast.makeText(this, "用户名和密码不能为空", 0).show(); return; }else{ //判断是否需要记录用户名和密码 if(cb_remember.isChecked()){//被选中状态,需要记录用户名和密码 try { File file = new File(this.getFilesDir(),"info.txt");//安卓运行在手机里面,所以文件在手机里面, //每安装一个应用程序就会在手机的data/data/应用程序包名:下面创建一个应用程序的文件夹(文件夹的名字是应用程序的名字),这个文件夹是可以向里面读写数据的, FileOutputStream fos = new FileOutputStream(file); //10000##123456 String info = qq +"##"+password; fos.write(info.getBytes()); fos.close(); } catch (Exception e) { e.printStackTrace(); } } //登陆操作的. 模拟登陆,数据应该提交给服务器 由服务器比较是否正确 if("10000".equals(qq)&&"123456".equals(password)){ Toast.makeText(this, "登陆成功", 0).show(); }else{ Toast.makeText(this, "登陆失败", 0).show(); } } } /** * 根据原来保存的文件信息,把qq号码和密码信息回显到界面 * getFilesDir()//获取应用程序files目录 /data/data/包名/files/ 文件夹 */ public void restoreInfo(){ File file = new File(this.getFilesDir(),"info.txt"); if(file.exists()&&file.length()>0){ try { FileInputStream fis = new FileInputStream(file); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); //10000##123456 String info = br.readLine();//读一行最好用BufferedReader包装一下 String qq = info.split("##")[0]; String pwd = info.split("##")[1]; et_qqnumber.setText(qq); et_password.setText(pwd); } catch (Exception e) { e.printStackTrace(); } } } }