android app控制ros机器人三(android登录界面)

news/2024/4/26 12:36:04/文章来源:https://blog.csdn.net/qq_38988221/article/details/131937588

接下来是二次开发的具体环节了,由于存在用户需求,用到ros-mobile不多,更偏向于android开发。

用ppt画了简单的展示界面,与用后交流界面的功能布局。先开发一代简易版本的app,后续可以丰富完善。ctrlc+v上线。

登录界面--在ros-mobile基础上增加登录界面,初代版本只设置登录按钮,账号密码也是固定的,后续完善吧

步骤1:创建登录界面布局

首先,在res/layout文件夹下创建一个新的XML布局文件activity_login.xml,用于呈现登录界面的UI元素。xml文件选择了layout.xml,查询了解到"app actions"文件夹通常用于定义应用的操作和快捷方式,而"values"文件夹用于存放应用中使用的字符串、颜色和其他资源的值。

<?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"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:padding="16dp"><EditTextandroid:id="@+id/editTextUsername"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="16dp"android:hint="请输入用户名"/><EditTextandroid:id="@+id/editTextPassword"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/editTextUsername"android:layout_marginTop="16dp"android:inputType="textPassword"android:hint="请输入密码"/><Buttonandroid:id="@+id/btnLogin"android:layout_width="395dp"android:layout_height="wrap_content"android:layout_below="@id/editTextPassword"android:layout_marginTop="16dp"android:text="登录" /></RelativeLayout></LinearLayout>

步骤2:创建登录Activity

java文件夹下创建一个新的LoginActivity类来管理登录界面的逻辑和交互。路径:ui/activities/LoginActivity.java

package com.schneewittchen.rosandroid.ui.activity;import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;import com.schneewittchen.rosandroid.R;
import com.schneewittchen.rosandroid.ui.activity.MainActivity;public class LoginActivity extends AppCompatActivity {private EditText usernameEditText;private EditText passwordEditText;private Button loginButton;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);usernameEditText = findViewById(R.id.editTextUsername);passwordEditText = findViewById(R.id.editTextPassword);loginButton = findViewById(R.id.btnLogin);loginButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 获取输入的用户名和密码String username = usernameEditText.getText().toString();String password = passwordEditText.getText().toString();// 这里可以添加登录逻辑,例如与服务器进行验证等// 假设用户名和密码都是 "robot",登录成功后跳转到主界面if (username.equals("robot") && password.equals("robot")) {Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();// 登录成功后跳转到主界面Intent intent = new Intent(LoginActivity.this, MainActivity.class);startActivity(intent);finish(); // 登录成功后关闭登录界面,防止用户按返回键回到登录界面} else {Toast.makeText(LoginActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT).show();}}});}
}

步骤3:更新AndroidManifest.xml

AndroidManifest.xml文件中添加登录Activity的声明。将登录界面作为启动界面。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="com.schneewittchen.rosandroid"><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/><applicationandroid:allowBackup="false"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"tools:ignore="GoogleAppIndexingWarning"tools:replace="android:icon"><activityandroid:name=".ui.activity.LoginActivity"android:label="@string/login_activity_title"android:theme="@style/AppTheme.NoActionBar"android:windowSoftInputMode="adjustResize"><!-- 设置为启动器 --><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name=".ui.activity.MainActivity"android:windowSoftInputMode="adjustResize"android:screenOrientation="unspecified"></activity><service android:name=".model.repositories.rosRepo.node.NodeMainExecutorService"><intent-filter><action android:name="org.ros.android.NodeMainExecutorService" /></intent-filter></service></application></manifest>

string.xml文件:

<string name="login_activity_title">robot</string>

styles.xml文件:后续美化在这块添加代码

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar"><!-- 样式的其他属性 --></style>

效果展示:

 

 

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

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

相关文章

RK3566 android代码编译

一、搭建环境 所用的ubuntu系统之前已编译过linux代码&#xff0c;所以只需安装编译android所需的环境。 安装jdk-8 如果之前系统没有安装则执行以下命令安装&#xff1a; sudo apt-get install openjdk-8-jdk 查看当前系统是否有jdk-8 $ sudo update-alternatives --conf…

吃透《西瓜书》第三章 线性模型:对数几率回归

&#x1f349; 吃瓜系列 教材&#xff1a;《机器学习》 周志华著 &#x1f552;时间&#xff1a;2023/7/26 目录 一、对数几率回归 1.1 定义和基本思想 1.2 对数记录回归建模 1.3 广义线性模型 1.3.1 指数族分布 1.3.2 广义线性模型的三条假设 1.4 对数几率回归的广义线…

HTML一些基础知识

1、Web标准&#xff1a;主要包含结构、表现、行为。结构用于对网页元素进行整理和分类&#xff0c;主要指HTML。表现用于设置网页元素的板式、颜色、大小等外观样式&#xff0c;主要指的是CSS。行为主要指的是网页模型的定义以及交互的编写&#xff0c;主要是js文件。 Html相当…

kali Linux 工具 BurpSuite-暴力破解

关于渗透的实验&#xff0c;我们大多数能在kali的工具集找到&#xff0c;其中关于抓包工具BurpSuite的使用&#xff0c;我做一个比较简单的实验————————暴力破解—————————— 暴力破解&#xff0c;顾名思义&#xff0c;就是我们把密码一个个尝试&#xff0c;只…

【MySQL】索引特性

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《零基础入门MySQL》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录 &#x1f449;没…

ReID网络:MGN网络(1) - 概述

