Android入门

news/2024/12/26 18:19:48/

一、Android系统架构

Android大致可以分为4层架构:Linux内核层、系统运行库层、应用框架层和应用层

1.1Linux内核层

Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了如显示、音频、照相机、蓝牙、Wi-Fi等底层的驱动。

1.2系统运行层

这一层通过一些C/C++库如SQLite、OpenGL|ES、Webkit等为Android系统提供了主要的特性支持。

此外,这一层还有Android运行时库,允许开发者使用Java语言来编写Android应用,并且还包含了Dalvik虚拟机,它使得每一个Android应用都能运行在独立的进程中,并且拥有自己的虚拟机实例。

1.3应用框架层

这一层主要提供了构建应用程序时可能用到的各种API。

1.4应用层

所有安装在手机应用上的应用程序都是属于这一层。

二、Android应用的四大组件

Android系统四大组件分别是Activity、Service、BroadcastRecevier和ContentProvider

Activity是所有Android应用程序的门面,凡是在应用中看得到的东西,都是放在Activity中。

Service你无法看到它,但它会在后台默默运行,即使用户退出了应用,Service仍然是可以继续运行。

BroadcastRecevier允许你的应用来自各处的广播信息,如电话、短信等,当然,你的应用也可以向外发出广播消息。

ContentProvider则为应用程序之间的共享数据提供了可能,比如你想要读取系统通讯录中的联系人,就需要通过ContentProvider来实现。

三、创建第一个Android项目

#具体安装Android Studio教程可自行查询相关安装教程

3.1创建HelloWorld项目

步骤1:点击New Project创建新项目

步骤2:选择项目类型界面(这里我们选择“Empty Activity”创建一个空的Activity)

 

步骤3:项目配置

  

Name表示项目名称,这里我们填“HelloWorld”即可;

Package name表示项目的包名,Android系统就是通过包名来区分不同应用程序的,因此包名具有唯一性;

Save location表示项目代码存放的位置;

Language表示使用的编程语言,有Java和Kotlin两种选择;

Minimum SDK表示设置项目的最低兼容版本

步骤4:点击Finish即项目创建成功

3.2运行项目

 

左边的锤子按钮是用来编译项目的;

中间第一个下拉列表是用来选择运行哪一个项目,通常app就是当前的主项目;

中间另一个下拉是用来选择运行到哪台设备上的;

右边三角形按钮是用来运行项目的

点击三角形按钮运行程序

四、分析Android项目结构

 

五、代码分析

5.1分析HelloWorld项目代码

打开AndroidManifest.xml文件

 <activityandroid: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.xml里注册的Activity是不能使用的。

其中intent-filter里的两行代码非常重要,<action android:name="android.intent.action.MAIN" />和<category android:name="android.intent.category.LAUNCHER" />表示MainActivity是这个项目的主Activity,在手机上点击应用图标,首先启动的就是这个Activity。

打开MainActivity

package com.example.helloworld
​
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
​
class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}
}

首先可以看到,MainActivity是继承自AppCompatActivity的。AppCompatActivity是AndroidX中提供的一种向下兼容的Activity,可以使Activity在不同系统版本中的功能保持一致性。

MainActivity中有一个onCreate()方法,这个方法是一个Activity被创建时必定要执行的方法,在该方法的第二行调用了setContentView()方法,就是这个方法给当前的Activity引入了一个activity_main布局,“Hello World”就是在其中定义的。

打开res/layout目录下的activity_main.xml,打开该文件,并切换到Code视图,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity">
​<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />
​
</androidx.constraintlayout.widget.ConstraintLayout>

在代码中有一个TextView,这是Android系统提供的一个控件,用于在布局中显示文字,在其中有“Hello World!”字样,就是通过该句代码显示输出的。

5.2解释项目中的资源

打开res/values/strings.xml文件,内容如下:

<resources><string name="app_name">HelloWorld</string>
</resources>

