Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 781|回复: 0

Android开发之对话框实现登陆注册功能-  Android学习

[复制链接]

该用户从未签到

发表于 2011-10-24 14:49:13 | 显示全部楼层 |阅读模式
前言:
   在android的应用中越来越多的包含了网络互动功能,这就带来了注册,登陆账号功能.本文完整的介绍对话框的方式实现用户登陆功能.
1         呈现效果和实现说明
下面是实现的效果图

                      登陆界面

                注册界面
实现的效果说明:
登陆效果: 应用程序判断当前用户还未登陆,弹出登陆对话框,用户输入账号和密码信息后,传到服务器验证,验证成功后,现实Toast 成功信息,并转到其他界面
注册效果:用户如没有账号,则点击登陆对话框的 “没有账号,快速注册账号”
        弹出注册界面,用户输入注册信息,点击注册按钮,注册成功后,弹出toast信息”注册成功”,完成注册后,转到其他功能界面。
功能实现说明:
整个功能大体上分两块
登陆对话框:输入登陆信息,实现登陆功能,转到注册界面
注册对话框:输入注册信息,实现注册功能
2         登陆对话框的实现
2.1                 对话框界面布局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"

   androidrientation="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>
复制代码
2.2                后台业务逻辑
/*

     * 创建用户登陆的对话框

     * 登陆界面包含两个按钮

     * 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);

        }

    };
复制代码
3 注册对话框的实现
     3.1  对话框界面布局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>
复制代码
3.2  后台业务逻辑
/*创建注册对话框*/

    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);  
   两个网络接口功能,在下一篇介绍 android 网络传输的架构,和实现。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 23:43 , Processed in 0.354066 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表