Android在对话框中实现登录与注册

在android的应用中越来越多的包含了网络互动功能,这就带来了注册,登陆账号功能。本文完整的介绍对话框的方式实现用户登陆功能。

登陆效果: 应用程序判断当前用户还未登陆,弹出登陆对话框,用户输入账号和密码信息后,传到服务器验证,验证成功后,现实Toast 成功信息,并转到其他界面。

Android在对话框中实现登录与注册 - tfn2008@yeah - tfn2008@yeah的博客

注册效果:用户如没有账号,则点击登陆对话框的 "没有账号,快速注册账号", 弹出注册界面,用户输入注册信息,点击注册按钮,注册成功后,弹出toast信息"注册成功",完成注册后,转到其他功能界面。

Android在对话框中实现登录与注册 - tfn2008@yeah - tfn2008@yeah的博客

整个功能大体上分两块:登陆对话框:输入登陆信息,实现登陆功能,转到注册界面。注册对话框:输入注册信息,实现注册功能。

对话框界面布局xml文件:

01<?xml version="1.0" encoding="utf-8"?>
02<LinearLayout
04   android:layout_width="fill_parent"
05   android:layout_height="wrap_content"
06   android:orientation="vertical">
07     
08   <TextView
09      android:id="@+id/txt_loginerror"
10      android:layout_height="wrap_content"
11      android:layout_width="wrap_content"
12      android:layout_marginLeft="20dip"
13      android:layout_marginRight="20dip"
14      android:textColor="#ff0000"
15      android:text="输入的账号和密码不正确"
16      android:gravity="left"
17      android:textAppearance="?android:attr/textAppearanceMedium"
18      android:visibility="invisible"
19   />
20    
21    
22   <TextView
23      android:id="@+id/username"
24      android:layout_height="wrap_content"
25      android:layout_width="wrap_content"
26      android:layout_marginLeft="20dip"
27      android:layout_marginRight="20dip"
28      android:text="账号"
29      android:gravity="left"
30      android:textAppearance="?android:attr/textAppearanceMedium"
31   />
32       
33    <EditText
34      android:id="@+id/txt_username"
35      android:layout_height="wrap_content"
36      android:layout_width="fill_parent"
37      android:layout_marginLeft="20dip"
38      android:layout_marginRight="20dip"
39      android:autoText="false"
40      android:capitalize="none"
41      android:gravity="fill_horizontal"
42      android:textAppearance="?android:attr/textAppearanceMedium"
43      />
44    <TextView
45      android:id="@+id/password"
46      android:layout_height="wrap_content"
47      android:layout_width="wrap_content"
48      android:layout_marginLeft="20dip"
49      android:layout_marginRight="20dip"
50      android:textAppearance="?android:attr/textAppearanceMedium"
51      android:text="密码"
52      android:gravity="left"
53      />
54    <EditText
55      android:id="@+id/txt_password"
56      android:layout_height="wrap_content"
57      android:layout_width="fill_parent"
58      android:layout_marginLeft="20dip"
59      android:layout_marginRight="20dip"
60      android:autoText="false"
61      android:capitalize="none"
62      android:gravity="fill_horizontal"
63      android:textAppearance="?android:attr/textAppearanceMedium"
64     />
65      
66        <TextView
67      android:id="@+id/txt_toregister"
68      android:layout_height="wrap_content"
69      android:layout_width="wrap_content"
70      android:layout_marginLeft="20dip"
71      android:layout_marginRight="20dip"
72      android:textColor="#2200C1"
73      android:textAppearance="?android:attr/textAppearanceMedium"
74      android:text="没有账号?快速注册"
75      android:gravity="left"
76      />
77      
78</LinearLayout>

后台业务逻辑:

