Android登录注册页面(第三次作业)

news2024/11/17 23:31:59

第三次作业 - 登录注册页面

题目要求

嵌套布局。使用线性布局的嵌套结构,实现登录注册的页面。(例4-3)

创建空的Activity

项目结构树如下图所示:

image-20231027223632461

注意:MainActivity.java文件并为有任何操作,主要功能集中在LoginActivity和SignUpActivity两个Activity中。

创建LoginActivity和SignUpAcivity

  1. 创建Activity

image-20231027224556713

  1. 创建LoginActivity和SignUpActivity

image-20231027224927233

  1. values文件夹中string.xml和color.xml修改

    • color.xml(添加blue代码)

      <?xml version="1.0" encoding="utf-8"?>
      <resources>
          <color name="purple_200">#FFBB86FC</color>
          <color name="purple_500">#FF6200EE</color>
          <color name="purple_700">#FF3700B3</color>
          <color name="teal_200">#FF03DAC5</color>
          <color name="teal_700">#FF018786</color>
          <color name="black">#FF000000</color>
          <color name="white">#FFFFFFFF</color> 
          <color name="blue">#FF7BBAF7</color> 
      </resources>
      
    • string.xml(添加如下代码)

      <string name="academic_prompt">请选择学历</string>
      <string-array name="academic" >
          <item>博士</item>
          <item>硕⼠</item>
          <item>大学</item>
          <item>高中</item>
      </string-array>
      

      image-20231027225843441

  2. 自定义按钮样式布局文件,并且命名为btn_press_blue

    • 如何创建自定义样式布局文件

      image-20231027225307809

    • 添加代码

      image-20231027225952119

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true">     <!--按压-->
            <shape>
                <solid android:color="#0082FF"/>
                <corners android:radius="10dp"/>
            </shape>
        </item>
    
        <item android:state_pressed="false">
            <shape>
                <solid android:color="@color/blue"/>
                <corners android:radius="10dp"/>
            </shape>
        </item>
    </selector>
    

