做一個Android應用的注冊與登錄功能

Android越來越多的包含了網絡互動功能
服務器君一共花費了67.487 ms進行了4次數據庫查詢,努力地為您提供了這個頁面。
試試閱讀模式?希望聽取您的建議

在android的應用中越來越多的包含了網絡互動功能,這就帶來了注冊,登陸賬號功能。本文完整的介紹對話框的方式實現用戶登陸功能。

登陸效果: 應用程序判斷當前用戶還未登陸,彈出登陸對話框,用戶輸入賬號和密碼信息后,傳到服務器驗證,驗證成功后,現實Toast 成功信息,并轉到其他界面。

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

整個功能大體上分兩塊:登陸對話框:輸入登陸信息,實現登陸功能,轉到注冊界面。注冊對話框:輸入注冊信息,實現注冊功能。

對話框界面布局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>

后臺業務邏輯:

	/*
     * 創建用戶登陸的對話框
     * 登陸界面包含兩個按鈕
     * 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();  
        
        
         //設置注冊點擊事件
        TextView  register=(TextView)adi.findViewById(R.id.txt_toregister);
        register.setOnClickListener(new  TextView.OnClickListener()
        {
           public void onClick(View v){
               //創建注冊對話框
             CreateRegisterAlert();
               adi.dismiss();
               
           }
       });
        
    }
    
    /*
     *定時線程做驗證用
     * */
    private RefreshHandler mRedrawHandler = new RefreshHandler();
    
    class RefreshHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {
              
            try{
                
                 //調用網絡接口,實現登陸指令
               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();        
                 //轉到主題頁面
                   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>

后臺業務邏輯:

	/*創建注冊對話框*/
    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{
                
                 //調用網絡接口,實現注冊指令
               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();        
                 //轉到主題頁面
                   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);
        }
    };

兩個網絡接口功能:

//調用網絡接口,實現登陸指令
Boolean flags=    UserDataServiceHelper.Login(Account, PassWord);  
//調用網絡接口,實現注冊指令
Boolean flags=    UserDataServiceHelper.Register(Account, PassWord,NiceName);  

本文地址:http://www.snpmgr.live/librarys/veda/detail/1508,歡迎訪問原出處。

不打個分嗎?

轉載隨意,但請帶上本文地址:

http://www.snpmgr.live/librarys/veda/detail/1508

如果你認為這篇文章值得更多人閱讀,歡迎使用下面的分享功能。
小提示:您可以按快捷鍵 Ctrl + D,或點此 加入收藏

大家都在看

閱讀一百本計算機著作吧,少年

很多人覺得自己技術進步很慢,學習效率低,我覺得一個重要原因是看的書少了。多少是多呢?起碼得看3、4、5、6米吧。給個具體的數量,那就100本書吧。很多人知識結構不好而且不系統,因為在特定領域有一個足夠量的知識量+足夠良好的知識結構,系統化以后就足以應對大量未曾遇到過的問題。

奉勸自學者:構建特定領域的知識結構體系的路徑中再也沒有比學習該專業的專業課程更好的了。如果我的知識結構體系足以囊括面試官的大部分甚至吞并他的知識結構體系的話,讀到他言語中的一個詞我們就已經知道他要表達什么,我們可以讓他坐“上位”畢竟他是面試官,但是在知識結構體系以及心理上我們就居高臨下。

所以,閱讀一百本計算機著作吧,少年!

《JavaScript高級程序設計(第2版)》 尼古拉斯·澤卡斯(Nicholas C.Zakas) (作者), 李松峰 (譯者), 曹力 (譯者)

《JavaScript高級程序設計(第2版)》在上一版基礎上進行了大幅度更新和修訂,融入了近幾年來JavaScript應用發展的最新成果,幾乎涵蓋了所有需要理解的重要概念和最新的JavaScript應用成果。從頗具深度的JavaScript語言基礎到作用域(鏈),從引用類型到面向對象編程,從極其靈活的匿名函數到閉包的內部機制,從瀏覽器對象模型(BOM)、文檔對象模型(DOM)到基于事件的Web腳本設計,從XML(E4X)到Ajax及JSON,從高級前端開發技術到前沿的客戶端存儲,從最佳編程實踐到即將成為現實的API,直至JavaScript未來的發展,全景式地展示了JavaScript高級程序設計的方方面面。

更多計算機寶庫...

燃烧吧足球登陆