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
- android 仿记事本登陆
- Android仿QQ登陆
- Android仿QQ登陆
- Android仿QQ登陆
- 仿记事本
- Android之高仿记事本、备忘录、便签
- Android之高仿记事本、备忘录、便签
- Android仿qq登陆界面
- C#仿记事本代码
- java 仿window记事本
- wxpython仿写记事本
- Android 高仿QQ 登陆界面
- Android 仿instagram登陆页面动画
- android 仿QQ登陆界面实现
- Android仿QQ登陆窗口实现原理
- C#版仿WINXP记事本
- 初学Java:仿写记事本
- java 编写仿xp记事本
- QC ALM 11 邮箱设置
- 【java虚拟机系列】java虚拟机系列之JVM总述
- 在Web站点中创建和使用Rss源
- GIT 分布式 SVN 集中式 版本控制系统
- sql 随笔
- android 仿记事本登陆
- linux安装编译配置ffmpeg
- modal
- 论文总结: 2009-Pedestrian Detection: A Benchmark
- Android Studio中如何引用so文件
- 判断 iframe 是否加载完成的完美方法
- 将博客搬至CSDN
- GIT常用命令
- unity源码解析Transform