Start MGN 1. 序言 现代基于感知的信息中&#xff0c;视觉信息占了80~85%。基于视觉信息的处理和分析被应用到诸如安防、电力、汽车等领域。 以安防市场为例&#xff0c;早在2017年&#xff0c;行业咨询公司IHS Market&#xff0c;我国在公共和私人领域安装有摄像头约1.76亿…

docker启动容器报错

报错信息 [rootDream soft]# docker run -it -d -p 8080:8080 tomcat eec9fab6b9ca06d2bbf1467aef05d8020ee60448978e10ac20c38888934f0a0b docker: Error response from daemon: driver failed programming external connectivity on endpoint hungry_euclid (163242f0079e72…

数值分析第五章节 用Python实现解线性方程组的直接解法

参考书籍&#xff1a;数值分析 第五版 李庆杨 王能超 易大义编 第5章 解线性方程组的直接解法 文章声明&#xff1a;如有发现错误&#xff0c;欢迎批评指正 文章目录 引言与预备知识高斯消去法列主元消去法 矩阵三角分解法杜利特尔分解法平方根法 向量和矩阵的范数误差分析 引言…

Python 进阶(五):os 模块

❤️ 博客主页&#xff1a;水滴技术 &#x1f338; 订阅专栏&#xff1a;Python 入门核心技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; 文章目录 1. 文件和目录的基本操作1.1 获取当前工作目录1.2 更改当前工作目录1.3 获取目录下所有…

qssh使用

到官网下载qssh的源码QSsh-botan-1&#xff0c;使用qtcreator打开后&#xff0c;直接编译&#xff0c;即可得到qssh的库 头文件将QSsh-botan-1\src\libs\ssh目录下的.h文件拷到include文件夹下&#xff0c;即为库头文件。 qssh有个问题&#xff0c;如果你将qssh的类放在子线程…

致敬图灵!HashData拥抱数据智能新时代!

图1&#xff1a;2023ACM中国图灵大会现场 生于1912年的艾伦图灵被称为“计算机科学之父”、“人工智能之父”。1966年&#xff0c;国际计算机协会&#xff08;ACM&#xff09;为了纪念这位卓越的科学家&#xff0c;设立了以其名字命名的ACM图灵奖&#xff0c;以表彰在计算机领…

MySQL | 常用命令示例

MySQL | 常用命令示例 一、启停MySQL数据库服务二、连接MySQL数据库三、创建和管理数据库四、创建和管理数据表五、数据备份和恢复六、查询与优化 MySQL是一款常用的关系型数据库管理系统&#xff0c;广泛应用于各个领域。在使用MySQL时&#xff0c;我们经常需要编写一些常用脚…

【初阶C语言】整数比大小

各位大佬的光临已是上上签 在C语言刷题过程中&#xff0c;一定遇到过很多比大小的题目&#xff0c;那么本节就专门介绍比大小的方法&#xff0c;若大佬们还有更优解&#xff0c;欢迎补充呀&#xff01; 本节讲解的方法主要有三种&#xff1a;1.条件判断 2.三目操作符 3.函数调…

干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充

前言 不从恶人的计谋&#xff0c;不站罪人的道路&#xff0c;不坐亵慢人的座位&#xff0c;惟喜爱耶和华的律法&#xff0c;昼夜思想&#xff0c;这人便为有福&#xff01;他要像一棵树栽在溪水旁&#xff0c;按时候结果子&#xff0c;叶子也不枯干。凡他所做的尽都顺利。 如…

14 Linux实操篇-进程管理(重点)

14 Linux实操篇-进程管理&#xff08;重点&#xff09; 文章目录 14 Linux实操篇-进程管理&#xff08;重点&#xff09;14.1 进程的基本操作14.1.1 进程和程序14.1.2 父进程和子进程14.1.3 常见的Linux进程14.1.4 显示系统执行的进程-ps14.1.5 终止进程-kill/killall14.1.6 查…

36.悬浮板

悬浮板 html部分 <div class"container"><div class"square"></div> </div>css部分 *{margin: 0;padding: 0; } body{background-color: #111;height: 100vh;overflow: hidden;display: flex;justify-content: center;align-it…

【小白必看】Python爬虫实战之批量下载女神图片并保存到本地

文章目录 前言运行结果部分图片1. 引入所需库2. 发送请求获取网页内容3. 解析网页内容并提取图片地址和名称4. 下载并保存图片完整代码关键代码讲解 结束语 前言 爬取网络上的图片是一种常见的需求&#xff0c;它可以帮助我们批量下载大量图片并进行后续处理。本文将介绍如何使…

机器学习 | Python实现NARX模型预测控制

机器学习 | Python实现NARX模型预测控制 目录 机器学习 | Python实现NARX模型预测控制效果一览基本介绍研究内容程序设计参考资料效果一览 基本介绍 机器学习 | Python实现NARX模型预测控制 研究内容 贝叶斯黑盒模型预测控制,基于具有外源输入的非线性自回归模型的预期自由能最…

绝美!轮到AI写真爆火了!18种AI视频制作教程;Llama 2微调的极速指南;Nijijourney官方AI绘画课 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 摄影写真面临AI技术洗牌&#xff0c;一键生成杂志大片的时代来了 软件&#xff1a;midjourney & Stable Diffusion 模型&#xff…

TypeScript基础篇 - TS模块

目录 模块的概念 Export 语法&#xff08;default&#xff09; Export 语法&#xff08;non-default&#xff09; import 别名 Type Export语法【TS】 模块相关配置项&#xff1a;module【tsconfig.json】 模块相关配置项&#xff1a;moduleResolution 小节总结 模块的…