《第一行代码》小结

文章目录

  • 一. Android总览
    • 1. 系统架构
    • 2. 开发环境
    • 3. 在红米手机上运行
    • 4. 项目资源详解
      • 4.1 整体结构
      • 4.2 res文件
      • 4.3 build.gradle文件
  • 二. Activity
    • 0. 常用方法小结
    • 1. 创建一个Activity

一. Android总览

1. 系统架构

在这里插入图片描述
应用层:所有安装在手机上的应用程序
应用框架层:提供了构建应用程序时可能用到的各种API
系统运行库层:通过一些C/C++库为Android系统提供了主要的特性支持。如SQLite,OpenGL|ES
Linux内核层:Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。

2. 开发环境

在这里插入图片描述
Gradle项目:可以先下载到本地,后边建立项目快一点
Gradle配置教学
Gradle理论知识

3. 在红米手机上运行

连接usb-设置-我的设备-全部参数-连点6次版本号-返回首页,更多设置-开发者选项

4. 项目资源详解

4.1 整体结构

4.2 res文件

在这里插入图片描述
drawable 放图片
mipmap 放应用图标
values 字符串、样式、颜色
layout 布局
xml 一些其他配置规则,如数据提取的规则等
引用规则
在这里插入图片描述

4.3 build.gradle文件

二. Activity

0. 常用方法小结

menuInflater.inflate(R.menu.main,menu)

inflate()方法接收两个参数:第一个参数用于指定我们通过哪一个资源文件来创建菜单,这
里当然是传入R.menu.main;第二个参数用于指定我们的菜单项将添加到哪一个Menu对象当
中,这里直接使用onCreateOptionsMenu()方法中传入的menu参数。最后给这个方法返回
true,表示允许创建的菜单显示出来,如果返回了false,创建的菜单将无法显示。

布局常用参数

match_parent:表示让当前控件的大小和父布局的大小一样,即由父布局来决定当前控件的大小。
wrap_content:表示让当前控件的大小刚好能够包含里面的内容,即由控件内容决定当前控件的大小。

1. 创建一个Activity

选择No Activity方式创建一个空的Project
切换成project模式,到主目录下创建一个kt文件
写Activity代码:
写一个主类 + res里面的布局文件 + AndroidMainfest.xml注册
(创建+toast+menu菜单栏使用)

package com.example.myactivityimport android.os.Bundle
import androidx.appcompat.app.AppCompatActivityclass FirstActivity : AppCompatActivity(){override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.mylayout)//给按钮设置点击事件val button1:Button = findViewById(R.id.button1) button1.setOnClickListener{Toast.makeText(this,"This is my first attempt",Toast.LENGTH_SHORT).show()}}//menu菜单选择栏override fun onCreateOptionsMenu(menu: Menu?): Boolean {menuInflater.inflate(R.menu.main,menu)return true}//响应事件override fun onOptionsItemSelected(item: MenuItem): Boolean {when(item.itemId){R.id.add_item -> Toast.makeText(this,"Add",Toast.LENGTH_SHORT).show()R.id.remove_item -> Toast.makeText(this,"remove",Toast.LENGTH_SHORT).show()}return true}//销毁当前activityval button2:Button = findViewById(R.id.button2)button2.setOnClickListener{finish()}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><applicationandroid: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.MyActivity"tools:targetApi="31"><activity android:name=".FirstActivity"android:label="FirstActivity"android:exported="true"><intent-filter> <action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

menu菜单栏需要在res目录下建立menu文件夹

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/add_item"android:title="Add"/><itemandroid:id="@+id/remove_item"android:title="Remove"/>
</menu>

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

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

相关文章

Vite配置环境变量以及动态更新html数据

一、设置配置文件 // .env // 公共配置文件&#xff0c;总是生效 VITE_BASE_API_URLhttp://localhost:3000// .env.development VITE_BASE_API_URL/api VITE_TAB_TITLEdevelopment title// .env.production VITE_BASE_API_URL/api VITE_TAB_TITLEproduction title 二、安装插…

GitStack详细配置与使用指南

1.引言 GitStack是一个功能强大的Git服务器管理工具,专为Windows环境设计。它提供了一个用户友好的Web界面,使得在Windows服务器上管理Git仓库变得简单高效。本文将详细介绍GitStack的安装、配置和使用方法,帮助您快速搭建自己的Git服务器。 2.GitStack安装 2.1 系统要求 Wi…

罗剑锋的C++实战笔记学习(一):const、智能指针、lambda表达式

1、const 1&#xff09;、常量 const一般的用法就是修饰变量、引用、指针&#xff0c;修饰之后它们就变成了常量&#xff0c;需要注意的是const并未区分出编译期常量和运行期常量&#xff0c;并且const只保证了运行时不直接被修改 一般的情况&#xff0c;const放在左边&…

解决Docker Desktop启动异常 Docker Desktop- WSL distro terminated abruptly

异常 当打开Docker Desktop时候&#xff0c;启动docker引擎时&#xff0c;提示 加粗样式文本信息 Docker Desktop - WSL distro terminated abruptly A WSL distro Docker Desktop relies on has exited unexpectedly. This usually happensas a result of an external entit…

Vue2基础 14:自定义指令