可以看到,这里定义了一个应用程序名的字符串,我们可以通过以下两种方式来引用它:

  • 在代码中通过R.string.app_name可以获得该字符串的引用;

  • 在XML中通过@string/app_name可以获得该字符串的引用。

基本语法就是上面两种方式,其中string部分是可以替换的,如果引用的图片资源就可以替换成drawable,如果引用的应用图标就可以替换成mipmap,如果是引用的布局文件就可以替换成layout,以此类推。

5.3 解释build.gradle文件

不同于Eclipse,Android Studio是采用Gradle来构建项目的,Gradle是一个非常先进的项目构建工具。

如在HelloWorld项目中有两个build.gradle文件,一个在最外层目录下,一个在app目录下。


http://www.ppmy.cn/news/48460.html

相关文章

ELK简介

ELK 1. ELK2. Elasticsearch&#xff08;ES&#xff09;3. Logstash4. Kibana5. Filebeat6. 缓存/消息队列&#xff08;redis、kafka、RabbitMQ等&#xff09; 1. ELK ELK是三个开源软件的首字母缩写&#xff0c;分别表示&#xff1a;Elasticsearch , Logstash, Kibana , 它们…

腾讯云COS+ElmentUI+SpringBoot视频上传功能实现

文章目录 第一步&#xff1a;选择合适的组件并整合到项目中第二步&#xff1a;前端校验第三步&#xff1a;绑定上传成功方法第四步&#xff1a;腾讯云cos后端接口配置 今天在做项目的时候需要完成一个视频上传的功能&#xff0c;这里做一个记录&#xff01; 第一步&#xff1a;…

MongoDB实现---事务机制

事务机制 原子性是MongoDB实现事务的难点&#xff0c;隔离性和持久性则是MongoDB事务机制的亮点 ACID支持&#xff1a;由于前面说过MongoDB是基于大数据、提供高度可扩展和高可用&#xff1b;所以其事务机制不仅仅是一般ACID还是结合了BASE理论下的ACID 原子性&#xff1a;保…

GreenPlum (一) 初识

在开始了解GreenPlum之前&#xff0c;应该对这种产品的诞生有基本的了解&#xff0c;搭建一个基本的知识框架。对以下历史有基本了解之后应对下文术语进行基本阅读。 ​ 阅读目标: 阅读完成后需要对相关术语以及greenplum有基础理解。 文案基本互联网相关blog进行整体汇总&…

【RabbitMQ学习日记】—— 再见RabbitMQ

一、发布确认高级篇 在生产环境中由于一些不明原因&#xff0c;导致 rabbitmq 重启&#xff0c;在 RabbitMQ 重启期间生产者消息投递失败&#xff0c;导致消息丢失&#xff0c;需要手动处理和恢复如何才能进行 RabbitMQ 的消息可靠投递呢&#xff1f; 特别是在这样比较极端的情…

uniapp 之 将marker 渲染在地图上 点击弹层文字时显示当前信息

目录 效果图 总代码 分析 1.template 页面 地图显示代码 2. onload ①经纬度 ②取值 ③注意 ④ 3.methods ① 先发送 getStationList 请求 获取 数组列表信息 ② regionChange 视野发生变化时 触发 分页逻辑 ③ callouttap 点击气泡时触发 查找 当前 marker id 等…

java ssm高校学术会议论文管理系统

在研究课题--学术会议论文管理系统的实现与设计&#xff0c;对操作使用的便利性&#xff0c;系统的可制定性和安全性以及管理的全面性等多个方面研究。其中主要研究的内容是将学术会议论文管理系统功能划分为: 通知类型、通知信息、部门信息、用户信息用户反馈、会议类型、会议…

编译和链接

目录 1. 程序的翻译环境和执行环境 2. 详解编译链接 2.1 翻译环境 2.2 编译本身也分为几个阶段&#xff1a; 2.2.1汇编过程的简略图 2.3讲解汇编过程的具体过程和要点 2.4运行环境 1. 程序的翻译环境和执行环境 在ANSIC的任何一种实现中&#xff0c;存在两个不同的环境。…