Android Studio製作簡單登錄界面

来源:https://www.cnblogs.com/tututut/p/18125357
-Advertisement-
Play Games

Android Studio製作簡單登錄界面 應用線性佈局設計登錄界面,要求點擊輸入學號時彈出數字鍵盤界面,點擊輸入密碼時彈出字母鍵盤,出現的文字、數字、尺寸等全部在values文件夾下相應.xml文件中設置好,使用時直接引用。當用戶名或密碼為空,顯示一個提示信息“用戶名與密碼不能為空!”,當用戶名... ...


實現目標

應用線性佈局設計登錄界面,要求點擊輸入學號時彈出數字鍵盤界面,點擊輸入密碼時彈出字母鍵盤,出現的文字、數字、尺寸等全部在values文件夾下相應.xml文件中設置好,使用時直接引用。當用戶名或密碼為空,顯示一個提示信息“用戶名與密碼不能為空!”,當用戶名和密碼匹配,顯示“登錄成功”。

效果圖如下:

實現過程

新建項目

新建一個項目如圖所示:

UI設計

1.新建login.xml,選擇線性佈局

步驟如下:

設計登錄頁面

LinearLayout是線性佈局,佈局中的組件按照垂直或者水平方向進行排列

gravity:設置自身內部元素的對齊方式

layout_gravity:用來控制該控制項在包含該控制項的父控制項中的位置

本設計採用垂直線性佈局,如圖所示:

控制項類型: EditText 是一個允許用戶輸入和編輯文本的控制項。

android:id: 這個屬性為控制項設置了一個唯一的ID(@+id/ed2),使得開發者可以在Java中通過這個ID來引用這個控制項。

android:layout_width 和 android:layout_height: 這些屬性定義了控制項的寬度和高度。531dp 指定了寬度為531設備獨立像素,wrap_content 表示高度會根據內容的大小自動調整。

實現代碼如下:

<?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:id="@+id/login"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="25dp"
    android:background="@color/white"
    tools:context="com.example.myapplication1.LoginActivity"
    android:orientation="vertical"
    android:weightSum="1">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login_page_title"
        android:textSize="@dimen/text_size_large"
        android:textColor="@android:color/black"
        android:layout_gravity="center_horizontal"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center"
        android:layout_weight="0.55">
        <LinearLayout
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="@dimen/label_width"
                android:layout_height="wrap_content"
                android:text="@string/student_id_label"
                android:textSize="@dimen/text_size_medium"
                android:textColor="@android:color/black"/>

            <EditText
                android:id="@+id/ed1"
                android:layout_width="531dp"
                android:layout_height="wrap_content"
                android:minHeight="48dp"
                android:padding="12dp"
                android:hint="@string/student_id_hint"
                android:inputType="number"
                android:textColor="@color/black"
                android:textColorHint="@android:color/darker_gray"
                android:visibility="visible" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="@dimen/label_width"
                android:layout_height="wrap_content"
                android:text="@string/password_label"
                android:textSize="@dimen/text_size_medium"
                android:textColor="@android:color/black"/>
            <EditText
                android:id="@+id/ed2"
                android:layout_width="531dp"
                android:layout_height="wrap_content"
                android:minHeight="48dp"
                android:padding="12dp"
                android:hint="@string/password_hint"
                android:inputType="text"
                android:textColor="@color/black"
                android:textColorHint="@android:color/darker_gray"
                android:visibility="visible" />
        </LinearLayout>
    </LinearLayout>

    <Button
        android:layout_width="@dimen/login_button_width"
        android:layout_height="wrap_content"
        android:text="@string/login_button_text"
        android:textSize="@dimen/text_size_button"
        android:id="@+id/bt"
        android:layout_gravity="center_horizontal" />
        
</LinearLayout>

2.將文本、數字和尺寸等資源從佈局文件中移動到values文件夾下的相應.xml文件中並引用,需要按照以下步驟操作:

文本(字元串)資源:在values文件夾下的strings.xml文件中定義。

尺寸資源:在values文件夾下的dimens.xml文件中定義。

顏色資源:已經在colors.xml中定義,可以繼續添加新的顏色或使用已有的顏色。

具體代碼如下:

strings.xml

<resources>
    <string name="login_page_title">登錄頁面</string>
    <string name="student_id_hint">請輸入學號</string>
    <string name="password_hint">請輸入密碼</string>
    <string name="student_id_label">學號:</string>
    <string name="password_label">密碼:</string>
    <string name="login_button_text">登錄</string>
</resources>

dimens.xml

<resources>
    <dimen name="text_size_large">30dp</dimen>
    <dimen name="text_size_medium">18dp</dimen>
    <dimen name="login_button_width">285dp</dimen>
    <dimen name="login_input_width">300dp</dimen>
    <dimen name="label_width">65dp</dimen>
    <dimen name="text_size_button">20dp</dimen>
</resources>

調用

1.新建一個LoginActivity進行調用,如圖所示:

定義一個登錄界面的行為:包含兩個文本輸入框(EditText)用於輸入用戶名和密碼,以及一個按鈕(Button)用於提交登錄信息。

成員變數:

  • usertext 和 passtext 是EditText類型的變數,分別用於獲取用戶輸入的用戶名和密碼。

onCreate方法:

  • 在onCreate方法中,首先調用super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)來初始化界面。

