1. 程式人生 > >Android開發中實現使用者註冊和登陸的小demo分享

Android開發中實現使用者註冊和登陸的小demo分享

本文例項講述了Android實現登入功能的方法。分享給大家供大家參考,具體如下:

登陸效果: 應用程式判斷當前使用者還未登陸,彈出登陸對話方塊,使用者輸入賬號和密碼資訊後,傳到伺服器驗證,驗證成功後,現實Toast 成功資訊,並轉到其他介面。

2015121161004202.jpg (480×800)

註冊效果:使用者如沒有賬號,則點選登陸對話方塊的 “沒有賬號,快速註冊賬號”, 彈出註冊介面,使用者輸入註冊資訊,點選註冊按鈕,註冊成功後,彈出toast資訊”註冊成功”,完成註冊後,轉到其他功能介面。

2015121161036365.jpg (480×800)

整個功能大體上分兩塊:登陸對話方塊:輸入登陸資訊,實現登陸功能,轉到註冊介面。註冊對話方塊:輸入註冊資訊,實現註冊功能。

對話方塊介面佈局xml檔案:

?
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778<?xml version="1.0" encoding="utf-8"?><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"
><TextViewandroid: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"/><TextViewandroid: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"/><EditTextandroid: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"/><TextViewandroid: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"/><EditTextandroid: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"/><TextViewandroid: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>

後臺業務邏輯:

