1. 程式人生 > >Android-密碼的明文顯示與隱藏

Android-密碼的明文顯示與隱藏

經常看到在很多登陸或者需要輸入密碼的介面都有一個CheckBox,名為顯示密碼。使用者輸入的密碼預設都是隱藏的,即都是以黑點或者星號代替,當勾選顯示密碼之後,使用者輸入的密碼就會顯示出來,成為可見狀態。實現方法很簡單,現在我們來看一下這種效果的實現方法。

首先需要在佈局檔案裡面放入一個文字控制元件TextView,用於提示使用者輸入密碼。還有一個編輯框和選擇框,即EditText和CheckBox。如下

<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" 
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="請輸入你的密碼:" />

    <EditText
        android:id="@+id/psw"
        android:layout_width="181dp"
        android:layout_height="wrap_content"
        android:password="true" />

    <CheckBox 
        android:id="@+id/check"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="顯示密碼"/>

</LinearLayout>
之後就是到java檔案中進行實現了。不多說,程式碼:
public class MainActivity extends Activity {
	private EditText psw = null;
	private CheckBox check = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		psw = (EditText) findViewById(R.id.psw);//取得EditText元件
		check = (CheckBox) findViewById(R.id.check);//取得CheckBox元件
		check.setOnClickListener(new CheckOnClickListener());
	}

	private class CheckOnClickListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			if (check.isChecked()) {  //當CheckBox被選中
				psw.setTransformationMethod(HideReturnsTransformationMethod
						.getInstance());  //密碼以明文顯示
			} else {
				psw.setTransformationMethod(PasswordTransformationMethod
						.getInstance());  //以密文顯示,以.代替
			}
		}
	}
}

效果如下,正是預料之中的效果:

      

通過效果可以發現,密碼預設輸入是以密文形式,當勾選顯示密碼後,密碼就顯示出來了。如果是先勾選顯示密碼,再輸入密碼,效果也是一樣的。