Android設計登入介面、找回密碼、註冊功能
這篇文章主要為大家詳細介紹了Android設計登入介面的方法,Android實現找回密碼、註冊功能,感興趣的小夥伴們可以參考一下
1.資料庫的設計
我在資料庫中添加了兩張表,一張表用來儲存使用者資訊,諸如使用者名稱,密碼,手機號等,可任意新增。另一張表用來儲存上一個登入使用者的賬戶資訊,我是為了方便才另外建立了一張表去儲存,而且這張表我設計了它只能儲存一條資訊,每次的儲存都是對上一條記錄的覆蓋。事實上,我嘗試過在儲存使用者資訊的那張表內新增一個標識,用來標記上一次登入的是哪一個帳號,但是這樣做的話,每次改變標識都需要遍歷整張表,十分的麻煩,而且我也不知道有什麼更高效的方法,畢竟水平有限,在這方面涉水頗淺,如果看了這篇文章的人知道更有效方便的方法,請教教我,謝謝。
關於建表語句就不多說了,但是有唯一一點值得一提的是,根據Google官方 的建議,我們應該統一的將建表語句放置在一個終極類中,當然對於我們的全域性變數也是一個道理,這樣方便管理,當你需要改變某一全域性資訊時,可直接找到,方便日後的維護。比如我的終極類就是下面這樣 ->
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
public
final class GlobeManager {
public
GlobeManager() { }
public
static abstract
class UserInfo {
public
static final
String ID = "id" ;
public
static final
String USERNAME = "username" ;
public
static final
String USERPASSWORD = "password" ;
public
static final
String TABLENAME = "usertable" ;
public
static final
String DATABASENAME = "userdatabse" ;
public static final
String PHONENUMBER = "phone" ;
public
static final
String CREATE_TABLE = "create table "
+ TABLENAME + "("
+ ID +
" integer primary key autoincrement,"
+ USERNAME +
" text,"
+ PHONENUMBER +
" text,"
+ USERPASSWORD +
" text)" ;
}
public
static String PHONEKEY =
"phonekey" ;
public
static abstract
class RecentUsers {
public
static final
String ID = "id" ;
public
static final
String RECENTNAME = "recentname" ;
public
static final
String RECENTPASSWORD = "recentpassword" ;
public
static final
String ONLYKEY = "key" ;
public
static final
String TABLENAME = "recenttable" ;
public
static final
String CREATE_TABLE= "create table " + TABLENAME + "("
+ID +
" integer primary key autoincrement,"
+RECENTNAME +
" text,"
+RECENTPASSWORD + " text,"
+ONLYKEY +
" text)" ;
}
}
|
2.首先看看登入介面
概要設計
Sign in 按鈕設定監聽事件,當用戶點選該按鈕時,首先獲取到使用者在App ID 和 Password 輸入控制元件中輸入的資訊,然後對資訊進行以下判斷。
1).首先使用 TextUtils 中的 isEmpty() 方法判斷輸入資訊是否為空(TextUtils.isEmpty() 這個方法對於引數為空或者”” 都會返回true)
2).在上一步驟正確執行之後,接下來就是將已經獲取到的使用者名稱和密碼與資料庫中的資訊進行匹配 ,這個工作要由一個專門的資料庫管理類來完成,不可在Activity中進行此類操作,要根據單一職責原則來設計類。
3).若在資料庫中查詢到相關的使用者名稱和密碼就返回這個使用者類,將資訊封裝在其中,如果沒有查到,就返回一個null,方便Activity 進行判斷。
3.註冊介面
關於 App ID 和 Password 的輸入,要注意進行相應合法性判斷,其次就是這個手機號碼,在真實專案中,這個選項應該有傳送驗證碼的功能,因為手機號是可以用於帳號密碼找回的,非常重要。
4.密碼找回
這裡只有一個 輸入手機號碼的控制元件,輸入時要進行合法性判斷,比如說如果位數小於11,那麼就可以直接進行提示,而不是先去資料庫中找一遍,那樣效率是非常低的。如果輸入的手機號是合法性的,在到資料庫中去尋找,如果找到了,顯示使用者的資訊 ->
在這裡,提供了一個修改密碼的功能,畢竟如果使用者忘記了原先的密碼,可能會想要修改密碼的,在檢視具體資訊時能直接修改是非常人性化的設計。
5.關於AlertDialog.Builder
有時候,AlertDialog.Builder 提供給我們的樣式是不能夠滿足我們的,比如我想將PositiveButton 和 NegativeButton 設定成和我們主題一致的顏色,那麼就需要自定義一個style,如下
?1 2 3 4 5 6 7 8 9 10 |
<style name= "MyAlertDialog"
parent= "Theme.AppCompat.Light.Dialog.Alert" >
//用於改變Button 的顏色
<item name= "android:colorAccent" >@color/colorAccent</item>
//用於改變Message 字的顏色
<item name= "android:textColorPrimary" > #000000 </item>
</style>
//用於改變Dialog 的背景顏色
<item name= "android:background" > #4CAF50 </item>
|
然後只需要在程式碼中這樣宣告,就可以使用自定義樣式了
1.資料庫的設計
我在資料庫中添加了兩張表,一張表用來儲存使用者資訊,諸如使用者名稱,密碼,手機號等,可任意新增。另一張表用來儲存上一個登入使用者的賬戶資訊,我是為了方便才另外建立了一張表去儲存,而且這張表我設計了它只能儲存一條資訊,每次的儲存都是對上一條記錄的覆蓋。事實上,我嘗試過在儲存使用者資訊的那張表內新增一個標識,用來標記上一次登入的是哪一個帳號,但是這樣做的話,每次改變標識都需要遍歷整張表,十分的麻煩,而且我也不知道有什麼更高效的方法,畢竟水平有限,在這方面涉水頗淺,如果看了這篇文章的人知道更有效方便的方法,請教教我,謝謝。
關於建表語句就不多說了,但是有唯一一點值得一提的是,根據Google官方 的建議,我們應該統一的將建表語句放置在一個終極類中,當然對於我們的全域性變數也是一個道理,這樣方便管理,當你需要改變某一全域性資訊時,可直接找到,方便日後的維護。比如我的終極類就是下面這樣 ->
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
public
final class GlobeManager {
public
GlobeManager() {
}
public
static abstract
class UserInfo {
public
static final
String ID = "id" ;
public
static final
String USERNAME = "username" ;
public
static final
String USERPASSWORD = "password" ;
public
static final
String TABLENAME = "usertable" ;
public
static final
String DATABASENAME = "userdatabse" ;
public
static final
String PHONENUMBER = "phone" ;
public
static final
String CREATE_TABLE = "create table "
+ TABLENAME + "("
+ ID +
" integer primary key autoincrement,"
+ USERNAME +
" text,"
+ PHONENUMBER +
" text,"
+ USERPASSWORD +
" text)" ;
}
public
static String PHONEKEY =
"phonekey" ;
public
static abstract
class RecentUsers {
public
static final
String ID = "id" ;
public
static final
String RECENTNAME = "recentname" ;
public
static final
String RECENTPASSWORD = "recentpassword" ;
public
static final
String ONLYKEY = "key" ;
public
static final
String TABLENAME = "recenttable" ;
public
static final
String CREATE_TABLE= "create table " + TABLENAME + "("
+ID +
" integer primary key autoincrement,"
+RECENTNAME +
" text,"
+RECENTPASSWORD + " text,"
+ONLYKEY +
" text)" ;
}
}
|
2.首先看看登入介面
概要設計
Sign in 按鈕設定監聽事件,當用戶點選該按鈕時,首先獲取到使用者在App ID 和 Password 輸入控制元件中輸入的資訊,然後對資訊進行以下判斷。
1).首先使用 TextUtils 中的 isEmpty() 方法判斷輸入資訊是否為空(TextUtils.isEmpty() 這個方法對於引數為空或者”” 都會返回true)
2).在上一步驟正確執行之後,接下來就是將已經獲取到的使用者名稱和密碼與資料庫中的資訊進行匹配 ,這個工作要由一個專門的資料庫管理類來完成,不可在Activity中進行此類操作,要根據單一職責原則來設計類。
3).若在資料庫中查詢到相關的使用者名稱和密碼就返回這個使用者類,將資訊封裝在其中,如果沒有查到,就返回一個null,方便Activity 進行判斷。
3.註冊介面
關於 App ID 和 Password 的輸入,要注意進行相應合法性判斷,其次就是這個手機號碼,在真實專案中,這個選項應該有傳送驗證碼的功能,因為手機號是可以用於帳號密碼找回的,非常重要。
4.密碼找回
這裡只有一個 輸入手機號碼的控制元件,輸入時要進行合法性判斷,比如說如果位數小於11,那麼就可以直接進行提示,而不是先去資料庫中找一遍,那樣效率是非常低的。如果輸入的手機號是合法性的,在到資料庫中去尋找,如果找到了,顯示使用者的資訊 ->
在這裡,提供了一個修改密碼的功能,畢竟如果使用者忘記了原先的密碼,可能會想要修改密碼的,在檢視具體資訊時能直接修改是非常人性化的設計。
5.關於AlertDialog.Builder
有時候,AlertDialog.Builder 提供給我們的樣式是不能夠滿足我們的,比如我想將PositiveButton 和 NegativeButton 設定成和我們主題一致的顏色,那麼就需要自定義一個style,如下
?1 2 3 4 5 6 7 8 9 10 |
<style name= "MyAlertDialog"
parent= "Theme.AppCompat.Light.Dialog.Alert" >
//用於改變Button 的顏色
<item name= "android:colorAccent" >@color/colorAccent</item>
//用於改變Message 字的顏色
<item name= "android:textColorPrimary" > #000000 </item>
</style>
//用於改變Dialog 的背景顏色
<item name= "android:background" > #4CAF50 </item>
|
然後只需要在程式碼中這樣宣告,就可以使用自定義樣式了