零、前言

本文旨在帮助有基础的同学快速扫盲,如果你和我一样,学习过其他语言,又恰巧第一次接触Android开发,本文会比较适合你。

如何学习一门新的语言?

对于有一定语言功底和开发经验的人来说
我们在学习一门新语言时不可能再从变量、函数学起,
而应该站在更高的角度,思考如何把已有的编程思想和设计模式迁移到新接触的语言中,
将未知的问题转化为若干个熟悉问题的组合,用已有的知识解决新的问题,谓之“化归”。

所以既然有基础了,学习新语言应就应从使用最频繁的功能入手。大致包括:

  • 环境安装
  • 新建和打开项目
  • 宏观结构(前后端)
  • 微观结构(MVC)
  • 数据绑定与操作反馈
  • 组件间调用
  • 生命周期
  • 连接数据库或读写文件存储(仅后端语言需要)
  • HTTP请求
  • 单表增删改查
  • 复杂的多表增删改查
  • 登录注销拦截器过滤器

时间仓促,本文只写一部分,后面慢慢补齐:

一、环境安装

Android开发环境 = JDK+AndroidSDK + AndroidStudio

JDK

就是我们平时使用的JDK,用平时的安装方法安装,没有什么特别之处,直接使用JDK11即可。

// 查看JAVA版本,如有返回值,说明环境变量生效
java -version

AndroidSDK

此SDK内置在AndroidStudio中,不用单独安装。

AndroidStudio

官网下载:https://developer.android.goo...
此IDE包含在Jetbrains全家桶中,也可以在Jetbrains Toolbox中下载:

image.png

注:如果第一次编译出现 Failed to install the following Android SDK packages as some licences have not been accepted. 可以参考 https://segmentfault.com/a/11...

环境安装完成后需要尽快熟悉IDE的操作,更重要的是如何切换项目的SDK版本。

二、宏观结构

这个词是什么意思?没意思,这个词是我自己造的。

细数我们学过的语言,可以大致分为以下几类(也许总结的不太准确):

单体结构,包括C/C++、C#、原生JAVA、原生Python等。

它们之中,有些是控制台程序(黑框框),有些是GUI程序(有界面)。

image.png

这一类应用的特点是:直接运行在本机的操作系统上,靠用户输入完成交互,客户端即包含全部功能,几乎不使用网络传输,靠本地文件来储存运行时的数据。

前后端不分离Web结构,包括PHP(thinkPHP)、使用网络的JAVA(SpringNoot)、使用网络的的Python(Flask、Django)

image.png

特点是:
程序功能的实际提供者运行在服务器上,软件功能由服务端提供,渲染和业务逻辑全部由服务器完成,服务器返回的是整个HTML页面。
用户仅使用浏览器浏览静态页面,并完成交互操作。
必须依赖网络,数据在服务器的数据库中。

Client / Server 结构以及前后端分离web结构,前端包括vue、angular、作为客户端的C#等,后端包括REST模式下的Springboot、PHP等。

image.png

特点是:
程序后端运行在服务器上,前端运行在用户的操作系统(或浏览器)上,
此时服务器只用来实现REST功能的API,处理业务逻辑,
而页面渲染、发起请求则由前端处理。
Web可以说是C/S模型的一个分支。除了web外,大型网络游戏也是典型的前后端分离(cs)应用。

对于安卓开发来说,有以下两种情况:

单机安卓软件

比如系统设置、系统相机、视频播放器、各种小工具之类。
这些不需要联网的软件,可以看作单体结构(第一种),整个程序都在手机上运行,由Java的服务层实现业务逻辑。

安卓客户端软件

例如电商软件、手游、通讯工具等等,都是客户端软件,可以看作Client/Server模型。
目前绝大多数安卓软件都是C/S的客户端,几乎没有单机应用。

综上,我们可以直接认为,安卓开发是前端开发!

微观结构

这个词也是我自己造的,其实说的就是设计模式。
最常见的包括MVC、MVVM等模式。

安卓开发的贯彻落实了MVC的思想,所以很好理解软件的层次。

先来看一个最简单的文件结构

image.png

活动(Activity)

Android中有一种叫做活动(Activity)的Java类,它本质上是Java代码,并且继承了Android内置的Activity类,所以就有了扩展功能。
它充当了C层(控制器)的角色,用来创建页面、响应操作,传递数据等等。

image.png

布局(Layout)

Layout本来是布局的意思,在Android中指的是类似HTML功能的页面模板,使用xml文件,其实xml和HTML本质思想一致,用法也差不多,xml中的熟悉和CSS相似。所以layout充当V层的角色。

layout既能文本化编辑,也能可视化编辑。

image.png
image.png

原生Java类

活动只用来传值和调用,真正进行逻辑处理、发起HTTP请求的应该是M层,它使用的是许多原生Java代码,它实现了Model模型、Entity实体、Service服务等等功能。
所以可以理解成,安卓在抛开活动和布局后,其他方面和原生Java的相似度很高。至于安卓特有功能,却和前端开发非常相似。

静态字符串资源(values)

安卓的字符串都放在values文件夹,使用xml储存,本质上就是键值对(keymap)
image.png

键值对可以通过一个固定变量名来操作固定的字符串,保证项目全局引用的值是相同的,当值变化后,整个项目中都会同步变化。

Android全局配置文件(AndroidManifest.xml)

这个文件管理着活动,所有的活动都必须在此文件中注册后才能被创建。
文件中也必须指定启动时执行哪个活动,程序才能正常运行。
每增加一个活动,AndroidStudio就会自动在此文件中增加标签。

image.png

结构图

image.png

未完待续


LYX6666
1.6k 声望75 粉丝

一个正在茁壮成长的零基础小白