热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android实现简易登录注册界面及逻辑设计

这篇文章主要为大家详细介绍了android实现简易登录注册界面及逻辑设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了android实现登录注册界面及逻辑设计,供大家参考,具体内容如下

1. 第一步 新建文件(相信各位码农一定会这一步)略。

2. 第二步 登录注册界面设计

登录界面主要包括几大控件,如登录、注册按钮,账号(Button)、密码输入框(Editext)、复选框等。可以利用shape参数对控件进行美化。界面设计可以线性布局嵌套使用,这样可以很好的对控件调整,美化界面。

注册界面主要包括EdiText、Radio button、button、checkbox等,与登录界面相同,可以利用shape参数改变编辑框的颜色和边角,使得界面简洁而美化。

效果如下:

3. 第三步 注册界面逻辑设计

注册界面的逻辑功能为将注册的信息返回给登录界面(以及存入数据库),逻辑设计如下:

public class RegisterActivity extends AppCompatActivity {
    private String sex, infor;
    @Override
    protected void onCreate(Bundle saveInstanceState) {
        super.onCreate(saveInstanceState);
        setContentView(R.layout.activity_main2);
 /**
  *获取控件的id
  **/
        RadioGroup gender = (RadioGroup) findViewById(R.id.group);
        final RadioButton male = (RadioButton) findViewById(R.id.radioButton);
        final RadioButton female = (RadioButton) findViewById(R.id.radioButton2);
        final Spinner spinner = (Spinner) findViewById(R.id.spinner);
        final CheckBox c1 = (CheckBox) findViewById(R.id.checkBox);
        final CheckBox c2 = (CheckBox) findViewById(R.id.checkBox2);
        final CheckBox c3 = (CheckBox) findViewById(R.id.checkBox3);
        final CheckBox c4 = (CheckBox) findViewById(R.id.checkBox4);
        Button button1 = (Button) findViewById(R.id.but);
 /**
  * 获取checkbox里勾选的性别
  **/
        gender.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                if (checkedId == male.getId()) {
                    sex = male.getText().toString();
                } else {
                    sex = female.getText().toString();
                }
            }
        });
 /**
  * 设置注册按钮的事件监听器,实现从注册界面到登录界面的跳转
  **/
        Button buttton1 = (Button) findViewById(R.id.but);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
  /**
   * 将checkbox里的选中的值赋给hobby
   **/
                String hobby = " ";
                if (c1.isChecked()) {
                    hobby += c1.getText().toString();
                }
                if (c2.isChecked()) {
                    hobby += c2.getText().toString();
                }
                if (c3.isChecked()) {
                    hobby += c3.getText().toString();
                }
                if (c4.isChecked()) {
                    hobby += c4.getText().toString();
                }
  /**
   * 将Spinner里的值赋给spin,将所有的信息法如infor中
   **/
                String spin = spinner.getSelectedItem().toString();
                String site1 = ((EditText) findViewById(R.id.username1)).getText().toString();
                String site2 = ((EditText) findViewById(R.id.password1)).getText().toString();
                String site3 = ((EditText) findViewById(R.id.password2)).getText().toString();
                infor = "用户:" + site1 + "\n性别:" + sex + "\n学历:" + spin + "\n爱好:" + hobby;
  /**
   * 判断编辑框内容是否为空
   **/
                if (!"".equals(site1) && !"".equals(site2) && !"".equals(site3)) {
                    Toast.makeText(Main2Activity.this, infor, Toast.LENGTH_LONG).show();
                    if (site2.equals(site3)) {
                        Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
   /**
    * 将注册的信息打包,通过intent传给登录程序
    **/                  
                        Bundle bundle = new Bundle();
                        bundle.putCharSequence("site1", site1);
                        bundle.putCharSequence("site2", site2);
                        bundle.putCharSequence("site3", site3);
                        bundle.putCharSequence("infor", infor);
                        intent.putExtras(bundle);
                        setResult(0x11, intent);
                        finish();
                    } else {
                        Toast.makeText(Main2Activity.this, "请确认密码一致", Toast.LENGTH_SHORT).show();
                    }
                } else {
                    Toast.makeText(Main2Activity.this, "请将信息填写完整", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

4. 第四步 登录界面逻辑设计

登录面的逻辑功能主要是获取注册界面返回的信息并填入编辑框,和将账号密码进行匹配,实现登录功能;

public class MainActivity extends AppCompatActivity {
 /**
  * 将注册界面返回的账号密码填入编辑框
  **/
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0x11 && resultCode == 0x11) {
            Bundle bundle = data.getExtras();
            String username = bundle.getString("site1");
            String password = bundle.getString("site2");
            String information=bundle.getString("infor");
            EditText et_username = (EditText) findViewById(R.id.username);
            EditText et_password = (EditText) findViewById(R.id.password);
            et_username.setText(username);
            et_password.setText(password);
            
        }
    }

    @Override
    protected void onCreate(Bundle saveInstanceState) {
        super.onCreate(saveInstanceState);
        setContentView(R.layout.activity_main);
        Button login = (Button) findViewById(R.id.login);
        final EditText ET_username = (EditText) findViewById(R.id.username);
        final EditText ET_password = (EditText) findViewById(R.id.password);
          Button btn = (Button) findViewById(R.id.btn);
 /**
  * 给登录按钮设置单击事件监听器
  **/
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String inusername = ET_username.getText().toString();
                String inpassword = ET_password.getText().toString();
   if (inusername != null && inpassword != null) {
                if (inusername.equals("admin") && inpassword.equals("admin")){
                        Intent intent = new Intent(MainActivity.this, SuccessActivity.class);
                        startActivity(intent);

                    } else {

                        new AlertDialog.Builder(MainActivity.this).setTitle("登陆信息有误").setMessage("请输入正确的账户名与密码")
                                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialogInterface, int i) {

                                    }
                                }).show();

                    }
                }
                    else {
                    Toast.makeText(MainActivity.this, "请输入用户名和密码", Toast.LENGTH_SHORT).show();
                }
            }
        });

    /**
     * 为注册按钮设置单机事件监听器
     **/
        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, RegisterActivity.class);
                startActivityForResult(intent, 0x11);
            }
        });

    }
  
}

