Android開發(fā)中實現(xiàn)用戶注冊和登陸的代碼實例分享
在android的應(yīng)用中越來越多的包含了網(wǎng)絡(luò)互動功能,這就帶來了注冊,登陸賬號功能。本文完整的介紹對話框的方式實現(xiàn)用戶登陸功能。
登陸效果: 應(yīng)用程序判斷當(dāng)前用戶還未登陸,彈出登陸對話框,用戶輸入賬號和密碼信息后,傳到服務(wù)器驗證,驗證成功后,現(xiàn)實Toast 成功信息,并轉(zhuǎn)到其他界面。

注冊效果:用戶如沒有賬號,則點擊登陸對話框的 "沒有賬號,快速注冊賬號", 彈出注冊界面,用戶輸入注冊信息,點擊注冊按鈕,注冊成功后,彈出toast信息"注冊成功",完成注冊后,轉(zhuǎn)到其他功能界面。

整個功能大體上分兩塊:登陸對話框:輸入登陸信息,實現(xiàn)登陸功能,轉(zhuǎn)到注冊界面。注冊對話框:輸入注冊信息,實現(xiàn)注冊功能。
對話框界面布局xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/txt_loginerror"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:textColor="#ff0000"
android:text="輸入的賬號和密碼不正確"
android:gravity="left"
android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
/>
<TextView
android:id="@+id/username"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:text="賬號"
android:gravity="left"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<EditText
android:id="@+id/txt_username"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:autoText="false"
android:capitalize="none"
android:gravity="fill_horizontal"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/password"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="密碼"
android:gravity="left"
/>
<EditText
android:id="@+id/txt_password"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:autoText="false"
android:capitalize="none"
android:gravity="fill_horizontal"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/txt_toregister"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:textColor="#2200C1"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="沒有賬號?快速注冊"
android:gravity="left"
/>
</LinearLayout>
后臺業(yè)務(wù)邏輯:
/*
* 創(chuàng)建用戶登陸的對話框
* 登陸界面包含兩個按鈕
* 1按鈕為登陸
* 2按鈕為不登陸試玩
* */
private void CreateLoginAlert()
{
AlertDialog.Builder ad =new AlertDialog.Builder(this);
ad.setTitle("賬號登陸");
ad.setView(ViewUtility.GetView(this,R.layout.sub_logindialog));
adi= ad.create();
/*
*/
adi.setButton("登陸", new OnClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
EditText password= (EditText)adi.findViewById(R.id.txt_password);
EditText account =(EditText)adi.findViewById(R.id.txt_username);
PassWord=password.getText().toString();
Account=account.getText().toString();
//生成登陸對話框
m_Dialog=ProgressDialog.show(Main.this, "請等待...", "正在為你登陸...",true);
mRedrawHandler.sleep(100);
}
});
adi.setButton2("試 玩", new OnClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
ViewUtility.NavigateActivate(Main.this, SelectTheme.class);
}
});
adi.show();
//設(shè)置注冊點擊事件
TextView register=(TextView)adi.findViewById(R.id.txt_toregister);
register.setOnClickListener(new TextView.OnClickListener()
{
public void onClick(View v){
//創(chuàng)建注冊對話框
CreateRegisterAlert();
adi.dismiss();
}
});
}
/*
*定時線程做驗證用
* */
private RefreshHandler mRedrawHandler = new RefreshHandler();
class RefreshHandler extends Handler {
@Override
public void handleMessage(Message msg) {
try{
//調(diào)用網(wǎng)絡(luò)接口,實現(xiàn)登陸指令
Boolean flags= UserDataServiceHelper.Login(Account, PassWord);
if(flags)
{
//保存登陸信息
UserDataWriteHelper uw=new UserDataWriteHelper(Main.this);
uw.SaveUserInfoInDB("xuwenbing", Account);
//提示登陸成功
Toast.makeText(Main.this, "登陸成功", Toast.LENGTH_SHORT).show();
//轉(zhuǎn)到主題頁面
ViewUtility.NavigateActivate(Main.this, SelectTheme.class);
}else
{
//失敗 顯示錯誤信息
Toast.makeText(Main.this, "登陸失敗", Toast.LENGTH_SHORT).show();
adi.show();
adi.findViewById(R.id.txt_loginerror).setVisibility(View.VISIBLE);
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally{
m_Dialog.dismiss();
}
}
public void sleep(long delayMillis) {
this.removeMessages(0);
sendMessageDelayed(obtainMessage(0), delayMillis);
}
};
對話框界面布局xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
>
<TextView
android:id="@+id/txt_loginerror"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:textColor="#ff0000"
android:text="輸入的賬號和密碼不正確"
android:gravity="left"
android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="invisible"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:id="@+id/username"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:text="賬號"
android:gravity="left"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<EditText
android:id="@+id/txt_username"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:autoText="false"
android:capitalize="none"
android:gravity="fill_horizontal"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:id="@+id/password"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="密碼"
android:gravity="left"
/>
<EditText
android:id="@+id/txt_password"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:autoText="false"
android:capitalize="none"
android:gravity="fill_horizontal"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:id="@+id/nicename"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="昵稱"
android:gravity="left"
/>
<EditText
android:id="@+id/txt_nicename"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:autoText="false"
android:capitalize="none"
android:gravity="fill_horizontal"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
</LinearLayout>
</LinearLayout>
后臺業(yè)務(wù)邏輯:
/*創(chuàng)建注冊對話框*/
private void CreateRegisterAlert()
{
//registerdialog
AlertDialog.Builder ad =new AlertDialog.Builder(this);
ad.setTitle("注冊賬號");
ad.setView(ViewUtility.GetView(this,R.layout.sub_registerdialog));
registerdialog= ad.create();
registerdialog.setButton("注冊", new OnClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
EditText password= (EditText)registerdialog.findViewById(R.id.txt_password);
EditText account =(EditText)registerdialog.findViewById(R.id.txt_username);
EditText nicename =(EditText)registerdialog.findViewById(R.id.txt_nicename);
PassWord=password.getText().toString();
Account=account.getText().toString();
NiceName=nicename.getText().toString();
//生成注冊對話框
m_Dialog=ProgressDialog.show(Main.this, "請等待...", "正在為你注冊...",true);
mRegsiterHandler.sleep(100);
}
});
registerdialog.setButton2("試 玩", new OnClickListener(){
@Override
public void onClick(DialogInterface arg0, int arg1) {
ViewUtility.NavigateActivate(Main.this, SelectTheme.class);
}
});
registerdialog.show();
}
/*
*定時注冊程序
* */
private RegsiterHandler mRegsiterHandler = new RegsiterHandler();
class RegsiterHandler extends Handler {
@Override
public void handleMessage(Message msg) {
try{
//調(diào)用網(wǎng)絡(luò)接口,實現(xiàn)注冊指令
Boolean flags= UserDataServiceHelper.Register(Account, PassWord,NiceName);
if(flags)
{
//保存注冊信息
UserDataWriteHelper uw=new UserDataWriteHelper(Main.this);
uw.SaveUserInfoInDB("xuwenbing", Account);
//提示注冊成功
Toast.makeText(Main.this, "注冊成功", Toast.LENGTH_SHORT).show();
//轉(zhuǎn)到主題頁面
ViewUtility.NavigateActivate(Main.this, SelectTheme.class);
}else
{
//失敗 顯示錯誤信息
Toast.makeText(Main.this, "注冊失敗", Toast.LENGTH_SHORT).show();
registerdialog.show();
registerdialog.findViewById(R.id.txt_loginerror).setVisibility(View.VISIBLE);
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally{
m_Dialog.dismiss();
}
}
public void sleep(long delayMillis) {
this.removeMessages(0);
sendMessageDelayed(obtainMessage(0), delayMillis);
}
};
兩個網(wǎng)絡(luò)接口功能:
//調(diào)用網(wǎng)絡(luò)接口,實現(xiàn)登陸指令 Boolean flags= UserDataServiceHelper.Login(Account, PassWord); //調(diào)用網(wǎng)絡(luò)接口,實現(xiàn)注冊指令 Boolean flags= UserDataServiceHelper.Register(Account, PassWord,NiceName);
相關(guān)文章
Java 前臺加后臺精品圖書管理系統(tǒng)的實現(xiàn)
相信每一個學(xué)生學(xué)編程的時候,應(yīng)該都會寫一個小項目——圖書管理系統(tǒng)。為什么這么說呢?我認為一個學(xué)校的氛圍很大一部分可以從圖書館的氛圍看出來,而圖書管理系統(tǒng)這個不大不小的項目,接觸的多,也比較熟悉,不會有陌生感,能夠練手,又有些難度,所以我的小項目也來了2021-11-11

