android 仿记事本登陆

来源:互联网 发布:网络跳线架 编辑:程序博客网 时间:2024/05/29 19:46

1、本应用主要实现首次输入五个密码后记住再输入一次然后登陆进去。

详细可下载代码,下载地址:http://download.csdn.net/detail/u011324501/9482383

2、SharedPreferences介绍:

SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置参数,它是采用xml文件存放数据的,文件存放在"/data/data<package name>/shared_prefs"目录下。

SharedPreferences的用法:

由于SharedPreferences是一个接口,而且在这个接口里没有提供写入数据和读取数据的能力。但它是通过其Editor接口中的一些方法来操作SharedPreference的,用法见下面代码:

Context.getSharedPreferences(String name,int mode)来得到一个SharedPreferences实例

name:是指文件名称,不需要加后缀.xml,系统会自动为我们添加上

mode:是指定读写方式,其值有三种,分别为:

Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写

Context.MODE_WORLD_READABLE指定该SharedPreferences数据能被其他应用程序读,但不能写

Context.MODE_WORLD_WRITEABLE指定该SharedPreferences数据能被其他应用程序读写

3、代码实现MainActivity.java

package com.example.login;import java.util.regex.Pattern;import android.os.Bundle;import android.os.Handler;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;/** * login * @author xing * */public class MainActivity extends Activity  implements OnClickListener {Boolean flag;@SuppressWarnings("unused")private TextView display; private Button c,clear,cancel,helplogin; private Button[] btnNum = new Button[10];// 数值按钮  private EditText[] editNum = new EditText[5];// 数值按钮  int number = 0; int number1 = 0; int editnumber = 0; String num="",num1="",num2="",num3="",num4="";//定义5个输入密码@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);initUi();}private void initUi() {// TODO Auto-generated method stubhelplogin = (Button)findViewById(R.id.helplogin);helplogin.setOnClickListener(new helploginListener());c = (Button)findViewById(R.id.c);c.setOnClickListener(new cListener());clear = (Button)findViewById(R.id.clear);clear.setOnClickListener(new clearListener());cancel = (Button)findViewById(R.id.cancel);cancel.setOnClickListener(new cancelListener());display = (TextView)findViewById(R.id.display);editNum[0] = (EditText)findViewById(R.id.editone);editNum[1] = (EditText)findViewById(R.id.edittwo);editNum[2] = (EditText)findViewById(R.id.editthree);editNum[3] = (EditText)findViewById(R.id.editfour);editNum[4] = (EditText)findViewById(R.id.editfive);// TODO Auto-generated method stubbtnNum[0] = (Button)findViewById(R.id.one);         btnNum[1] = (Button)findViewById(R.id.two);         btnNum[2] = (Button)findViewById(R.id.three);         btnNum[3] = (Button)findViewById(R.id.four);         btnNum[4] = (Button)findViewById(R.id.five);         btnNum[5] = (Button)findViewById(R.id.six);         btnNum[6] = (Button)findViewById(R.id.seven);         btnNum[7] = (Button)findViewById(R.id.eight);         btnNum[8] = (Button)findViewById(R.id.nine);         btnNum[9] = (Button)findViewById(R.id.zero);          read();                //给全部按钮添加监听器        for(int i=0;i<10;i++){        btnNum[i].setOnClickListener(this);        }}//刷新线程,没用,输入一个密码就会不能再输入private Handler handler = new Handler();private Runnable runnable = new Runnable() {         public void run () {         read();         handler.postDelayed(this,1000);       }    };        /**  * 读取sharedpreference数据  */ public void read(){  SharedPreferences ferences=getSharedPreferences("softinfo",0);            num=ferences.getString("editNum[0]", "");            num1=ferences.getString("editNum[1]", "");           num2=ferences.getString("editNum[2]", "");           num3=ferences.getString("editNum[3]", "");           num4=ferences.getString("editNum[4]", "");  }/** * 所有数字控件的监听器 */@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//对密码进行判断如果任意一个为空就继续执行if((num.equals(""))||(num.equals(""))||(num.equals(""))||(num.equals(""))||(num.equals(""))){         SharedPreferences preferences=getSharedPreferences("softinfo",Context.MODE_WORLD_READABLE);            Editor edit=preferences.edit();  Button btn1 = (Button) v;          String input1 = btn1.getText().toString();          editNum[number1].setText(input1);         number1++;                           if(number1>4){ number1 = 0; for(int i=0;i<10;i++){ btnNum[i].setEnabled(false); } }           //第一次输入数据保存到sharedpreference         edit.putString("editNum[0]", editNum[0].getText().toString());           edit.putString("editNum[1]", editNum[1].getText().toString());         edit.putString("editNum[2]", editNum[2].getText().toString());         edit.putString("editNum[3]", editNum[3].getText().toString());         edit.putString("editNum[4]", editNum[4].getText().toString());         edit.commit();         if(number1 ==3){         Toast.makeText(getApplication(), "输完后请再输入一次密码", Toast.LENGTH_SHORT).show();         } }   //判断输入的密码是否被记录了,如果都有了就执行匹配,匹配对了就跳转到firstpage页面 if(isNumeric(num)&&isNumeric(num1)&&isNumeric(num2)&&isNumeric(num3)&&isNumeric(num4)){  Button btn = (Button) v;          String input = btn.getText().toString();          editNum[number].setText(input);         //判断如果输入密码与首次输入密码相同则跳转到firstFage         // display.setText(input);         if((num.equals(editNum[0].getText().toString()))&&(num1.equals(editNum[1].getText().toString()))&&(num2.equals(editNum[2].getText().toString()))       &&(num3.equals(editNum[3].getText().toString()))&&(num4.equals(editNum[4].getText().toString()))){                 Intent intent = new Intent(MainActivity.this,TextActivity.class);        startActivity(intent);     }         editnumber++;         if(editnumber>4){editnumber=4;}         number++;                           if(number>4){ number = 0; //输完密码后设置控件为不可操作状态 for(int i=0;i<10;i++){ btnNum[i].setEnabled(false); } }   }}/** * 判断是否是0-9数字 * @param str * @return pattern.matcher(str).matches() */public static boolean isNumeric(String str){     Pattern pattern = Pattern.compile("[0-9]*");     return pattern.matcher(str).matches();    } /** * 帮助 * @author xing * */public class helploginListener implements OnClickListener{@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubdialog();}}/** * 帮助对话框 */protected void dialog() {  AlertDialog.Builder builder = new Builder(this);  builder.setMessage(R.string.helpcontent);   builder.setIcon(R.drawable.ic_launcher);  builder.setTitle("温馨提示");   builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {     public void onClick(DialogInterface dialog, int which) {      }  });   builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {     public void onClick(DialogInterface dialog, int which) {     }  });   builder.create().show();}  public class cListener implements OnClickListener{@Overridepublic void onClick(View arg0) {read();  btnsetEnabled();number--;if(number<0){number=0;}editNum[editnumber].setText("");editnumber--;if(editnumber<0){editnumber=0;}}  } /**  * 清空数据监听器  * @author aeon  *  */ public class clearListener implements OnClickListener{@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubfor(int i=0;i<5;i++){editNum[i].setText("");}btnsetEnabled();read(); }  } /**  * 退出监听器  * @author aeon  *  */ public class cancelListener implements OnClickListener{@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubfinish();}  }  @Overrideprotected void onDestroy() {// TODO Auto-generated method stubfor(int i=0;i<10;i++){ btnNum[i].setEnabled(true); }handler.removeCallbacks(runnable);//停止定时器super.onDestroy();}/** * 设置控件可操作 */public void btnsetEnabled(){for(int i=0;i<10;i++){ btnNum[i].setEnabled(true); }}/** * onRestart时控件变为可操作状态,并清空密码显示 */@Overrideprotected void onRestart() {// TODO Auto-generated method stubsuper.onRestart();btnsetEnabled();//设置控件可操作//清空密码for(int i=0;i<5;i++){editNum[i].setText("");}}}
布局代码实现:main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#000000"    android:orientation="vertical" >    <LinearLayout        android:layout_marginTop="20dip"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">          <TextView        android:layout_marginLeft="10dip"        android:text="@string/chengxu"        android:layout_width="wrap_content"        android:textSize="20sp"        android:layout_height="wrap_content"/>    <Button        android:id="@+id/helplogin"        android:layout_marginLeft="180dip"        android:textColor="#ffffff"        android:background="#00000000"        android:text="@string/helplogin"            android:layout_width="wrap_content"        android:textSize="20sp"        android:layout_height="wrap_content"/>    </LinearLayout><LinearLayout    android:layout_marginTop="50dip"    android:layout_marginLeft="35dip"    android:layout_width="fill_parent"    android:layout_height="50dip"    android:orientation="horizontal">        <EditText               android:background="#ffffff"       android:padding="10sp"        android:inputType="textPassword"        android:id="@+id/editone"        android:maxLength="1"        android:layout_width="50dip"        android:layout_height="50dip"        android:layout_marginLeft="5dip"        />    <EditText        android:background="#ffffff"        android:inputType="textPassword"        android:id="@+id/edittwo"        android:maxLength="1"        android:layout_width="50dip"        android:layout_height="50dip"        android:layout_marginLeft="5dip"        />    <EditText        android:background="#ffffff"        android:inputType="textPassword"        android:id="@+id/editthree"        android:maxLength="1"        android:layout_width="50dip"        android:layout_height="50dip"        android:layout_marginLeft="5dip"        />    <EditText        android:background="#ffffff"        android:inputType="textPassword"        android:id="@+id/editfour"        android:maxLength="1"        android:layout_width="50dip"        android:layout_height="50dip"        android:layout_marginLeft="5dip"        />    <EditText        android:background="#ffffff"        android:inputType="textPassword"        android:id="@+id/editfive"        android:maxLength="1"        android:layout_width="50dip"        android:layout_height="50dip"        android:layout_marginLeft="5dip"        />    </LinearLayout>    <LinearLayout        android:layout_marginTop="100dip"        android:layout_marginLeft="20dip"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="horizontal">    <Button        android:id="@+id/one"        android:text="@string/one"        android:layout_width="105dip"        android:layout_height="wrap_content"/>    <Button        android:id="@+id/two"        android:text="@string/two"        android:layout_width="105dip"        android:layout_height="wrap_content"/>    <Button        android:id="@+id/three"        android:text="@string/three"        android:layout_width="105dip"        android:layout_height="wrap_content"/>        </LinearLayout><LinearLayout    android:layout_marginLeft="20dip"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">    <Button        android:id="@+id/four"        android:text="@string/four"        android:layout_width="105dip"        android:layout_height="wrap_content"/>    <Button        android:id="@+id/five"        android:text="@string/five"        android:layout_width="105dip"        android:layout_height="wrap_content"/>    <Button        android:id="@+id/six"        android:text="@string/six"        android:layout_width="105dip"        android:layout_height="wrap_content"/>        </LinearLayout><LinearLayout    android:layout_marginLeft="20dip"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="horizontal">    <Button        android:id="@+id/seven"        android:text="@string/seven"        android:layout_width="105dip"        android:layout_height="wrap_content"/>    <Button        android:id="@+id/eight"        android:text="@string/eight"        android:layout_width="105dip"        android:layout_height="wrap_content"/>    <Button        android:id="@+id/nine"        android:text="@string/nine"        android:layout_width="105dip"        android:layout_height="wrap_content"/>        </LinearLayout><LinearLayout    android:layout_marginLeft="20dip"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="horizontal">    <Button        android:id="@+id/c"        android:text="@string/c"        android:layout_width="105dip"        android:layout_height="wrap_content"/>    <Button        android:id="@+id/zero"        android:text="@string/zero"        android:layout_width="105dip"        android:layout_height="wrap_content"/>    <Button        android:id="@+id/clear"        android:text="@string/clear"        android:layout_width="105dip"        android:layout_height="wrap_content"/>        </LinearLayout>    <Button        android:layout_marginLeft="20dip"        android:layout_marginRight="10dip"        android:id="@+id/cancel"        android:text="@string/cancel"        android:layout_width="315dip"        android:layout_height="wrap_content"/>        <TextView            android:id="@+id/display"        android:layout_marginTop="20dip"        android:layout_width="fill_parent"        android:textSize="20sp"        android:layout_height="wrap_content"/></LinearLayout>
strings.xml

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="app_name">Login</string>    <string name="action_settings">Settings</string>    <string name="hello_world">Hello world!</string>    <!-- login --><string name="one">1</string><string name="two">2</string><string name="three">3</string><string name="four">4</string><string name="five">5</string><string name="six">6</string><string name="seven">7</string><string name="eight">8</string><string name="nine">9</string><string name="zero">0</string><string name="cancel">退出</string><string name="c">c</string><string name="clear">clear</string><string name="helplogin">帮助</string><string name="chengxu">程序加密</string><string name="helpcontent">主要实现密码登陆。第一次输完后请点击clear,再输入第二次。</string><string name="otehr">另一个界面</string></resources>

详细可下载代码,下载地址:http://download.csdn.net/detail/u011324501/9482383





1 0