android 仿记事本登陆

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个输入密码

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		initUi();
	}

	private void initUi() {
		// TODO Auto-generated method stub
		helplogin = (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 stub
		btnNum[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]", ""); 
	 }

	/**
	 * 所有数字控件的监听器
	 */
	@Override
	public 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{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			dialog();
		}
		
	}
	/**
	 * 帮助对话框
	 */
	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{

		@Override
		public 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{

		@Override
		public void onClick(View arg0) {
			// TODO Auto-generated method stub
			for(int i=0;i<5;i++){
				editNum[i].setText("");				
			}
			btnsetEnabled();
			read(); 
			
		}
		 
	 }
	 /**
	  * 退出监听器
	  * @author aeon
	  *
	  */
	 public class cancelListener implements OnClickListener{

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				finish();
			}
			 
		 }
	 
	 @Override
		protected void onDestroy() {
			// TODO Auto-generated method stub
			for(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时控件变为可操作状态,并清空密码显示
		 */
		@Override
		protected void onRestart() {
			// TODO Auto-generated method stub
			super.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





  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值