修改LoginActivit和SignUpActivity的布局文件

  • activity_login.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingRight="16dp"
        android:paddingLeft="16dp">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="欢迎选择DIY"
            android:textSize="20sp"
            android:layout_centerHorizontal="true"
            />
    
        <!--设置用户栏-->
        <EditText
            android:id="@+id/username"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_marginTop="80dp"
            android:hint="用户名"
            android:textSize="20sp"
            android:textColor="#FFAD33"
            android:maxLines="1" />
        <!--密码栏-->
        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_below="@id/username"
            android:layout_marginTop="40dp"
            android:hint="密码"
            android:inputType="textPassword"
            android:textSize="20sp"
            android:textColor="#FFAD33"
            android:maxLines="1"/>
    
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/password"
            android:layout_marginTop="80dp">
            <Button
                android:id="@+id/btnLogin"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:layout_marginEnd="8dp"
                android:background="@drawable/btn_press_blue"
                android:text="登录"
                android:textColor="#FFFFFF"/>
    
            <Button
                android:id="@+id/btnRegister"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:background="@drawable/btn_press_blue"
                android:text="注册"
                android:textColor="#FFFFFF"/>
    
        </LinearLayout>
    
    
    </RelativeLayout>
    

    image-20231027230427916

  • activity_sign_up.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingRight="16dp"
        android:paddingLeft="16dp">
    
        <TextView
            android:id="@+id/signup_msg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="注册"
            android:textSize="25sp"
            android:layout_margin="25dp"
            android:layout_centerHorizontal="true"/>
    
        <EditText
            android:id="@+id/UserName_msg"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/signup_msg"
            android:singleLine="true"
            android:hint="用户名"/>
    
    
        <EditText
            android:id="@+id/PassWord_msg"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/UserName_msg"
            android:singleLine="true"
            android:hint="密码"/>
    
        <EditText
            android:id="@+id/RPassWord_msg"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/PassWord_msg"
            android:singleLine="true"
            android:hint="确认密码"/>
    
    <!--性别-->
            <TextView
                android:id="@+id/sex_msg"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/RPassWord_msg"
                android:layout_marginTop="10dp"
                android:textSize="20sp"
                android:text="性别:"/>
    
            <RadioGroup
                android:id="@+id/rg_sex"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/RPassWord_msg"
                android:layout_toRightOf="@+id/sex_msg"
                android:layout_marginTop="10dp"
                android:orientation="horizontal">
                <RadioButton
                    android:id="@+id/sex_male"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text=""
                    android:textSize="20sp"
                    android:checked="true"/>
    
                <RadioButton
                    android:id="@+id/sex_female"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text=""
                    android:textSize="20sp"/>
            </RadioGroup>
    
    
    <!--    学历-->
        <TextView
            android:id="@+id/academic_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="学历:"
            android:textSize="20sp"
            android:layout_below="@+id/rg_sex"
            android:layout_marginTop="20dp"/>
    
        <Spinner
            android:id="@+id/academic_msg"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:prompt="@string/academic_prompt"
            android:entries="@array/academic"
            android:spinnerMode="dialog"
            android:layout_below="@+id/rg_sex"
            android:layout_toRightOf="@+id/academic_text"
            android:layout_toEndOf="@id/academic_text"
            android:fadeScrollbars="true"
            android:scrollIndicators="right"
            android:textSize="20sp"/>
    
        <LinearLayout
            android:layout_marginTop="20dp"
            android:id="@+id/hobby_msg"
            android:layout_below="@+id/academic_msg"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="爱好:"
                android:textSize="20sp"/>
    
            <CheckBox
                android:id="@+id/hobby_swim"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="游泳"
                android:textSize="20sp"/>
    
            <CheckBox
                android:id="@+id/hobby_music"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="音乐"
                android:textSize="20sp"/>
    
            <CheckBox
                android:id="@+id/hobby_book"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="读书"
                android:textSize="20sp"/>
    
        </LinearLayout>
    
        <Button
            android:id="@+id/btn_RegisterPlus"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/hobby_msg"
            android:layout_marginTop="20dp"
            android:layout_centerHorizontal="true"
            android:text="注册"
            android:background="@drawable/btn_press_blue"
            android:onClick="onRegClick"/>
    
    
    </RelativeLayout>
    

    image-20231027230405347

这里我们看到布局文件并不是我们之前在color.xml预设的blue(蓝色)的颜色,修改values/themes/themes.xml文件内容即可。

image-20231027230623090

设置页面跳转和按钮的监听事件

LoginActivit.java

public class LoginActivity extends AppCompatActivity {
    private Button btnLogin, btnRegister;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //去掉标题行
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.activity_login);

        btnLogin = findViewById(R.id.btnLogin);
        btnRegister = findViewById(R.id.btnRegister);

        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });

        btnRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(LoginActivity.this, SignUpActivity.class);
                startActivity(intent);
            }
        });
    }
}

SignUpActivity.java

public class SignUpActivity extends AppCompatActivity {

    private Spinner spinner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sign_up);

        spinner = findViewById(R.id.academic_msg);
    }
    public void onRegClick(View view){
        Toast.makeText(this,spinner.getSelectedItem().toString(),Toast.LENGTH_SHORT).show();
    }
}

启动项目

最后启动项目,可能会报错,大概率是下面的错误:

image-20231027231316699

修改代码即可

image-20231027231419210

修改后点击Sync Now更新

image-20231027231508660

更新完毕后如下图所示:

image-20231027231548275

效果展示

image-20231027232125486

点击登录按钮,跳转到MainActivity页面,点击注册页面,跳转到注册页面,选择学历后,点击注册按钮后,Toast弹出显示你选择的学历。

如果大家在这个过程中遇到了问题,可以在评论区或者私信我✌️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1142357.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python---continue关键字对while...else结构的影响(只是跳过某次,之后继续正常结束,执行else)

