自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android實(shí)戰(zhàn)系統(tǒng)對話框?qū)崿F(xiàn)登陸注冊功能

移動(dòng)開發(fā) Android
在android的應(yīng)用中越來越多的包含了網(wǎng)絡(luò)互動(dòng)功能,這就帶來了注冊,登陸賬號(hào)功能.本文完整的介紹對話框的方式實(shí)現(xiàn)用戶登陸功能.

Android實(shí)例呈現(xiàn)效果和實(shí)現(xiàn)說明

登陸界面 

注冊界面

下面是實(shí)現(xiàn)的效果圖

實(shí)現(xiàn)的效果說明:

登陸效果: 應(yīng)用程序判斷當(dāng)前用戶還未登陸,彈出登陸對話框,用戶輸入賬號(hào)和密碼信息后,傳到服務(wù)器驗(yàn)證,驗(yàn)證成功后,現(xiàn)實(shí)Toast 成功信息,并轉(zhuǎn)到其他界面

注冊效果:用戶如沒有賬號(hào),則點(diǎn)擊登陸對話框的 “沒有賬號(hào),快速注冊賬號(hào)”

彈出注冊界面,用戶輸入注冊信息,點(diǎn)擊注冊按鈕,注冊成功后,彈出toast信息”注冊成功”,完成注冊后,轉(zhuǎn)到其他功能界面。

功能實(shí)現(xiàn)說明:

整個(gè)功能大體上分兩塊

登陸對話框:輸入登陸信息,實(shí)現(xiàn)登陸功能,轉(zhuǎn)到注冊界面

注冊對話框:輸入注冊信息,實(shí)現(xiàn)注冊功能

#p#

2 登陸對話框的實(shí)現(xiàn)

2.1 對話框界面布局xml文件

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"     
  3.  android:layout_width="fill_parent"    
  4.  android:layout_height="wrap_content"    
  5.  android:orientation="vertical"> 
  6. <TextView 
  7.  android:id="@+id/txt_loginerror"    
  8.  android:layout_height="wrap_content"   
  9.  android:layout_width="wrap_content" 
  10.  android:layout_marginLeft="20dip" 
  11.  android:layout_marginRight="20dip" 
  12.  android:textColor="#ff0000" 
  13.  android:text="輸入的賬號(hào)和密碼不正確" 
  14.  android:gravity="left" 
  15.  android:textAppearance="?  
  16.  android:attr/textAppearanceMedium"  
  17.  android:visibility="invisible" 
  18. /> 
  19. <TextView 
  20.  android:id="@+id/username"   
  21.  android:layout_height="wrap_content" 
  22.  android:layout_width="wrap_content" 
  23.  android:layout_marginLeft="20dip" 
  24.  android:layout_marginRight="20dip" 
  25.  android:text="賬號(hào)" 
  26.  android:gravity="left" 
  27.  android:textAppearance="?  
  28.  android:attr/textAppearanceMedium"  
  29. /> 
  30. <EditText 
  31.  android:id="@+id/txt_username" 
  32.  android:layout_height="wrap_content" 
  33.  android:layout_width="fill_parent" 
  34.  android:layout_marginLeft="20dip" 
  35.  android:layout_marginRight="20dip" 
  36.  android:autoText="false" 
  37.  android:capitalize="none" 
  38. androidandroid:gravity="fill_horizontal"android:textAppearance="? android:attr/textAppearanceMedium" 
  39.  />     
  40.  <TextView 
  41.  android:id="@+id/password" 
  42.  android:layout_height="wrap_content" 
  43.  android:layout_width="wrap_content" 
  44.  android:layout_marginLeft="20dip" 
  45.  android:layout_marginRight="20dip" 
  46. android:textAppearance="android:attr/textAppearanceMedium" 
  47.  android:text="密碼" 
  48. android:gravity="left" 
  49. /> 
  50. <EditText        
  51.  android:id="@+id/txt_password" 
  52.  android:layout_height="wrap_content" 
  53.  android:layout_width="fill_parent" 
  54.  android:layout_marginLeft="20dip" 
  55.  android:layout_marginRight="20dip" 
  56.  android:autoText="false" 
  57.  android:capitalize="none" 
  58.  android:gravity="fill_horizontal" 
  59. android:textAppearance="android:attr/textAppearanceMedium" 
  60. />              
  61. <TextView   
  62. android:id="@+id/txt_toregister" 
  63. android:layout_height="wrap_content" 
  64. android:layout_width="wrap_content" 
  65. android:layout_marginLeft="20dip" 
  66. android:layout_marginRight="20dip"   
  67. android:textColor="#2200C1" 
  68. android:textAppearance="?  
  69. android:attr/textAppearanceMedium"   
  70. android:text="沒有賬號(hào)?快速注冊" 
  71. android:gravity="left" 
  72. />   
  73. </LinearLayout> 

