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

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

在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本書吧。很多人知識結構不好而且不系統,因為在特定領域有一個足夠量的知識量+足夠良好的知識結構,系統化以后就足以應對大量未曾遇到過的問題。

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

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

《重構:改善既有代碼的設計》 福勒(Martin Fowler) (作者), 熊節 (譯者)

《重構:改善既有代碼的設計》清晰地揭示了重構的過程,解釋了重構的原理和最佳實踐方式,并給出了何時以及何地應該開始挖掘代碼以求改善。書中給出了70多個可行的重構,每個重構都介紹了一種經過驗證的代碼變換手法的動機和技術?!吨貥?改善既有代碼的設計》提出的重構準則將幫助你一次一小步地修改你的代碼,從而減少了開發過程中的風險。

更多計算機寶庫...

燃烧吧足球登陆 四川金7乐基本走势图 黑龙江11选5推荐号 pk10微信大群 极速赛车开奖历史记录 2018年(生肖歇后语) 捉鸡麻将技巧顺口溜 乐禧白城麻将房间卡 辽宁快乐12电子走势图破解版 十分十一选五分析软件 哪个快播网站有日本av片 广西快3计划网页版 捕鱼之王 沈阳四冲娱网棋牌安卓 手机麻将怎么打才能 香港六合彩白小姐特码料 广东36选7