自定义指令 1 函数式1.1 案例--v-text放大10倍 2 对象式2.1 案例--v-fbind默认获取焦点&#xff08;函数式&#xff09;2.2 案例--v-fbind默认获取焦点&#xff08;对象式&#xff09; 3 自定义指令容易犯的错4 全局指令写法&#xff08;参考过滤器写法&#xff09;&#xff1a…

零基础开始学习鸿蒙开发-读书app简单的设计与开发(我的消息)

目录 1.新建一个MyMessage页面 2.确定布局方式,显然我们用线性布局会比较好 3.具体布局就不详细图标大小调整就不做详细介绍了 4.给我的消息添加路由跳转。 5.如图效果 1.新建一个MyMessage页面 // Index.ets @Entry @Component export struct find {@State message: str…

Go 依赖注入设计模式

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

《昇思25天学习打卡营第6天 | mindspore 函数式自动微分常见用法》

1. 背景&#xff1a; 使用 mindspore 学习神经网络&#xff0c;打卡第6天&#xff1b; 2. 训练的内容&#xff1a; 使用 mindspore 的函数式自动微分常见用法&#xff1b; 3. 常见的用法小节&#xff1a; 函数式自动微分支持一系列常用的函数 3.1 损失函数&#xff1a; …

系统重装

待更新 重置win11 双系统删除其中一个&#xff0c;并将格式化后的空间并入

HTTP请求详解及其在嵌入式系统中的应用

前言 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是互联网中最广泛使用的应用层协议&#xff0c;用于客户端和服务器之间的数据传输。了解HTTP请求的工作原理对于开发网络应用和嵌入式系统中的网络通信至关重要。本文将详细介绍HTTP请…

跟着峰哥学java 第四天 商品分类 前后端显示

1.后端 1.1mybatis-plus分页查询配置 在商品热卖数据中&#xff0c;只让其显示八条数据 将要使用分页 也就是service.page方法 此时需要配置 mp拦截器 Configuration public class MybatisPlusConfig {Beanpublic PaginationInterceptor paginationInterceptor() {return …

模型训练之数据集

我们知道人工智能的四大要素&#xff1a;数据、算法、算力、场景。我们训练模型离不开数据 目标 一、数据集划分 定义 数据集&#xff1a;训练集是一组训练数据。 样本&#xff1a;一组数据中一个数据 特征&#xff1a;反映样本在某方面的表现、属性或性质事项 训练集&#…

星辰宇宙动态页面vue版,超好看的前端页面。附源码与应用教程(若依)

本代码的html版本&#xff0c;来源自“山羊の前端小窝”作者&#xff0c;我对此进行了vue版本转换以及相关应用。特此与大家一起分享~ 1、直接上效果图&#xff1a; 带文字版&#xff1a;文字呼吸式缩放。 纯净版&#xff1a; 默认展示效果&#xff1a; 缩放与旋转后&#xf…

mysql5.6的安装步骤

1.下载mysql 下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 在这里我们下载zip的包 2.解压mysql包到指定目录 3. 添加my.ini文件 # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.6/en/server-configurat…

tongweb+ths6011测试websocket(by lqw)

本次使用的tongweb版本7049m4&#xff0c;测试包ws_example.war&#xff08;在tongweb安装目录的samples/websocket下&#xff09;&#xff0c;ths版本6011 首先在tongweb控制台部署一下ws_example.war,部署后测试是否能访问&#xff1a; 然後ths上的httpserver.conf的參考配…

腾讯centos mysql安装

腾讯centos mysql安装 腾讯云提供了一系列的云计算服务&#xff0c;包括操作系统、数据库、服务器等。在腾讯云上安装CentOS操作系统和MySQL数据库可以按照以下步骤进行&#xff1a; 登录腾讯云控制台&#xff08;登录 - 腾讯云&#xff09;。在控制台页面上方的搜索框中输入…

vue数组变化的侦测***

数组变化的侦测 变更方法 vue能够侦听响应式数组的变更方法&#xff0c;并在他们被调用时触发相关更新。这些变更方法包括&#xff1a; push()pop()shift()unshift()splice()sort()reverse() 替换一个数组 变更方法&#xff0c;顾名思义&#xff0c;就是会对调用他们的原数组进…

Vue 路由传参 query方法 bug 记录

问题描述 vue 路由传参 踩坑 this.$router.push({path: "xxxxxxx",query: {opportunity_id:row.opportunity_id,constructor:row.constructor,},});解决方案&#xff1a; 上述方法传入新页面时&#xff0c;访问的 this.$route.query 会有bug 每一次刷新都会在最后一…

DNS服务器

DNS服务器 一、DNS简介&#xff1a; DNS&#xff08;Domain Name System&#xff09;是一种用于将域名解析为IP地址的系统。 在DNS中&#xff0c;正向解析将域名转换为IP地址&#xff0c;而反向解析将IP地址转换为域名。正向解析是DNS系统最常用的解析方式&#xff0c;它允许…

本地部署到服务器上的资源路径问题

本地部署到服务器上的资源路径问题 服务器端的源代码的静态资源目录层级 当使用Thymeleaf时&#xff0c;在templates的目录下为返回的html页面&#xff0c;下面以两个例子解释当将代码部署到tomcat时访问资源的路径配置问题 例子一 index.html&#xff08;在templates的根目录…