<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(); } } } }