#p#

2.2 后臺(tái)業(yè)務(wù)邏輯

  1. /*  
  2.      * 創(chuàng)建用戶登陸的對話框  
  3.      * 登陸界面包含兩個(gè)按鈕  
  4.      * 1按鈕為登陸  
  5.      * 2按鈕為不登陸試玩  
  6.      * */  
  7.     private void CreateLoginAlert()  
  8.     {  
  9.         AlertDialog.Builder ad =new AlertDialog.Builder(this);  
  10.         ad.setTitle("賬號(hào)登陸");  
  11.         ad.setView(ViewUtility.GetView(this,R.layout.sub_logindialog));  
  12.         adadi=  ad.create();      
  13.     /*       
  14.         */  
  15.         adi.setButton("登陸", new OnClickListener(){  
  16.  
  17.             @Override  
  18.             public void onClick(DialogInterface arg0, int arg1) {  
  19.               
  20.                 EditText password=    (EditText)adi.findViewById(R.id.txt_password);  
  21.                 EditText account =(EditText)adi.findViewById(R.id.txt_username);  
  22.                   
  23.                 PassWord=password.getText().toString();  
  24.                 Account=account.getText().toString();  
  25.                 //生成登陸對話框  
  26.                 m_Dialog=ProgressDialog.show(Main.this, "請等待...", "正在為你登陸...",true);  
  27.  
  28.                 mRedrawHandler.sleep(100);          
  29.             }  
  30.         });         
  31.         adi.setButton2("試  玩", new OnClickListener(){  
  32.             @Override  
  33.             public void onClick(DialogInterface arg0, int arg1) {  
  34.                 ViewUtility.NavigateActivate(Main.this, SelectTheme.class);  
  35.             }  
  36.         });          
  37.         adi.show();        
  38.          //設(shè)置注冊點(diǎn)擊事件  
  39.         TextView  register=(TextView)adi.findViewById(R.id.txt_toregister);  
  40.         register.setOnClickListener(new  TextView.OnClickListener()  
  41.         {  
  42.            public void onClick(View v){  
  43.                //創(chuàng)建注冊對話框  
  44.              CreateRegisterAlert();  
  45.                adi.dismiss();  
  46.                  
  47.            }  
  48.        });       
  49.     }     
  50.     /*  
  51.      *定時(shí)線程做驗(yàn)證用  
  52.      * */  
  53.     private RefreshHandler mRedrawHandler = new RefreshHandler();  
  54.       
  55.     class RefreshHandler extends Handler {  
  56.  
  57.         @Override  
  58.         public void handleMessage(Message msg) {  
  59.                 
  60.             try{  
  61.                   
  62.                  //調(diào)用網(wǎng)絡(luò)接口,實(shí)現(xiàn)登陸指令  
  63.                Boolean flags=    UserDataServiceHelper.Login(Account, PassWord);      
  64.                if(flags)      
  65.               {  
  66.                 //保存登陸信息  
  67.                 UserDataWriteHelper uw=new UserDataWriteHelper(Main.this);  
  68.                 uw.SaveUserInfoInDB("xuwenbing", Account);  
  69.                 //提示登陸成功  
  70.                  Toast.makeText(Main.this, "登陸成功", Toast.LENGTH_SHORT).show();          
  71.                  //轉(zhuǎn)到主題頁面  
  72.                    ViewUtility.NavigateActivate(Main.this, SelectTheme.class);  
  73.                }else  
  74.                {  
  75.                 //失敗 顯示錯(cuò)誤信息  
  76.                  Toast.makeText(Main.this, "登陸失敗", Toast.LENGTH_SHORT).show();  
  77.                  adi.show();  
  78.                  adi.findViewById(R.id.txt_loginerror).setVisibility(View.VISIBLE);  
  79.                 }  
  80.             }  
  81.             catch(Exception e)  
  82.             {  
  83.                 e.printStackTrace();                              
  84.             }  
  85.             finally{  
  86.                 m_Dialog.dismiss();          
  87.             }  
  88.         }  
  89.         public void sleep(long delayMillis) {  
  90.             this.removeMessages(0);  
  91.             sendMessageDelayed(obtainMessage(0), delayMillis);  
  92.         }  
  93.     }; 