*5. 第五步 完善工作

具体的简易登录注册逻辑代码完成,接下来就可以为其设计启动界面和登录成功界面,注意:Activity组件需要在Mainfest文件里注册。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 在寻找轻量级Ruby Web框架的过程中,您可能会遇到Sinatra和Ramaze。两者都以简洁、轻便著称,但它们之间存在一些关键区别。本文将探讨这些差异,并提供详细的分析,帮助您做出最佳选择。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文将详细探讨 Java 中提供的不可变集合(如 `Collections.unmodifiableXXX`)和同步集合(如 `Collections.synchronizedXXX`)的实现原理及使用方法,帮助开发者更好地理解和应用这些工具。 ... [详细]
  • 本文详细探讨了Java中的ClassLoader类加载器的工作原理,包括其如何将class文件加载至JVM中,以及JVM启动时的动态加载策略。文章还介绍了JVM内置的三种类加载器及其工作方式,并解释了类加载器的继承关系和双亲委托机制。 ... [详细]
  • 本文介绍了如何在iOS应用中自定义导航栏按钮,包括使用普通按钮和图片生成导航条专用按钮的方法。同时,探讨了在不同版本的iOS系统中实现多按钮布局的技术方案。 ... [详细]
  • 本文介绍如何在Windows Forms应用程序中使用C#实现DataGridView的多列排序功能,包括升序和降序排序。 ... [详细]
  • Eclipse 下 JavaFX 程序开发指南
    本文介绍了 JavaFX,这是一个用于创建富客户端应用程序的 Java 图形和媒体工具包,并详细说明了如何在 Eclipse 环境中配置和开发 JavaFX 应用。 ... [详细]
  • 本文深入探讨了 Oracle 数据库的网络配置,包括全局数据库名、实例名等关键参数的设置与作用,旨在为数据库管理员和开发人员提供全面的参考。 ... [详细]
  • 本篇文章介绍如何将两个分别表示整数的链表进行相加,并生成一个新的链表。每个链表节点包含0到9的数值,如9-3-7和6-3相加得到1-0-0-0。通过反向处理链表、逐位相加并处理进位,最终再将结果链表反向,即可完成计算。 ... [详细]
  • 本文探讨了C++编程中理解代码执行期间复杂度的挑战,特别是编译器在程序运行时生成额外指令以确保对象构造、内存管理、类型转换及临时对象创建的安全性。 ... [详细]
  • 本文探讨了如何利用HTML5和JavaScript在浏览器中进行本地文件的读取和写入操作,并介绍了获取本地文件路径的方法。HTML5提供了一系列API,使得这些操作变得更加简便和安全。 ... [详细]
  • 交互式左右滑动导航菜单设计
    本文介绍了一种使用HTML和JavaScript实现的左右可点击滑动导航菜单的方法,适用于需要展示多个链接或项目的网页布局。 ... [详细]
  • 在MFC开发中,TreeCtrl控件因其强大的层次结构展示能力而被广泛应用,例如在资源管理器视图中。本文将详细介绍如何高效地利用TreeCtrl控件,包括设置属性、添加项目以及使用图像列表等技巧。 ... [详细]
author-avatar
Li修贤_594
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有