回顾&#xff1a; 在Python循环中&#xff0c;经常会遇到两个常见的关键词&#xff1a;break 与 continue break&#xff1a;代表终止整个循环结构 continue&#xff1a;代表中止当前本次循环&#xff0c;继续下一次循环 break&#xff1a; 英 /breɪk/ v. 打破&#xff…

供应 JOSEF约瑟 电源监视继电器 HJZZ-92/2A HJZZ-91 DC220V

品牌&#xff1a;JOSEF约瑟名称:监视综合继电器型号:HJZZ-91、HJZZ-92/2A额定电压:48,110,220VDC/110,220,380VAC功率消耗:≤10W触点容量:250V5A 系列型号&#xff1a; HJZZ-91分闸、合闸、电源监视综合装置&#xff1b; HJZZ-92/1分闸、合闸、电源监视综合装置&#xff1b;…

SpringCore 完整学习教程1,入门级别

1. SpringApplication SpringApplication类提供了一种方便的方式来引导从main()方法启动的Spring应用程序。在很多情况下&#xff0c;你可以委托给静态的SpringApplication.run方法&#xff0c;如下面的例子所示: import org.springframework.boot.SpringApplication; import…

PgSQL-执行器机制-Unique算子

PgSQL-执行器机制-Unique算子 PgSQL中输出去重的元组有多种方法&#xff0c;比如通过HashAgg或者GroupAgg。这里我们介绍第三种方法&#xff0c;通过Unique算子来完成这个功能。当然语句上可以是&#xff1a;select distinct(id1) from t; 1、ExecUnique 执行器执行算子的函数都…

3.加载天地图

愿你出走半生,归来仍是少年&#xff01; 上一篇文章构建出来基础的白球&#xff0c;现在需要给它添加底图啦。先上最常用的天地图。 1.天地图 天地图做过Gis开发的应该都知道&#xff0c;需要先申请key然后才能使用。然后天地图是基于XYZ的标准进行切片的&#xff0c;所以直接…

FreeRTOS 延时函数和软件定时器 详解

目录 什么是延时函数&#xff1f; 1.延时函数分类 2.vTaskDelay 与 HAL_Delay 的区别 什么是定时器&#xff1f; 1.软件定时器优缺点 2.软件定时器原理 3.软件定时器相关配置 4.单次定时器和周期定时器 软件定时器相关 API 函数 1. 创建软件定时器 2. 开启软件定时器…

C++STL----list的使用

文章目录 list简介list的使用默认成员函数的使用list容器元素的修改front和backpush_front和pop_frontpush_back和pop_backinserterase list迭代器begin和endrbegin和rend list大小控制resizeclear list操作函数sortspliceremoveremove_ifuniquemergereverseassign CSTL----lis…

CloudFlare系列--使用第三方来自定义CDN的IP(笨牛详细版)

原文网址&#xff1a;CloudFlare系列--使用第三方来自定义CDN的IP(笨牛详细版)_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何使用自定义节点来提高CloudFlare的CDN节点的访问速度。 CloudFlare的CDN很强大&#xff0c;可以防DDos等攻击&#xff0c;也可以提高国外服务器的访…

假如我有一台服务器,我会让它提供三种服务

一、提供照片上传、存储和下载服务 随着移动互联网时代的持续快速发展&#xff0c;PC互联网日益势微&#xff0c;各大互联网门户网站的博客、空间也跟着凋零&#xff0c; 作为博客、空间的标配功能的相册也随之被关闭。 2019年3月6日网易相册发布停运公告并于当年5月8日正式停…

网络安全—小白自学

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟…

yo!这里是进程间通信

目录 前言 进程间通信简介 目的 分类 匿名通道 介绍 举例&#xff08;进程池&#xff09; 命名管道 介绍 举例 共享内存 介绍 共享内存函数 1.shmget 2.shmat 3.shmdt 4.shmctl 举例 1.框架 2.通信逻辑 消息队列 信号量 同步与互斥 理解信号量 后记…

漫谈广告机制设计 | 混排:广告与自然结果的交锋博弈(2)

