Android實(shí)現(xiàn)顯示和隱藏密碼功能的示例代碼
在前端中我們知道用javascript就可以可以很容易實(shí)現(xiàn),那么在Android中怎么實(shí)現(xiàn)這個(gè)功能呢?
Java代碼
package com.example.test2; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.text.method.HideReturnsTransformationMethod; import android.text.method.PasswordTransformationMethod; import android.view.View; import android.widget.EditText; import android.widget.ImageView; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private EditText password; private ImageView imageView; private boolean flag=true; private HideReturnsTransformationMethod method_show; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); password = findViewById(R.id.password); imageView = findViewById(R.id.img); imageView.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.img: changeImage(); } } private void changeImage() { // todo 每次進(jìn)入登陸時(shí)輸入的密碼都是隱藏的 PasswordTransformationMethod methodHide=PasswordTransformationMethod.getInstance(); password.setTransformationMethod(methodHide); if(flag){ imageView.setImageDrawable(this.getResources().getDrawable(R.drawable.eye1)); flag=false; // todo 隱藏密碼 PasswordTransformationMethod method_hide = PasswordTransformationMethod.getInstance(); password.setTransformationMethod(method_hide); } else{ imageView.setImageDrawable(this.getResources().getDrawable(R.drawable.eye2)); flag=true; // todo 顯示密碼 method_show= HideReturnsTransformationMethod.getInstance(); password.setTransformationMethod(method_show); } if (!password.getText().toString().trim().equals("")) { password.setSelection(password.getText().toString().trim().length());//將光標(biāo)移至文字末尾 } } }
布局代碼
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:background="@color/white" android:orientation="horizontal" > <EditText android:id="@+id/password" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:layout_gravity="center_vertical" android:layout_marginLeft="10dp" android:inputType="textPassword" android:hint="請?jiān)O(shè)置登錄密碼" android:background="@null"/> <button android:id="@+id/btn" android:layout_width="89dp" android:layout_height="match_parent" android:background="@drawable/eye2"/> </LinearLayout> </LinearLayout>
睜眼閉眼資源
Activity 類是 Android 應(yīng)用的關(guān)鍵組件,而 Activity 的啟動(dòng)和組合方式則是該平臺(tái)應(yīng)用模型的基本組成部分。在編程范式中,應(yīng)用是通過 main() 方法啟動(dòng)的,而 Android 系統(tǒng)與此不同,它會(huì)調(diào)用與其生命周期特定階段相對應(yīng)的特定回調(diào)方法來啟動(dòng) Activity 實(shí)例中的代碼。
本文介紹了 Activity 的概念,并提供了有關(guān)如何使用 Activity 的簡要說明。
Activity 的概念
移動(dòng)應(yīng)用體驗(yàn)與桌面體驗(yàn)的不同之處在于,用戶與應(yīng)用的互動(dòng)并不總是在同一位置開始,而是經(jīng)常以不確定的方式開始。例如,如果您從主屏幕打開電子郵件應(yīng)用,可能會(huì)看到電子郵件列表,如果您通過社交媒體應(yīng)用啟動(dòng)電子郵件應(yīng)用,則可能會(huì)直接進(jìn)入電子郵件應(yīng)用的郵件撰寫界面。
Activity 類的目的就是促進(jìn)這種范式的實(shí)現(xiàn)。當(dāng)一個(gè)應(yīng)用調(diào)用另一個(gè)應(yīng)用時(shí),調(diào)用方應(yīng)用會(huì)調(diào)用另一個(gè)應(yīng)用中的 Activity,而不是整個(gè)應(yīng)用。通過這種方式,Activity 充當(dāng)了應(yīng)用與用戶互動(dòng)的入口點(diǎn)。您可以將 Activity 實(shí)現(xiàn)為 Activity 類的子類。
Activity 提供窗口供應(yīng)用在其中繪制界面。此窗口通常會(huì)填滿屏幕,但也可能比屏幕小,并浮動(dòng)在其他窗口上面。通常,一個(gè) Activity 實(shí)現(xiàn)應(yīng)用中的一個(gè)屏幕。例如,應(yīng)用中的一個(gè) Activity 實(shí)現(xiàn)“偏好設(shè)置”屏幕,而另一個(gè) Activity 實(shí)現(xiàn)“選擇照片”屏幕。
大多數(shù)應(yīng)用包含多個(gè)屏幕,這意味著它們包含多個(gè) Activity。通常,應(yīng)用中的一個(gè) Activity 會(huì)被指定為主 Activity,這是用戶啟動(dòng)應(yīng)用時(shí)出現(xiàn)的第一個(gè)屏幕。然后,每個(gè) Activity 可以啟動(dòng)另一個(gè) Activity,以執(zhí)行不同的操作。例如,一個(gè)簡單的電子郵件應(yīng)用中的主 Activity 可能會(huì)提供顯示電子郵件收件箱的屏幕。主 Activity 可能會(huì)從該屏幕啟動(dòng)其他 Activity,以提供執(zhí)行寫郵件和打開郵件這類任務(wù)的屏幕。
雖然應(yīng)用中的各個(gè) Activity 協(xié)同工作形成統(tǒng)一的用戶體驗(yàn),但每個(gè) Activity 與其他 Activity 之間只存在松散的關(guān)聯(lián),應(yīng)用內(nèi)不同 Activity 之間的依賴關(guān)系通常很小。事實(shí)上,Activity 經(jīng)常會(huì)啟動(dòng)屬于其他應(yīng)用的 Activity。例如,瀏覽器應(yīng)用可能會(huì)啟動(dòng)社交媒體應(yīng)用的“分享”Activity。
要在應(yīng)用中使用 Activity,您必須在應(yīng)用的清單中注冊關(guān)于 Activity 的信息,并且必須適當(dāng)?shù)毓芾?Activity 的生命周期。本文的后續(xù)內(nèi)容將介紹這些主題。
配置清單
要使應(yīng)用能夠使用 Activity,您必須在清單中聲明 Activity 及其特定屬性。
聲明 Activity
要聲明 Activity,請打開清單文件,并添加 元素作為 元素的子元素。例如:
<manifest ... > <application ... > <activity android:name=".ExampleActivity" /> ... </application ... > ... </manifest >
此元素唯一的必要屬性是 android:name,該屬性用于指定 Activity 的類名稱。您也可以添加用于定義標(biāo)簽、圖標(biāo)或界面主題等 Activity 特征的屬性。如需詳細(xì)了解上述及其他屬性,請參閱 元素參考文檔。
注意:發(fā)布應(yīng)用后,就不應(yīng)再更改 Activity 名稱,否則可能會(huì)破壞某些功能,例如應(yīng)用快捷方式。
聲明 intent 過濾器
Intent 過濾器是 Android 平臺(tái)的一項(xiàng)非常強(qiáng)大的功能。借助這項(xiàng)功能,您不但可以根據(jù)顯式請求啟動(dòng) Activity,還可以根據(jù)隱式請求啟動(dòng) Activity。例如,顯式請求可能會(huì)告訴系統(tǒng)“在 Gmail 應(yīng)用中啟動(dòng)‘發(fā)送電子郵件’Activity”,而隱式請求可能會(huì)告訴系統(tǒng)“在任何能夠完成此工作的 Activity 中啟動(dòng)‘發(fā)送電子郵件’屏幕”。當(dāng)系統(tǒng)界面詢問用戶使用哪個(gè)應(yīng)用來執(zhí)行任務(wù)時(shí),這就是 intent 過濾器在起作用。
要使用此功能,您需要在 元素中聲明 屬性。此元素的定義包括 元素,以及可選的 元素和/或 元素。這些元素組合在一起,可以指定 Activity 能夠響應(yīng)的 intent 類型。例如,以下代碼段展示了如何配置一個(gè)發(fā)送文本數(shù)據(jù)并接收其他 Activity 的文本數(shù)據(jù)發(fā)送請求的 Activity:
<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon"> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> </activity>
管理 Activity 生命周期 一個(gè) Activity 在其生命周期中會(huì)經(jīng)歷多種狀態(tài)。您可以使用一系列回調(diào)來處理狀態(tài)之間的轉(zhuǎn)換。下面幾節(jié)將介紹這些回調(diào)。
onCreate()
您必須實(shí)現(xiàn)此回調(diào),它會(huì)在系統(tǒng)創(chuàng)建您的 Activity 時(shí)觸發(fā)。您的實(shí)現(xiàn)應(yīng)該初始化 Activity 的基本組件:例如,您的應(yīng)用應(yīng)該在此處創(chuàng)建視圖并將數(shù)據(jù)綁定到列表。最重要的是,您必須在此處調(diào)用 setContentView() 來定義 Activity 界面的布局。
onCreate() 完成后,下一個(gè)回調(diào)將是 onStart()。
onStart()
onCreate() 退出后,Activity 將進(jìn)入“已啟動(dòng)”狀態(tài),并對用戶可見。此回調(diào)包含 Activity 進(jìn)入前臺(tái)與用戶進(jìn)行互動(dòng)之前的最后準(zhǔn)備工作。
onResume()
系統(tǒng)會(huì)在 Activity 開始與用戶互動(dòng)之前調(diào)用此回調(diào)。此時(shí),該 Activity 位于 Activity 堆棧的頂部,并會(huì)捕獲所有用戶輸入。應(yīng)用的大部分核心功能都是在 onResume() 方法中實(shí)現(xiàn)的。
onResume() 回調(diào)后面總是跟著 onPause() 回調(diào)。
onPause()
當(dāng) Activity 失去焦點(diǎn)并進(jìn)入“已暫停”狀態(tài)時(shí),系統(tǒng)就會(huì)調(diào)用 onPause()。例如,當(dāng)用戶點(diǎn)按“返回”或“最近使用的應(yīng)用”按鈕時(shí),就會(huì)出現(xiàn)此狀態(tài)。當(dāng)系統(tǒng)為您的 Activity 調(diào)用 onPause() 時(shí),從技術(shù)上來說,這意味著您的 Activity 仍然部分可見,但大多數(shù)情況下,這表明用戶正在離開該 Activity,該 Activity 很快將進(jìn)入“已停止”或“已恢復(fù)”狀態(tài)。
如果用戶希望界面繼續(xù)更新,則處于“已暫停”狀態(tài)的 Activity 也可以繼續(xù)更新界面。例如,顯示導(dǎo)航地圖屏幕或播放媒體播放器的 Activity 就屬于此類 Activity。即使此類 Activity 失去了焦點(diǎn),用戶仍希望其界面繼續(xù)更新。
您不應(yīng)使用 onPause() 來保存應(yīng)用或用戶數(shù)據(jù)、進(jìn)行網(wǎng)絡(luò)呼叫或執(zhí)行數(shù)據(jù)庫事務(wù)。有關(guān)保存數(shù)據(jù)的信息,請參閱保存和恢復(fù) Activity 狀態(tài)。
onPause() 執(zhí)行完畢后,下一個(gè)回調(diào)為 onStop()或 onResume(),具體取決于 Activity 進(jìn)入“已暫停”狀態(tài)后發(fā)生的情況。
onStop()
當(dāng) Activity 對用戶不再可見時(shí),系統(tǒng)會(huì)調(diào)用 onStop()。出現(xiàn)這種情況的原因可能是 Activity 被銷毀,新的 Activity 啟動(dòng),或者現(xiàn)有的 Activity 正在進(jìn)入“已恢復(fù)”狀態(tài)并覆蓋了已停止的 Activity。在所有這些情況下,停止的 Activity 都將完全不再可見。
系統(tǒng)調(diào)用的下一個(gè)回調(diào)將是 onRestart()(如果 Activity 重新與用戶互動(dòng))或者 onDestroy()(如果 Activity 徹底終止)。
onRestart()
當(dāng)處于“已停止”狀態(tài)的 Activity 即將重啟時(shí),系統(tǒng)就會(huì)調(diào)用此回調(diào)。onRestart() 會(huì)從 Activity 停止時(shí)的狀態(tài)恢復(fù) Activity。
此回調(diào)后面總是跟著 onStart()。
onDestroy()
系統(tǒng)會(huì)在銷毀 Activity 之前調(diào)用此回調(diào)。
此回調(diào)是 Activity 接收的最后一個(gè)回調(diào)。通常,實(shí)現(xiàn) onDestroy() 是為了確保在銷毀 Activity 或包含該 Activity 的進(jìn)程時(shí)釋放該 Activity 的所有資源。
以上就是Android實(shí)現(xiàn)顯示和隱藏密碼功能的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Android顯示 隱藏密碼的資料請關(guān)注腳本之家其它相關(guān)文章!
- Android實(shí)現(xiàn)密碼隱藏和顯示
- Android 登錄頁面的實(shí)現(xiàn)代碼(密碼顯示隱藏、EditText 圖標(biāo)切換、限制輸入長度)
- Android中實(shí)現(xiàn)密碼的隱藏和顯示的示例
- Android EditText密碼的隱藏和顯示功能
- Android 密碼 顯示與隱藏功能實(shí)例
- Android中實(shí)現(xiàn)EditText密碼顯示隱藏的方法
- Android文本輸入框(EditText)輸入密碼時(shí)顯示與隱藏
- Android實(shí)現(xiàn)動(dòng)態(tài)顯示或隱藏密碼輸入框的內(nèi)容
- Android中EditText顯示明文與密碼的兩種方式
- Android開發(fā)EditText實(shí)現(xiàn)密碼顯示隱藏
相關(guān)文章
Kotlin中Stack與LinkedList的實(shí)現(xiàn)方法示例
這篇文章主要給大家介紹了關(guān)于Kotlin中Stack與LinkedList實(shí)現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06Android編程實(shí)現(xiàn)禁止?fàn)顟B(tài)欄下拉的方法詳解
這篇文章主要介紹了Android編程實(shí)現(xiàn)禁止?fàn)顟B(tài)欄下拉的方法,結(jié)合實(shí)例形式詳細(xì)分析了Android狀態(tài)欄操作相關(guān)的函數(shù)、屬性調(diào)用及權(quán)限控制設(shè)置技巧,需要的朋友可以參考下2017-08-08Android如何判斷一個(gè)點(diǎn)在不在多邊形區(qū)域內(nèi)
這篇文章主要為大家詳細(xì)介紹了Android判斷一個(gè)點(diǎn)在不在多邊形區(qū)域內(nèi)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Android提高之MediaPlayer播放網(wǎng)絡(luò)音頻的實(shí)現(xiàn)方法
這篇文章主要介紹了Android的MediaPlayer播放網(wǎng)絡(luò)音頻的實(shí)現(xiàn)方法,很實(shí)用的功能,需要的朋友可以參考下2014-08-08Android應(yīng)用中仿今日頭條App制作ViewPager指示器
這篇文章主要介紹了Android應(yīng)用中仿今日頭條App制作ViewPager指示器的例子,一般就是導(dǎo)航條在翻頁時(shí)的動(dòng)態(tài)字體變色效果,需要的朋友可以參考下2016-04-04