#p#

 3 注冊對話框的實(shí)現(xiàn)
 3.1  對話框界面布局xml文件

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.    android:layout_width="fill_parent" 
  4.    android:layout_height="wrap_content" 
  5.    android:orientation="vertical">     
  6.     <LinearLayout 
  7.    android:layout_width="fill_parent" 
  8.    android:layout_height="wrap_content" 
  9.    android:orientation="horizontal" 
  10.    android:gravity="center" 
  11.    > 
  12.    <TextView 
  13.       android:id="@+id/txt_loginerror" 
  14.       android:layout_height="wrap_content" 
  15.       android:layout_width="wrap_content" 
  16.       android:layout_marginLeft="20dip" 
  17.       android:layout_marginRight="20dip" 
  18.       android:textColor="#ff0000" 
  19.       android:text="輸入的賬號(hào)和密碼不正確" 
  20.       android:gravity="left" 
  21.       android:textAppearance="?android:attr/textAppearanceMedium"   
  22.       android:visibility="invisible" 
  23.    /> 
  24.    </LinearLayout>     
  25.     <LinearLayout 
  26.    android:layout_width="fill_parent" 
  27.    android:layout_height="wrap_content" 
  28.    android:orientation="horizontal"     
  29.    > 
  30.    <TextView 
  31.       android:id="@+id/username" 
  32.       android:layout_height="wrap_content" 
  33.       android:layout_width="wrap_content" 
  34.       android:layout_marginLeft="20dip" 
  35.       android:layout_marginRight="20dip" 
  36.       android:text="賬號(hào)" 
  37.       android:gravity="left" 
  38.       android:textAppearance="?android:attr/textAppearanceMedium"   
  39.    /> 
  40.         
  41.     <EditText 
  42.       android:id="@+id/txt_username" 
  43.       android:layout_height="wrap_content" 
  44.       android:layout_width="fill_parent" 
  45.       android:layout_marginLeft="20dip" 
  46.       android:layout_marginRight="20dip" 
  47.       android:autoText="false" 
  48.       android:capitalize="none" 
  49.       android:gravity="fill_horizontal" 
  50.       android:textAppearance="?android:attr/textAppearanceMedium"   
  51.       /> 
  52.       </LinearLayout> 
  53.         
  54.         <LinearLayout 
  55.    android:layout_width="fill_parent" 
  56.    android:layout_height="wrap_content" 
  57.    android:orientation="horizontal" 
  58.      
  59.    > 
  60.     <TextView 
  61.       android:id="@+id/password" 
  62.       android:layout_height="wrap_content" 
  63.       android:layout_width="wrap_content" 
  64.       android:layout_marginLeft="20dip" 
  65.       android:layout_marginRight="20dip" 
  66.       android:textAppearance="?android:attr/textAppearanceMedium"   
  67.       android:text="密碼" 
  68.       android:gravity="left" 
  69.       /> 
  70.     <EditText 
  71.       android:id="@+id/txt_password" 
  72.       android:layout_height="wrap_content" 
  73.       android:layout_width="fill_parent" 
  74.       android:layout_marginLeft="20dip" 
  75.       android:layout_marginRight="20dip" 
  76.       android:autoText="false" 
  77.       android:capitalize="none" 
  78.       android:gravity="fill_horizontal" 
  79.       android:textAppearance="?android:attr/textAppearanceMedium"   
  80.      /> 
  81.      </LinearLayout> 
  82.        <LinearLayout 
  83.      android:layout_width="fill_parent" 
  84.      android:layout_height="wrap_content" 
  85.      android:orientation="horizontal" 
  86.    > 
  87.        <TextView 
  88.       android:id="@+id/nicename" 
  89.       android:layout_height="wrap_content" 
  90.       android:layout_width="wrap_content" 
  91.       android:layout_marginLeft="20dip" 
  92.       android:layout_marginRight="20dip" 
  93.       android:textAppearance="?android:attr/textAppearanceMedium"   
  94.       android:text="昵稱" 
  95.       android:gravity="left" 
  96.       /> 
  97.     <EditText 
  98.       android:id="@+id/txt_nicename" 
  99.       android:layout_height="wrap_content" 
  100.       android:layout_width="fill_parent" 
  101.       android:layout_marginLeft="20dip" 
  102.       android:layout_marginRight="20dip" 
  103.       android:autoText="false" 
  104.       android:capitalize="none" 
  105.       android:gravity="fill_horizontal" 
  106.       android:textAppearance="?android:attr/textAppearanceMedium"   
  107.      />     
  108.    </LinearLayout>      
  109. </LinearLayout> 

#p#