话说前文&#xff0c;在彼此不同的利益面前&#xff0c;自然侧和广告侧在混排战场展开了一番较量&#xff0c;一个浑水摸鱼&#xff0c;一个暗渡陈仓。最终双方不得不坐下来&#xff0c;为了平台整体的利益&#xff0c;一起谈谈各自的诉求&#xff0c;商讨一下解决方案。 第三…

安装虚拟机(VMware)保姆级教程及配置虚拟网络编辑器和安装WindowsServer以及宿主机访问虚拟机和配置服务器环境

目录 一、操作系统 1.1.什么是操作系统 1.2.常见操作系统 1.3.个人版本和服务器版本的区别 1.4.Linux的各个版本 二、VMware Wworkstation Pro虚拟机的安装 1.下载与安装 注意&#xff1a;VMWare虚拟网卡 2.配置虚拟网络编辑器 三、安装配置 WindowsServer 1.创建虚拟…

讲述为什么要学习Adobe XD以及 Adobe XD下载安装

首先 我们要了解 Adobe XD 是个什么东西 XD是Adobe公司专门开发出来面向交互、界面设计的矢量绘图工具。 然后是 他可以做什么&#xff1f; 最基本的 可以做UI界面设置 所有 手机 平板 电脑等设备的UI界面 我们都可以通过XD完成 还有就是原型设置 我们可以做各种界面图 还有…

寄存器、CPU缓存、内存。以及他们之间的关系

寄存器 CPU寄存器是CPU内部的高速存储区域&#xff0c;用于临时存储数据和指令。寄存器是CPU的重要组成部分&#xff0c;用于提高程序的执行效率。它们比主存储器更快&#xff0c;可以使得CPU更有效地处理数据和执行指令。 寄存器可以分为不同类型&#xff0c;下面列出部分AR…

用baostock库获取上证50成分股

最近知道了baostock库&#xff0c;免费&#xff0c;开源&#xff08;www.baostock.com&#xff09; 用来试试看。获取上证50成分股&#xff1a; import baostock as bs import pandas as pd# 登陆系统 lg bs.login() # 显示登陆返回信息 print(login respond error_code:lg.…

Docker 镜像读写层核心概念:rootfs、Union mount、image以及layser原理详解

Docker 镜像读写层核心概念&#xff1a;rootfs、Union mount、image以及layser原理详解 文章目录 Docker 镜像读写层核心概念&#xff1a;rootfs、Union mount、image以及layser原理详解rootfsUnion mount为什么镜像层都是只读的去掉读写层的话会有什么问题 Docker镜像imageDoc…

LVS-keepalived实现高可用

概念&#xff1a; 本章核心&#xff1a; Keepalived为LVS应运而生的高可用服务。LVS的调度无法做高可用&#xff0c;预算keepalived这个软件&#xff0c;实现了调度器的高可用。 但是&#xff1a;Keeplived不是专门为LVS集群服务的&#xff0c;也可以做其他服务器的高可用 LVS…

Vue进阶(幺陆玖)项目部署后IE报 SCRIPT1002:语法错误 解决方案探讨

文章目录 一、前言二、组件懒加载2.1 什么是懒加载2.2 如何实现懒加载 三、延伸阅读 软件程序唤醒3.1 protocolCheck 实现3.2 自定义实现 四、拓展阅读 一、前言 Vue项目改造升级后&#xff0c;原本本地热部署后IE可正常打开的项目出现页面白屏且控制台给出SCRIPT1002:语法错误…

电动两轮车智能化浪潮崛起,移远通信以全场景解决方案引领户外出行新变革

凭借受众广泛、使用方便等优势&#xff0c;电动两轮出行越来越走俏&#xff0c;成为通勤、校园、景区等场景的不二之选。而随着物联网新技术的采用&#xff0c;智能化两轮车能为骑行者带来更多样化、更舒适的驾驶和交互体验&#xff0c;也成为“Z世代”的扮靓利器和出游好伙伴。…