当前位置: 首页 > article >正文

移动应用开发:简易登录页

文章目录

  • 简介
  • 一,创建新活动
  • 二,设计UI布局
  • 三,编写活动代码
  • 四,运行应用程序
  • 注意


简介

使用Android Studio编写的简单Android 登录应用程序,该应用程序包含一个登录界面,具有账号和密码两个文本框,以及退出和提交按钮。按下退出按钮将退出整个程序,按下提交按钮将根据给定的账号和密码显示相应的消息。

UI界面效果图
在这里插入图片描述

一,创建新活动

1,File——New——Activity——Empty Activity。
在这里插入图片描述
2,输入活动名称:LoginActivity,选择语言为Java;单击Finish按钮。
在这里插入图片描述

3,查看新建活动代码和布局文件。
在这里插入图片描述

二,设计UI布局

打开res/layout/activity_login.xml文件,并添加以下内容以设计登录界面:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp"
    tools:context=".LoginActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="120dp"
        android:layout_marginBottom="50dp"
        android:layout_gravity="center"
        android:text="简易登录页"
        android:textSize="35dp"
        android:textStyle="bold" />

    <LinearLayout
        android:layout_gravity="center"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="账号:"
            android:textSize="20dp"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/etUsername"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入账号"
            android:inputType="text" />
    </LinearLayout>

    <LinearLayout
        android:layout_gravity="center"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:text="密码:"
            android:textSize="20dp"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/etPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入密码"
            android:inputType="textPassword" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="380dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btnSubmit"
            android:layout_width="80dp"
            android:layout_height="50dp"
            android:layout_marginTop="16dp"
            android:layout_marginLeft="70dp"
            android:text="提交" />

        <Button
            android:id="@+id/btnExit"
            android:layout_width="80dp"
            android:layout_height="50dp"
            android:layout_marginTop="16dp"
            android:layout_marginLeft="50dp"
            android:text="退出" />
    </LinearLayout>

    <TextView
        android:id="@+id/tvMessage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:gravity="center"
        android:visibility="gone" />
    
</LinearLayout>

三,编写活动代码

打开LoginActivity.java文件,并添加以下代码:

package com.example.mycontacts;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class LoginActivity extends AppCompatActivity {

    private EditText etUsername;
    private EditText etPassword;
    private Button btnSubmit;
    private Button btnExit;
    private TextView tvMessage;

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

        etUsername = findViewById(R.id.etUsername);
        etPassword = findViewById(R.id.etPassword);
        btnSubmit = findViewById(R.id.btnSubmit);
        btnExit = findViewById(R.id.btnExit);
        tvMessage = findViewById(R.id.tvMessage);

        btnSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username = etUsername.getText().toString();
                String password = etPassword.getText().toString();

                if ("test".equals(username) && "123".equals(password)) {
                    tvMessage.setText("登录成功");
                    tvMessage.setVisibility(View.VISIBLE);
                } else {
                    tvMessage.setText("登录失败");
                    tvMessage.setVisibility(View.VISIBLE);
                }
            }
        });

        btnExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish(); // 关闭当前活动,退出应用(如果只有一个活动)
                // 如果需要完全退出应用(包括所有活动),可以使用以下代码
                // System.exit(0);
            }
        });
    }
}

四,运行应用程序

  1. 启动Android模拟器。
    在这里插入图片描述

  2. 点击Android Studio工具栏上的“Run”按钮(绿色三角形)。
    在这里插入图片描述

  3. 启动成功。
    在这里插入图片描述

  4. 在设备或模拟器上查看应用程序,输入账号和密码并点击按钮进行测试(正确的账号为test,密码为123)。
    在这里插入图片描述

注意

  • System.exit(0); 可以完全退出应用程序,包括所有活动,但在Android中通常不推荐使用,因为Android有自己的活动生命周期管理。
  • finish(); 只关闭当前活动。如果这是应用程序的唯一活动,那么它将退出应用程序。
  • 实际项目中,密码不应硬编码在代码中,应使用安全的存储和验证方法。

http://www.kler.cn/a/388990.html

相关文章:

  • Camera Tuning中AE/AWB/AF基础知识介绍
  • 【Qt】Macbook M1下载安装
  • vue3+vite 前端打包不缓存配置
  • Tomcat与Nginx之全面比较
  • 从 MySQL 5.7 到 8.0:理解 GROUP BY 的新规则与实战优化20241112
  • 生成模型——PixelRNN与PixelCNN
  • 用redis实现签到功能
  • 屏幕后期处理
  • 深度学习之卷积问题
  • Flutter鸿蒙next 使用 BLoC 模式进行状态管理详解
  • 【Axure视频教程】多选按钮控制元件显示和隐藏
  • 汽车共享管理:SpringBoot技术深度解析
  • 【Spring 框架】初识 Spring
  • 鸿蒙系统:安卓与iOS的强劲对手
  • Python与Excel交互:pandas库安装及基本用法
  • 专业140+总分410+东北大学841考研经验东大电子信息与通信工程通信专业基础真题,大纲,参考书
  • SPIRE: Semantic Prompt-Driven Image Restoration 论文阅读笔记
  • ThingsBoard规则链节点:Clear Alarm节点详解
  • Spark SQL大数据分析快速上手-DataFrame应用体验
  • jmeter常用配置元件介绍总结之用linux服务器压测
  • 如何让ffmpeg运行时从当前目录加载库,而不是从/lib64
  • React的概念以及发展前景如何?
  • 2024-2025第九届华为ICT大赛中国创新赛问题解答
  • 【Python】Pygame实战:实现基础跑酷游戏机(附源码)
  • Redis设计与实现 学习笔记 第十六章 Sentinel
  • 前端实现文件下载常用几种方式