3.2  后臺(tái)業(yè)務(wù)邏輯

  1. /*創(chuàng)建注冊對話框*/  
  2.     private void CreateRegisterAlert()  
  3.     {  
  4.         //registerdialog  
  5.         AlertDialog.Builder ad =new AlertDialog.Builder(this);  
  6.         ad.setTitle("注冊賬號(hào)");  
  7.         ad.setView(ViewUtility.GetView(this,R.layout.sub_registerdialog));  
  8.         registerdialog=  ad.create();          
  9.         registerdialog.setButton("注冊", new OnClickListener(){  
  10.             @Override  
  11.             public void onClick(DialogInterface arg0, int arg1) {            
  12.                 EditText password=    (EditText)registerdialog.findViewById(R.id.txt_password);  
  13.                 EditText account =(EditText)registerdialog.findViewById(R.id.txt_username);  
  14.                 EditText nicename =(EditText)registerdialog.findViewById(R.id.txt_nicename);                 
  15.                 PassWord=password.getText().toString();  
  16.                 Account=account.getText().toString();  
  17.                 NiceName=nicename.getText().toString();  
  18.                 //生成注冊對話框  
  19.                 m_Dialog=ProgressDialog.show(Main.this, "請等待...", "正在為你注冊...",true);  
  20.                 mRegsiterHandler.sleep(100);          
  21.             }  
  22.         });          
  23.         registerdialog.setButton2("試  玩", new OnClickListener(){  
  24.             @Override  
  25.             public void onClick(DialogInterface arg0, int arg1) {  
  26.                 ViewUtility.NavigateActivate(Main.this, SelectTheme.class);  
  27.             }  
  28.         });          
  29.         registerdialog.show();        
  30.     }  
  31.     /*  
  32.      *定時(shí)注冊程序  
  33.      * */  
  34.     private RegsiterHandler mRegsiterHandler = new RegsiterHandler();  
  35.       
  36.     class RegsiterHandler extends Handler {  
  37.  
  38.         @Override  
  39.         public void handleMessage(Message msg) {  
  40.                 
  41.             try{  
  42.                   
  43.                  //調(diào)用網(wǎng)絡(luò)接口,實(shí)現(xiàn)注冊指令  
  44.                Boolean flags=    UserDataServiceHelper.Register(Account, PassWord,NiceName);      
  45.                if(flags)      
  46.               {  
  47.                 //保存注冊信息  
  48.                 UserDataWriteHelper uw=new UserDataWriteHelper(Main.this);  
  49.                 uw.SaveUserInfoInDB("xuwenbing", Account);  
  50.                 //提示注冊成功  
  51.                  Toast.makeText(Main.this, "注冊成功", Toast.LENGTH_SHORT).show();          
  52.                  //轉(zhuǎn)到主題頁面  
  53.                    ViewUtility.NavigateActivate(Main.this, SelectTheme.class);  
  54.                }else  
  55.                {  
  56.                 //失敗 顯示錯(cuò)誤信息  
  57.                  Toast.makeText(Main.this, "注冊失敗", Toast.LENGTH_SHORT).show();  
  58.                  registerdialog.show();  
  59.                  registerdialog.findViewById(R.id.txt_loginerror).setVisibility(View.VISIBLE);  
  60.                 }  
  61.             }  
  62.             catch(Exception e)  
  63.             {  
  64.                 e.printStackTrace();                              
  65.             }  
  66.             finally{  
  67.                 m_Dialog.dismiss();          
  68.             }  
  69.         }  
  70.         public void sleep(long delayMillis) {  
  71.             this.removeMessages(0);  
  72.             sendMessageDelayed(obtainMessage(0), delayMillis);  
  73.         }  
  74.     }; 

【編輯推薦】

Android布局屬性詳解

谷歌Android UI設(shè)計(jì)技巧:框架特性

Android開發(fā):Activity之間的傳值

 

Android中focusable屬性的妙用——底層按鈕的實(shí)現(xiàn)

責(zé)任編輯:zhaolei 來源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2011-07-01 11:33:00

Qt 模態(tài) 非模態(tài)

2009-12-28 13:47:35

WPF對話框

2010-01-28 16:55:26

Android對話框

2011-06-02 10:37:02

Android 對話框

2017-10-12 11:48:09

iOS系統(tǒng)彈窗Apple ID

2021-07-11 07:34:23

Windows 11操作系統(tǒng)微軟

2011-07-21 15:50:42

jQuery Mobi頁面對話框

2009-12-28 14:32:31

WPF窗體對話框

2009-12-11 15:35:50

PHP彈出對話框

2011-11-21 10:26:05

jQuery

2011-09-15 09:52:45

Delphi XE2

2009-10-20 14:05:42

VB.NET路徑

2010-09-29 15:56:02

J2ME對話框

2012-02-15 17:17:02

開放平臺(tái)

2011-05-20 16:49:21

VB.NET

2010-01-11 09:33:32

VB.NET對話框調(diào)用

2009-12-29 15:24:48

WPF對話框

2011-11-23 09:47:36

Winform

2011-07-22 15:32:53

iPhone 按鈕 對話框

2013-12-27 14:10:36

Android開發(fā)Android應(yīng)用Transform
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)