001/*
002 * 创建用户登陆的对话框
003 * 登陆界面包含两个按钮
004 * 1按钮为登陆
005 * 2按钮为不登陆试玩
006 * */
007private void CreateLoginAlert()
008{
009    AlertDialog.Builder ad =new AlertDialog.Builder(this);
010    ad.setTitle("账号登陆");
011    ad.setView(ViewUtility.GetView(this,R.layout.sub_logindialog));
012    adi=  ad.create();
013     
014  
015/*    
016    */
017    adi.setButton("登陆", new OnClickListener(){
018 
019        @Override
020        public void onClick(DialogInterface arg0, int arg1) {
021         
022            EditText password=    (EditText)adi.findViewById(R.id.txt_password);
023            EditText account =(EditText)adi.findViewById(R.id.txt_username);
024             
025            PassWord=password.getText().toString();
026            Account=account.getText().toString();
027            //生成登陆对话框
028            m_Dialog=ProgressDialog.show(Main.this, "请等待...", "正在为你登陆...",true);
029 
030            mRedrawHandler.sleep(100);       
031        }
032    });
033     
034    adi.setButton2("试  玩", new OnClickListener(){
035 
036        @Override
037        public void onClick(DialogInterface arg0, int arg1) {
038            ViewUtility.NavigateActivate(Main.this, SelectTheme.class);
039        }
040    });
041     
042    adi.show(); 
043     
044     
045     //设置注册点击事件
046    TextView  register=(TextView)adi.findViewById(R.id.txt_toregister);
047    register.setOnClickListener(new  TextView.OnClickListener()
048    {
049       public void onClick(View v){
050           //创建注册对话框
051         CreateRegisterAlert();
052           adi.dismiss();
053            
054       }
055   });
056     
057}
058 
059/*
060 *定时线程做验证用
061 * */
062private RefreshHandler mRedrawHandler = new RefreshHandler();
063 
064class RefreshHandler extends Handler {
065 
066    @Override
067    public void handleMessage(Message msg) {
068           
069        try{
070             
071             //调用网络接口,实现登陆指令
072           Boolean flags=    UserDataServiceHelper.Login(Account, PassWord);   
073           if(flags)   
074          {
075            //保存登陆信息
076            UserDataWriteHelper uw=new UserDataWriteHelper(Main.this);
077            uw.SaveUserInfoInDB("xuwenbing", Account);
078            //提示登陆成功
079             Toast.makeText(Main.this, "登陆成功", Toast.LENGTH_SHORT).show();       
080             //转到主题页面
081               ViewUtility.NavigateActivate(Main.this, SelectTheme.class);
082           }else
083           {
084            //失败 显示错误信息
085             Toast.makeText(Main.this, "登陆失败", Toast.LENGTH_SHORT).show();
086             adi.show();
087             adi.findViewById(R.id.txt_loginerror).setVisibility(View.VISIBLE);
088            }
089        }
090        catch(Exception e)
091        {
092            e.printStackTrace();                           
093        }
094        finally{
095            m_Dialog.dismiss();       
096        }
097    }
098    public void sleep(long delayMillis) {
099        this.removeMessages(0);
100        sendMessageDelayed(obtainMessage(0), delayMillis);
101    }
102};

对话框界面布局xml文件:

001<?xml version="1.0" encoding="utf-8"?>
002<LinearLayout
004   android:layout_width="fill_parent"
005   android:layout_height="wrap_content"
006   android:orientation="vertical">
007     
008    <LinearLayout
009   android:layout_width="fill_parent"
010   android:layout_height="wrap_content"
011   android:orientation="horizontal"
012   android:gravity="center"
013   >
014   <TextView
015      android:id="@+id/txt_loginerror"
016      android:layout_height="wrap_content"
017      android:layout_width="wrap_content"
018      android:layout_marginLeft="20dip"
019      android:layout_marginRight="20dip"
020      android:textColor="#ff0000"
021      android:text="输入的账号和密码不正确"
022      android:gravity="left"
023      android:textAppearance="?android:attr/textAppearanceMedium"
024      android:visibility="invisible"
025   />
026   </LinearLayout>
027    
028    <LinearLayout
029   android:layout_width="fill_parent"
030   android:layout_height="wrap_content"
031   android:orientation="horizontal"
032    
033   >
034   <TextView
035      android:id="@+id/username"
036      android:layout_height="wrap_content"
037      android:layout_width="wrap_content"
038      android:layout_marginLeft="20dip"
039      android:layout_marginRight="20dip"
040      android:text="账号"
041      android:gravity="left"
042      android:textAppearance="?android:attr/textAppearanceMedium"
043   />
044       
045    <EditText
046      android:id="@+id/txt_username"
047      android:layout_height="wrap_content"
048      android:layout_width="fill_parent"
049      android:layout_marginLeft="20dip"
050      android:layout_marginRight="20dip"
051      android:autoText="false"
052      android:capitalize="none"
053      android:gravity="fill_horizontal"
054      android:textAppearance="?android:attr/textAppearanceMedium"
055      />
056      </LinearLayout>
057       
058        <LinearLayout
059   android:layout_width="fill_parent"
060   android:layout_height="wrap_content"
061   android:orientation="horizontal"
062    
063   >
064    <TextView
065      android:id="@+id/password"
066      android:layout_height="wrap_content"
067      android:layout_width="wrap_content"
068      android:layout_marginLeft="20dip"
069      android:layout_marginRight="20dip"
070      android:textAppearance="?android:attr/textAppearanceMedium"
071      android:text="密码"
072      android:gravity="left"
073      />
074    <EditText
075      android:id="@+id/txt_password"
076      android:layout_height="wrap_content"
077      android:layout_width="fill_parent"
078      android:layout_marginLeft="20dip"
079      android:layout_marginRight="20dip"
080      android:autoText="false"
081      android:capitalize="none"
082      android:gravity="fill_horizontal"
083      android:textAppearance="?android:attr/textAppearanceMedium"
084     />
085     </LinearLayout>
086       <LinearLayout
087     android:layout_width="fill_parent"
088     android:layout_height="wrap_content"
089     android:orientation="horizontal"
090   >
091       <TextView
092      android:id="@+id/nicename"
093      android:layout_height="wrap_content"
094      android:layout_width="wrap_content"
095      android:layout_marginLeft="20dip"
096      android:layout_marginRight="20dip"
097      android:textAppearance="?android:attr/textAppearanceMedium"
098      android:text="昵称"
099      android:gravity="left"
100      />
101    <EditText
102      android:id="@+id/txt_nicename"
103      android:layout_height="wrap_content"
104      android:layout_width="fill_parent"
105      android:layout_marginLeft="20dip"
106      android:layout_marginRight="20dip"
107      android:autoText="false"
108      android:capitalize="none"
109      android:gravity="fill_horizontal"
110      android:textAppearance="?android:attr/textAppearanceMedium"
111     />
112    
113   </LinearLayout>
114      
115</LinearLayout>

