這個是補錄很久以前的一篇文章盯质,大家不要介意哈哈
我們大家都用過QQ對吧框咙,我們看到QQ的登錄界面是這個樣子的:
今天我們來模擬一下QQ的登錄界面,當(dāng)然會用假數(shù)據(jù)來實現(xiàn)他的登錄功能,模擬的效果如下:
這個其實主要就是我們寫的UI了,其次是它實現(xiàn)的幾個小功能:
1.在輸入框有文字時候晌块,后面×(刪除)標(biāo)志顯示,沒有文字時候库快,×標(biāo)志不顯示。
2.點擊×標(biāo)志之后钥顽,將當(dāng)前行的文字全部清除义屏。
3.登錄后跳轉(zhuǎn)界面,顯示賬號密碼蜂大。
4.實現(xiàn)記住密碼功能
下面我們來依次實現(xiàn)這幾個功能:
首先我們來編寫我們的登錄UI界面:
我們把login_layout.xml設(shè)為RelativeLayout布局闽铐。
1.首先是左上角的QQ圖標(biāo),我們照一張企鵝樣式的圖片就好奶浦,然后后面添加一個TextView兄墅,寫上QQ,字體顏色設(shè)為灰白色澳叉。
2.然后開始寫兩個輸入框隙咸。由于我們每個輸入框后面都要有一個×(刪除)圖片,所以為了方便成洗,我們把 他們寫在LinearLayout布局里面五督。
????上面的一些屬性大家都能看懂,我們讓liner1位于相對image(就是上面的QQ的圖片)下面瓶殃,然后限制了起始邊界和末尾邊界的大谐浒;將展示方向這設(shè)置為水平遥椿。
在這個liner1里面 添加editText和ImageView基矮。
????首先我解釋一下我為什么要把輸入框的寬度設(shè)為0,然后加上權(quán)重冠场,而不是把他設(shè)置為wrap_content或者match_parent家浇。
????如果我們不設(shè)置權(quán)重,而是設(shè)為wrap_content的話碴裙,那么如果我們輸入的內(nèi)容很短蓝谨,那么后面的刪除按鈕就會緊隨在后面,這樣是很不美觀的青团。而且如果說超出長度譬巫,還會把刪除按鈕擋出屏幕外面。
????但如果我們設(shè)置為match_parent督笆,那么他會占滿我們的父窗體芦昔,這樣我們就無法看到我們的刪除按鈕了。
????剩下的屬性都是修飾屬性娃肿,大家都可以看懂的咕缎。
? ? 密碼的也是同上寫法珠十。
3.然后就是我們的登錄button了。
? ? 我們給button進(jìn)行寬度凭豪、字體顏色修改焙蹭,然后我們要修改一下他的背景,這里我們需要說明一下:
? ? 在點擊按鈕時實現(xiàn)了這樣的效果:當(dāng)點擊狀態(tài)下他的顏色不一樣嫂伞。
????我們在layout中寫一個.xml文件孔厉,名字起為but_selector.xml。
????首先我們寫了一個selector標(biāo)簽帖努,在里面寫了兩個item撰豺,下面的item是在默認(rèn)狀態(tài)下的樣式,上面的item我們指定了一個state_pressed屬性拼余,它是指我們在點擊狀態(tài)下的樣子污桦。
????solid屬性是設(shè)置他的內(nèi)部顏色,corners標(biāo)簽是設(shè)置他的圓角邊框匙监,數(shù)值越高凡橱,它就越接近圓。
????我們把他添加到button的background屬性里面亭姥,好了梭纹,現(xiàn)在他的功能UI就已經(jīng)差不多了,(下面還剩下幾行小字致份,這個相信難不倒大家变抽,就不多說了)。
然后我們來修改我們的代碼
1.我們首先要獲取到這幾個控件氮块,username绍载、password、delete1滔蝉、delete2击儡、login(這是對應(yīng)id,去上面圖片看)
2.我們要分別注冊他們需要的監(jiān)聽事件:
我們給username注冊了文字改變監(jiān)聽事件蝠引。當(dāng)他輸入框里面的文字發(fā)生改變時候阳谍,會執(zhí)行。
他一共有三個方法螃概,在之前(before)矫夯、改變中(on)、改變后(after)吊洼。我們只對后兩個方法進(jìn)行修改训貌。當(dāng)我們剛開始輸入時候,如果我們發(fā)現(xiàn)有內(nèi)容,那么就讓刪除按鈕顯示出來递沪,在輸入結(jié)束之后豺鼻,如果輸入框沒有內(nèi)容,我們就再讓刪除按鈕消失款慨,password也是同樣儒飒。
2然后就是給delete按鈕注冊監(jiān)聽事件。
這個邏輯就很簡單了檩奠,我們點擊以后桩了,就讓對應(yīng)輸入框的內(nèi)容清空就好。
3.然后是我們的登錄按鈕笆凌,這個就是一個Intent跳轉(zhuǎn)就好圣猎,不用多說士葫,以后可以講乞而。
4.最后是我們的數(shù)據(jù)保存功能。這個我們用SHaredPreferences來實現(xiàn):
? ? 我們在Activity中定義一個Shrepreferrences慢显,用它來實現(xiàn)數(shù)據(jù)存儲
如果沒有data文件夾爪模,他會在shared_prefs目錄下創(chuàng)建一個名為data的.xml文件。
我們在點擊登錄按鈕后屋灌,會把我們本次登錄的賬號密碼存儲到data中。
LoadData方法是我們在初始化控件完成之后執(zhí)行的一個方法应狱,作用就是判斷如果上一次存儲過數(shù)據(jù)共郭,就將數(shù)據(jù)導(dǎo)入到輸入框中。
現(xiàn)在我們的幾個功能就全都實現(xiàn)了疾呻。