《第一行代码》 第一章:第一行Android代码

news2024/9/28 19:15:29

1,Android系统架构

在这里插入图片描述

2,开发的四大组件

在这里插入图片描述

3,丰富的系统控件

Android 系统为开发者提供了丰富的系统控件,使得我们可以很轻松地编写出漂亮的界面。当然如果你品位比较高,不满足于系统自带的控件效果,也完全可以定制属于自己的控件。

4,SQLite数据库

Android 系统还自带了这种轻量级、运算速度极快的嵌人式关系型数据库。它不仅支持标准的 SOL语法,还可以通过Android 封装好的 API进行操作,让存储和读取数据变得非常方便。

5,强大的多媒体

Android 系统还提供了丰富的多媒体服务,如音乐、视频、录音、拍照、闹铃,等等,这一切你都可以在程序中通过代码进行控制。

6,地理位置定位

现在的 Android手机都内置有 GPS,走到哪儿都可以定位到自己的位置

7,hello world

已经安装好Android和夜神模拟器之后,就可以写我们的第一行代码了。在这里插入图片描述

在这里插入图片描述

8,项目结构

在这里插入图片描述
这样的项目结构,是被转换了的,点击如下位置,可以切换成真实的目录结构。
在这里插入图片描述
在这里插入图片描述
也就是说,对于开发者而言,主要是app目录。在这里插入图片描述

9,项目是如何运行起来的

首先打开文件AndroidManifest.xml文件。找到对应的如下代码:

<activity
    android:name=".MainActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

这个地方表示MainActivity这个活动的注册,没有在AndroidManifest中注册的活动是不能使用的。其中intent-filter内的两行代码很重要,表示MainActivity是这个项目的主活动,在手机上点击应用图标,首先启动的就是这个活动。
活动是应用程序的门面,也就是我们看到的页面应该是定义在MainActivity这个活动中。现在打开查看:

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

Activity 是 Android 系统提供的一个活动基类,我们项目中所有的活动都必须继承它或者它的子类才能拥有活动的特性(AppCompatActivity 是 Activity 的子类)。然后可以看到MainActivity中有一个onCreate()方法这个方法是一个活动被创建时必定要执行的方法。
其实 Android 程序的设计讲究逻辑和视图分离,因此是不推荐在活动中直接编写界面的,更加通用的一种做法是,在布局文件中编写界面,然后在活动中引人进来。可以看到在onCreate()方法的第二行调用了 setContentView()方法,就是这个方法给当前的活动引入了一个hello_world layout布局,那 Hello World!一定就是在这里定义的了!

注意这一行代码,他定义了界面的内容,可以看到内容的路径:res文件夹下的layout文件夹下activity_main文件中定义:

setContentView(R.layout.activity_main);

可以找到如下代码,就是这里写了hello world:

  <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

在这里插入图片描述

10,详解项目中的资源

在这里插入图片描述

11,资源的引用

举个例子,res中的values下的string文件:

<resources>
    <string name="app_name">My Application</string>
</resources>

都是用xml来存储信息的,这里就是定义了一个名为app_name值为My Application的变量。
而想要访问该变量,有以下两个方式:

在代码中通过R.string.app_name
在xml中使用@string/app_name

例如上文setContentView(R.layout.activity_main);就是引用的res文件夹下的layout文件夹下的activity_main.xml文件。

12,Android的日志工具log

在这里插入图片描述
在helloworld中尝试一下:
在这里插入图片描述
可以看到有两个参数,第一个是备注信息,用来筛选是啥log,第二个参数才是具体的日志信息。快捷键是logd然后回车。

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

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

相关文章

java 基于ssm的在线音乐分享平台 idea mysql

根据一般在线音乐平台的功能需求分析&#xff0c;本系统的功能模块如下&#xff1a; &#xff08;1&#xff09;在个人中心&#xff0c;管理员可以修改自己的用户名和登录密码。 &#xff08;2&#xff09;在用户管理模块中&#xff0c;可以查看用户的信息&#xff0c;和进行修…

动态规划的万能公式(三类题型)

本文主要介绍如何用Python解决动态规划的问题&#xff0c;在动态规划问题中&#xff0c;最主要的是找到问题的dp&#xff0c;即找到状态转移函数&#xff0c;当你找到了该问题的状态转移函数&#xff0c;你就成功了一半&#xff0c;下面我将介绍三类最主要的题型&#xff0c;对…

FreeRTOS事件实验

前面章节我们学习了如何使用信号量来实现同步&#xff0c;但是使用信号量来同步的 话任务只能与单个的任务进行同步。有时候某个任务可能会需要与多个任务进行 同步&#xff0c;此时信号量就无能为力。FreeRTOS 为此提供了一个可选的解决方法&#xff0c;那 就是事件标志组。本…

TypeScript基础使用

TypeScript介绍&#xff1a; TypeScript 是 JavaScript 的一个超集 它的第一个版本发布于 2012 年 10 月&#xff0c;vue3和react也完全支持typescrpt 为什么选择 TypeScript&#xff1a; 类型系统实际上是最好的文档&#xff0c;大部分的函数看看类型的定义就可以知道如何使…

高性能SQL-数据库性能优化

数据库性能优化涉及各个方面,本文就总多个角度介绍一下数据库性能优化的方法 1.表设计 聚集索引 一个表只能有一个聚集索引&#xff0c;数据在磁盘上的排练顺序与聚集索引一致&#xff0c;根据业务仔细设定聚集索引&#xff0c;值递增的不可修改的字段才能设置聚集索引&…

海康摄像头Linux开发