后台业务逻辑:

01/*创建注册对话框*/
02private void CreateRegisterAlert()
03{
04    //registerdialog
05    AlertDialog.Builder ad =new AlertDialog.Builder(this);
06    ad.setTitle("注册账号");
07    ad.setView(ViewUtility.GetView(this,R.layout.sub_registerdialog));
08    registerdialog=  ad.create();
09     
10    registerdialog.setButton("注册", new OnClickListener(){
11 
12        @Override
13        public void onClick(DialogInterface arg0, int arg1) {
14         
15            EditText password=    (EditText)registerdialog.findViewById(R.id.txt_password);
16            EditText account =(EditText)registerdialog.findViewById(R.id.txt_username);
17            EditText nicename =(EditText)registerdialog.findViewById(R.id.txt_nicename);
18             
19            PassWord=password.getText().toString();
20            Account=account.getText().toString();
21            NiceName=nicename.getText().toString();
22            //生成注册对话框
23            m_Dialog=ProgressDialog.show(Main.this, "请等待...", "正在为你注册...",true);
24 
25            mRegsiterHandler.sleep(100);       
26        }
27    });
28     
29    registerdialog.setButton2("试  玩", new OnClickListener(){
30 
31        @Override
32        public void onClick(DialogInterface arg0, int arg1) {
33            ViewUtility.NavigateActivate(Main.this, SelectTheme.class);
34        }
35    });
36     
37    registerdialog.show();     
38}
39 
40/*
41 *定时注册程序
42 * */
43private RegsiterHandler mRegsiterHandler = new RegsiterHandler();
44 
45class RegsiterHandler extends Handler {
46 
47    @Override
48    public void handleMessage(Message msg) {
49           
50        try{
51             
52             //调用网络接口,实现注册指令
53           Boolean flags=    UserDataServiceHelper.Register(Account, PassWord,NiceName);   
54           if(flags)   
55          {
56            //保存注册信息
57            UserDataWriteHelper uw=new UserDataWriteHelper(Main.this);
58            uw.SaveUserInfoInDB("xuwenbing", Account);
59            //提示注册成功
60             Toast.makeText(Main.this, "注册成功", Toast.LENGTH_SHORT).show();       
61             //转到主题页面
62               ViewUtility.NavigateActivate(Main.this, SelectTheme.class);
63           }else
64           {
65            //失败 显示错误信息
66             Toast.makeText(Main.this, "注册失败", Toast.LENGTH_SHORT).show();
67             registerdialog.show();
68             registerdialog.findViewById(R.id.txt_loginerror).setVisibility(View.VISIBLE);
69            }
70        }
71        catch(Exception e)
72        {
73            e.printStackTrace();                           
74        }
75        finally{
76            m_Dialog.dismiss();       
77        }
78    }
79    public void sleep(long delayMillis) {
80        this.removeMessages(0);
81        sendMessageDelayed(obtainMessage(0), delayMillis);
82    }
83};

两个网络接口功能:

1//调用网络接口,实现登陆指令
2Boolean flags=    UserDataServiceHelper.Login(Account, PassWord); 
3//调用网络接口,实现注册指令
4Boolean flags=    UserDataServiceHelper.Register(Account, PassWord,NiceName); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值