ButtonListener 類:

  • ButtonListener實現了View.OnClickListener介面,用於處理按鈕點擊事件。

  • 在其onClick方法中,首先獲取usertext和passtext中的文本內容。

  • 然後,通過一系列的條件判斷,檢查用戶名和密碼是否為空,是否匹配預設的正確用戶名("2021")和密碼("abc")。

  • 如果用戶名或密碼為空,顯示一個提示信息“用戶名與密碼不能為空!”。

  • 如果用戶名和密碼匹配,顯示“登錄成功”。

具體實現代碼如下:

package com.example.myapplication1;

import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.view.View;

import androidx.appcompat.app.AppCompatActivity;

public class LoginActivity extends AppCompatActivity {
        private EditText usertext;
        private EditText passtext;
        private Button loginbutton;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.login);
            usertext=(EditText)this.findViewById(R.id.ed1);
            passtext=(EditText)this.findViewById(R.id.ed2);
            loginbutton=(Button)this.findViewById(R.id.bt);
            loginbutton.setOnClickListener(new ButtonListener());
        }
        private class ButtonListener implements View.OnClickListener{
            @Override
            public void onClick(View v){
                String user=usertext.getText().toString();
                String pass=passtext.getText().toString();
                if (user.equals("")||pass.equals("")){
                    Toast.makeText(LoginActivity.this,"用戶名與密碼不能為空!",Toast.LENGTH_SHORT).show();
                }
                else if (user.equals("2021")&&pass.equals("abc")){
                    Toast.makeText(LoginActivity.this,"登陸成功",Toast.LENGTH_SHORT).show();
                }
                else{
                    Toast.makeText(LoginActivity.this,"用戶名或密碼輸入有誤,請更正後重新輸入!",Toast.LENGTH_SHORT).show();
                }
            }
        }
    }

配置文件

AndroidManifest.xml是整個Android應用程式的全局面描述配置文件

清單文件中通常包含以下六項信息:

  • 聲明應用程式的包名: 用來識別應用程式的唯一標誌

  • 描述應用程式組件

  • 確定宿主應用組件進程

  • 聲明應用程式擁有的許可權

  • 定義應用程式所支持API的最低等級

  • 列舉應用程式必須鏈接的庫

添加LoginActivity到 AndroidManifest.xml中

具體代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat"
        tools:targetApi="31">
        <activity
            android:name=".LoginActivity"
            android:exported="true"
            android:label="@string/app_name"
            android:theme="@style/Theme.AppCompat">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

總結

以上就是簡單的登錄界面的設計的所有內容,簡單介紹了線性佈局以及相應屬性的應用。

如果這篇文章對你或你的朋友有幫助的話,請多多支持和分享,讓更多的人受益。同時,如果你有任何問題或疑問,也歡迎在下方留言,我會儘快回覆並幫助你解決問題。讓我們一起共同進步,共同學習!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在實際項目中,從Kafka到HDFS的數據是每天自動生成一個文件,按日期區分。而且Kafka在不斷生產數據,因此看看kettle是不是需要時刻運行?能不能按照每日自動生成數據文件? 為了測試實際項目中的海豚定時調度從Kafka到HDFS的Kettle任務情況,特地提前跑一下海豚定時調度這個任務,看看 ...
  • 在Centos7中使用的包管理工具是yum,當然使用包管理工具安裝也是最方便的。 本文操作內容需要在root用戶下,否則有些步驟無法成功執行。 系統環境信息展示 安裝 MySQL 提供的 RPM wget https://dev.mysql.com/get/mysql80-community-rel ...
  • 本文介紹瞭如何結合LFU淘汰策略與訪問頻率優化,實現在電商平臺等業務場景下,精準管理Redis中20萬熱點數據。 ...
  • 主從延遲調優思路 1、什麼是主從延遲? 本質是從庫的回放跟不上主庫,回放階段的延遲 2、主從延遲常見的原因有哪些? 1、大事務,從庫回放時間較長,導致主從延遲 2、主庫寫入過於頻繁,從庫回放跟不上 3、參數配置不合理 4、主從硬體差異 5、網路延遲 6、表沒有主鍵或者索引大量頻繁的更新 7、一些讀寫 ...
  • 我們討論面試中各大廠的SQL演算法面試題,往往核心考點就在於視窗函數,所以掌握好了視窗函數,面對SQL演算法面試往往事半功倍。 ...
  • MySQL安裝 官方: https://www.mysql.com/ MySQL官方提供了兩種不同的版本: 社區版本(MySQL Community Server) 免費, MySQL不提供任何技術支持 商業版本(MySQL Enterprise Edition) 收費,可以使用30天,官方提供技術 ...
  • 本次按照目前最新版本Sqlserver2022進行記錄 先決條件 任何受支持的 Linux 發行版上的 Docker 引擎 1.8 及更高版本。 有關詳細信息,請參閱 Install Docker(安裝 Docker)。 有關硬體要求和處理器支持的詳細信息,請參閱SQL Server 2022:硬體 ...
  • 運算符用於執行程式代碼運算,會針對一個以上操作數項目來進行運算。 考慮以下計算: 7 + 5 = 12 以上實例中 7、5 和 12 是操作數。 運算符 + 用於加值。 運算符 = 用於賦值。 TypeScript 主要包含以下幾種運算: 算術運算符 邏輯運算符 關係運算符 按位運算符 賦值運算符 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...