官方sdk下载 https://open.hikvision.com 点击下载就行了 Ubuntu摄像头抓拍测试 我们使用Linux64 纯净版测试 接好海康摄像头&#xff0c;通电&#xff0c;并设置号ip和用户名、密码。如果有现成的&#xff0c;可以去查一下就知道了 先把设备下载的文件解压并放到Ubuntu下面…

redis的渐进式rehash机制

简述 在redis的字典&#xff08;dict.h&#xff09;实现中&#xff0c;当哈希表保存的键值对太多或者太少时&#xff0c;会触发扩展/收缩&#xff1b; 触发收缩&#xff1a;负载因子小于 0.1触发扩展&#xff1a;以下任一条件符合即可 服务器目前没有在执行 BGSAVE 命令或者 …

k8s核心资源

一、NameSpace对资源进行隔离&#xff0c;比如开发环境和测试环境等。命令# 查看所有命名空间的资源 kubectl get pod -A # 查看单独某个命名空间下的资源 kubectl get pod -n <空间名称> # 查看所有命名空间 kubectl get ns # 创建命名空间 kubectl create ns <空间名…

SpringAMQP

SpringAMQP是基于RabbitMQ封装的一套模板&#xff0c;并且还利用SpringBoot对其实现了自动装配&#xff0c;使用起来非常方便。 SpringAmqp的官方地址&#xff1a;Spring AMQP SpringAMQP提供了三个功能&#xff1a; 自动声明队列、交换机及其绑定关系&#xff08;RabbitAdmin&…

Hive自定义UDF函数及使用

目录 一、UDF概述 二、编写自定义UDF 1.创建项目 2.pom.xml文件添加依赖 3.编写工具类及自定义UDF类 4.打包 5.测试 jar 6.上传至服务器、HDFS并给jar包赋权 7.添加到hive类路径并创建临时函数 8.使用测试&#xff1a; 9.临时函数、永久函数 一、UDF概述 UDF全称&…

面试项目经验相关技巧

前言 面试问项目经验主要是想了解所做项目用到的技术&#xff0c;以及自己在项目中扮演的角色。 一、秒杀系统 秒杀系统往往不是咱的项目经验&#xff0c;但是面试可能会问&#xff0c;在说自己项目经验的时候也可以往秒杀和高并发上面带。 可能遇到的问题 高并发 一般就是…

阿里云KMS创建应用接入点

1.进入KMS控制台https://kms.console.aliyun.com/cn-beijing/applicationAP/list2.应用管理->创建应用接入点应用接入点可以想象成一个入口。入口打开的时候&#xff0c;运行在你服务器中的代码&#xff08;KMS客户端&#xff09;才可以与阿里云的KMS实例通讯。2.1设置入口名…

【软件测试】离开“浪浪山“测试人迎来的春天......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 这几年因为疫情、经…

Activiti7工作环境搭建_创建基础工程自动创建Activiti数据库表---工作流工作笔记004

然后我们开始来搭建activiti的环境 首先给idea安装activiti插件,从插件里搜索 actiBPM注意,这个直接在idea中搜索可能搜索不到,因为太旧了这个工具,新的idea已经不支持,需要手动去actiBpm 官网下载以后手动安装 下载就可以了 下载以后点击齿轮,然后选择从硬盘安装 选择下载好的…

注册公司认缴vs实缴,选择哪一个更好?

前言 上一篇说了在创业的时候先进行选择公司类型&#xff0c;然后在公司注册过程中都需要登记公司的注册资本&#xff0c;会涉及注册资金这一点&#xff0c;而现在有认缴制和实缴制&#xff0c;到底选择哪一个更好呢&#xff1f; 在选择之前&#xff0c;先来和大家分享下认缴制…

PyG-节点分类+链接预测+异常检测示例

引言图神经网络(Graph Neural Networks)是一种针对图结构数据(如社交图、网络安全网络或分子表示)设计的机器学习算法。它在过去几年里发展迅速&#xff0c;被用于许多不同的应用程序。在这篇文章中我们将回顾GNN的基础知识&#xff0c;然后使用Pytorch Geometric解决一些常见的…

idea本地debug调试DATAX插件运行

datax官方github地址&#xff1a;GitHub - alibaba/DataX: DataX是阿里云DataWorks数据集成的开源版本。 接触datax是看重他的数据采集功能和可以扩展插件的功能&#xff0c;根据官方说明&#xff0c;DATAX是以python来调用插件的运行json配置&#xff0c;但对于二次开发插件的…

nacos权限区分

背景 nacos的默认是不进行分配权限的&#xff0c;那么这样就带来了一个问题&#xff0c;如果多项目共同使用一个nacos&#xff0c;可以带了一个情况是开发人员误操作&#xff0c;把其他项目的nacos配置文件更改或者删除。那么如何解决这个问题呢&#xff1f;就是把nacos进行分…

网络知识详解之:网络攻击与安全防护

网络知识详解之&#xff1a;网络攻击与安全防护 计算机网络相关知识体系详解 网络知识详解之&#xff1a;TCP连接原理详解网络知识详解之&#xff1a;HTTP协议基础网络知识详解之&#xff1a;HTTPS通信原理剖析&#xff08;对称、非对称加密、数字签名、数字证书&#xff09;…

Kotlin 1.8.0 现已发布,有那些新特性?

文章目录**如何安装 Kotlin 1.8.0****如果您遇到任何问题****更多文章和视频**结语Kotlin 1.8.0 版本现已发布&#xff0c;以下是其部分最大亮点&#xff1a; JVM 的新实验性功能&#xff1a;递归复制或删除目录内容提升了 kotlin-reflect 性能新的-Xdebug编译器选项&#xff…