?
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798/** 建立使用者登陸的對話方塊* 登陸介面包含兩個按鈕* 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(){@Overridepublic 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(){@Overridepublic 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 {@Overridepublic 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檔案:

?
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115<?xml version="1.0" encoding="utf-8"?><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:gravity="center"><TextViewandroid: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><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid: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"/><EditTextandroid: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><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid: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"/><EditTextandroid: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><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid: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"/><EditTextandroid: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>

後臺業務邏輯:

?
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778/*建立註冊對話方塊*/private void CreateRegisterAlert(){//registerdialogAlertDialog.Builder ad =new AlertDialog.Builder(this);ad.setTitle("註冊賬號");ad.setView(ViewUtility.GetView(this,R.layout.sub_registerdialog));registerdialog= ad.create();registerdialog.setButton("註冊", new OnClickListener(){@Overridepublic 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(){@Overridepublic void onClick(DialogInterface arg0, int arg1) {ViewUtility.NavigateActivate(Main.this, SelectTheme.class);}});registerdialog.show();   }/**定時註冊程式* */private RegsiterHandler mRegsiterHandler = new RegsiterHandler();class RegsiterHandler extends Handler {@Overridepublic void handleMessage(Message msg) {try{//呼叫網路介面,實現註冊指令Boolean flags=  UserDataServiceHelper.Register(Account, PassWord,NiceName);  if(flags)  {//儲存註冊資訊UserDataWriteHelper uw=new UserDataWriteHelper(Main.this);uw.SaveUserInfoInDB("xuwenbing", Account);

相關推薦

Android開發dp,sppx之間的轉換

font col art gpo ati pan ext 同時 style 本文轉載於 http://blog.csdn.net/student9128/article/details/53932470 眾所周知,在Android開發中dp和px,sp和px之間的轉換時必不

android 開發獲取versionNameversionCode

android studio中gradle檔案和manifest中都有對於versionName和versionCode的配置。 經過實踐發現使用PocketManager get PocketInfo中的versionName是gradle配置的,查閱官方文件發現grad

Android開發遇到的問題及知識總結【一】

PhotoView+ViewPager 發生java.lang.IllegalArgumentException: pointerIndex out of range異常 **描述:**當PhotoView 和 ViewPager 組合時 ,用雙指進行放大時 是

android開發的同步非同步區別的理解

同步和非同步的區別: 網路答案 答案一: 1、同步執行的話,就是程式會呆板地從頭執行到尾,耗時間的東西不執行完,程式不會繼續往下走,等待時間長的話,有時候就會造成失去響應了。 2、非

Android開發, 將apkSQLite資料庫一起打包釋出 (沒root手機)

要把SQLite資料庫與apk一起打包很簡單,只要把資料庫匯出,並放在assets資料夾中,app首次開啟時載入就可以了。 但有個問題:沒root的手機不能通過DDMS檢視/data/的檔案(資料庫儲存在這裡)。我們只能通過adb shell來獲取資料庫檔案了。 開啟命

Android開發實現使用者註冊登陸demo分享

本文例項講述了Android實現登入功能的方法。分享給大家供大家參考,具體如下: 登陸效果: 應用程式判斷當前使用者還未登陸,彈出登陸對話方塊,使用者輸入賬號和密碼資訊後,傳到伺服器驗證,驗證成功後,現實Toast 成功資訊,並轉到其他介面。 註冊效果:使

android開發——Android開發的47個知識

環境 底部 枚舉 目前 mount ram 啟動 creat ica 1、判斷sd卡是否存在 boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environm

微信程序開發 [02] 頁面註冊基本組件

tar .com 結構 image www. 整體 文件中 hover 文件的 1、頁面註冊既然我們希望跳轉到新的頁面,那自然要新建頁面相關的文件才行。在開篇已經講過,一個小程序頁面由四個文件組成,假如我們的頁面名為welcome,那麽這四個文件則是:welcome.jsw

Android 人們口中的sdcardandroid開發的sdcard的區別(自理解)

現在的android手機很多都不支援在手機上再插一張sdcard了,就是那種上面印著多少GB的小黑卡,我查了很多資料發現,手機自帶的記憶體(其中分為兩部分:系統所佔記憶體 + 手機除去系統所佔記憶體剩餘的記憶體,其中“手機除去系統所佔記憶體剩餘的記憶體”被安卓預設為:手機自帶

Android開發請求URL引數含有中文空格的解決方法

在做安卓應用時,碰到要處理URL請求的中文引數,我們需要用到URLEncoder.encode(引數,"utf-8")方法對中文引數進行編碼,這樣做,能夠解決大多數中文引數的亂碼問題,當然編碼方式不一定是“utf-8”,這取決於你伺服器端的編碼格式。 但是,若是請求引數中不

Android開發,登入註冊介面如何新增視訊背景,親測可用

此篇文章屬個人查閱資料整理所著,希望能對您有所幫助,歡迎各位留言指正,抱拳了 一、 首先在res資料夾下新增raw資料夾並將要新增的背景視訊放進去; 二、在MyViewpager.java(此為要顯示的活動檔案)中的onCreate()中新增視訊的程式碼 //設定視訊背景

android開發遇到的進位制轉換,16進位制資料流轉字串的相互轉換

最近開發的程式是利用無線網路,收發資料,其中,接收和傳送的格式是16進位制位元組陣列 byte[],而顯示到介面中則不可能把一堆的位元組流顯示出來。因此,需要進行一下轉換。  直接說轉換的演算法吧        一、16進位制位元組陣列轉換成字串 核心的語句就一句getSt

Android開發的一個功能 清空搜尋框的文字

需求:專案中的有關搜尋的地方,加上清空文字的功能,目的是為了增加使用者體驗,使使用者刪除文字更加快捷 解決過程:開始的時候感覺這個東西不太好實現,主要就是佈局的問題,可能是開始顧慮的太多了,再加上當時產品催的不太緊,而且這個功能也不是必須實現的。但是今天不一樣了,這個是老大

Android開發十六進位制十進位制的相互轉化

最近的開發 Android 專案中要實現使用者自定義顏色,於是就自己利用SeekBar 和 EditText 實現了一個拾色器。 原理也很簡單,就是用四個SeekBar分別代表顏色的四個值:R,G,B,Alpha,每個顏色值都用0-255來表示,最終在轉化為十六進位制顏色值。 十進位

Android開發實現桌面部件App Widget

在Android開發中,有時候我們的App設計的功能比較多的時候,需要根據需要更簡潔的為使用者提供清晰已用的某些功能的時候,用桌面小部件就是一個很好的選擇,即App Widget,下面我們就用Android studio來建立一個簡單的桌面小部件: 選擇New->Widge

Android開發EditText技巧之如何設定游標顏色及粗細

有時為了使用者體驗感更好,所以我們需要對EditText的游標進行設定,這裡就是關於游標顏色和粗細的設定,非常簡單。 第一步:在資原始檔drawable下新建一個游標控制edittext_color_cursor.xml <?xml version="1.0" e

Android開發一些被冷落但卻很有用的類方法

來自:http://luckyandyzhang.github.io/ Resources.getIdentifier : 這個我 用過,記得以前做過一個面板切換功能,可以通過這個方法從面板包 獲取面板資源。 (面板包的資源名稱和 主包的資源名稱id 名是一樣的

Android開發的機型適配國際化適配的實現;

關於Android螢幕的一些基本概念知識,自行充電。。在此只介紹實際開發過程中的使用   1、說到Android的螢幕適配,首當其衝的就是圖片的適配     圖片適配遵循兩個原則: ①儘量使用9.path圖來自動適應螢幕 ②儘量使用最少的圖片資源     關於第一點使用9.path圖片:比如topBar、底

Android開發ANR異常發生,查詢避免

ANR 是什麼?怎樣避免和解決 ANR(重要) 在 Android 上,如果你的應用程式有一段時間響應不夠靈敏,系統會向用戶顯示一個對話方塊,這個對話方塊稱作應用程式無響應(ANR:Appl

淺談Android開發的MVVM模式及與MVPMVC的區別

三種架構模式的演化: 什麼是MVVM? MVVM是Model-View-ViewModel的簡寫。微軟的WPF帶來了新的技術體驗,如Silverlight、音訊、視訊、3D、動畫……,這導致了軟體UI層更加細節化、可定製化。同時,在技術層面,WPF也帶來