大家好,又见面了,我是你们的朋友全栈君。
0、简介
0.1 个人情况
先说一说自己的情况吧。湖南大学本科学生,因为对 Android 开发感兴趣,所以先学习了 Java (教材是 《疯狂 Java 讲义》,这本书非常好),之后又开始按照 郭霖先生的 《第一行代码 (第二版)》 学习 Android 开发。
《疯狂 Java 讲义》我没有全部学完,只是学习了有关 Java 语法的部分,后面的有关 Java 窗体编程的内容 (包括网络编程)我都没有看(之后有需要会回去学习)。不过我想熟练掌握 Java 语法应该是对 Android 开发很有帮助的。
所以,本文会实现真正长期更新。
我的 GitHub
0.2 现状
现状是,自己平时事情挺多,断断续续学了一内容,觉得自己会了一点就迫不及待地去尝试,也写了一点文章放到了 CSDN 上,可以看看我发布的其他那些文章。 对于自己感兴趣的技术总是想去尝试,看了很多技术文章,自己会说很多名词 却从来没有深入研究过某一项技术 ,思来想去之后我觉得 自己喜欢 Android,还是实事求是,做好这一个技术活儿,能系统地掌握 Android 开发的有关知识,这是我真正要做的事情。
0.3 展望
这篇博客将会是我真正 从 0 开始 的一篇博客,也就是说,我准备从 0 开始学习安卓了,一步一步来。学习路线遵从《第一行代码 (第二版)》,如果我能坚持到最后,希望可以做出一个真正的应用出来,不过眼下打好基础是最关键的。
有时候也会穿插自己学到的其他的一些关于 Android 的技术,总的来说《第一行代码》算是一门基础入门书,我也不可能直接复制书中的内容作为我的博客内容。
学习资源是很多的,但是最重要的是坚持学下去。
0.4 一些问题 (为什么要写这篇文章 / IDE / 编程语言 / 最低 SDK 版本 / 电脑配置 / 版权)
为什么要写这篇文章?在最开始写这篇文章的时候,第三行代码(误) 已经要出来了(《第一行代码(第三版)》),而这是一本 Kotlin 写成的教程,但是我觉得 Java 始终会是强力的 Android 开发语言,在开发商用的 Android 应用时,我觉得 Kotlin 暂时还不会有替代 Java 的实力,Kotlin 开发者也指出 Kotlin 不是要替代 Java,而是一些新功能可以采用 Kotlin 开发的,但是目前我还是比较菜,所以用 Java。但是第二版确实有一些内容是过时的,所以我有了这样的想法。
我预想读者和我一样比较年轻,有按照第二版来学习碰到了一些问题比较迷茫,想在网上找教程但是找不到很有针对性的内容的惨痛经历,本文绝对不会是书本的原文复制,我的最主要目标就是有过这种惨痛经历的同学。。。
关于 IDE,练习 Java 的时候,一开始我用的是记事本,后来用了 IDEA (主要是考虑到编译运行比较简单,我把代码提示补全功能都关闭了)。觉得 Java 基础算是有了之后,我使用 Android Studio 用于 Android 开发。目前使用的是 Android Studio Version 3.5.3,这是比较新的一个版本,我也注意到,很多第二版教材中介绍的 IDE 操作方法,用这一版本的IDE 会有一些改变,当然 IDE 开发是次要的,有一些关于功能实现的方法也发生了变化,碰到了这种情况会有说明的。
我同时也学习了很多关于 Kotlin 的语法,Kotlin 目前已经成为 Android 开发第一语言,但是因为 Kotlin 的很多实现都借助了 Java,Java 已经形成了良好的生态,关于 Java 的知识显然是一个 Android 程序员必须要熟练掌握的,并且语言只是工具,我也不想在这上面花很多时间选择,因此 这篇文章主体将采用 Java 语言,事实上 因为我自己对 Android 绝对称不上是掌握,我想先通过 Java 学习好 Android 之后,再考虑将 Kotlin 添加到项目中实践。 之后肯定会有一个应用,全部采用 Kotlin 实现,作为一种练习(预想)。
关于 SDK 版本,实际上一些操作的无效与这个是有关的,为了增强自己的程序的适配性,我使用的最低版本的 SDK 是 API 14,相当于是 Android 4.0,这意味着我的程序几乎能够运行在 100% 的 Android 移动设备上,注意是移动设备,我这里的 Android 开发是手机端开发。
如果有些内容太长,会新开一篇文章,将链接放在本文。
如果你愿意长期支持这篇文章,我希望你阅读时准备好一本纸质的《第一行代码(第二版)》,这篇博客中目前大部分内容肯定还是会基于书中的内容,有了书本自己学习也会更加方便。
接下来是电脑的配置,结合我自己的惨痛经历,用笔记本电脑进行开发的话(估计很多大学生都会用笔记本电脑做开发吧),8G 内存是不够用的,要运行虚拟设备的话(这几乎是肯定的,基本不可能摆上一堆实体设备去测试),最少要 16G,当然 16G 已经可以满足基本要求了,至少我在之前折腾的过程中,绝对够用了。
本文不赢利、不做广告,介绍郭霖先生书中的内容来学习 Android,是出于技术交流和自我提升的目的,如果有侵权请联系邮箱 chenzhian@hnu.edu.cn,我会及时删除侵权内容。如果你愿意支持这篇文章,请购买 《第一行代码(第二版)》!本文同时也禁止复制转载,但是欢迎分享文章链接。同时文章也不接受打赏,如果喜欢请支持郭神的作品!如果我的文章能帮助到你理解教材,那是再好不过了。
还有一点,在这篇文章中我大部分时候会将第二行代码称为教材。
说了这么多,让我们开始吧。
0.5 日志(已暂停日志更新,日期直接标出)
最近一次更新:2020-3-17 Ini: 4.3f 学业繁忙,仍会更新
1、关于 Android
Android 是一套操作系统,可以运行在移动设备、电视、手表等各种电子产品上。不过我们最熟悉的应该是 Android 手机。
1.1 Android 系统架构
Linux 内核层 → 系统运行库层 → 应用框架层 → 应用层
其中前两个层次属于比较底层的东西,现在我还没有涉及这样的境界;第三层应用框架层,它提供了 Android 的 API,简单来说就是各种各样的类和相关组件,利用这些我们就可以实现一个 Android 应用;最后一层是应用层,这一层就属于我们开发的各种各样的应用。
1.2 Android 四大组件
Android 四大组件是 活动 (Activity)、服务 (Service)、广播接收器 (Broadcast Receiver) 和内容提供器 (Content Provider)。
其中活动应该是用户关注的一块,因为在 Android 应用中所有看得到的东西都属于活动。服务相比于活动来说则不显眼,因为服务一般不在前台运行,用户无法看到它,但是它会在应用退出之后依然活动,执行一些功能;利用广播接收器可以接收来自各处的广播消息,比如手机短信,我们的应用也可以自行发出广播;内容提供器则使不同应用间的数据交互成为可能,比如从应用中读取手机联系人的功能,就需要依靠内容提供器实现。
1.3 其他部分
Android 也提供了数据库(SQLite)和系统控件,我们也可以自己定义控件,数据库用于数据的持久化,保证我们在退出应用之后数据不会丢失,还有其他一些功能等。
2、Android 基础
2.0 活动
2.0.1 使用 Android Studio 创建第一个项目
我假设您已经通过教材掌握了如何安装新版 Android Studio,鼓捣好了各种配置,能够运行 Java、有 Java 基础,那就可以继续往下看了。
新版 Android Studio 界面如下。
选择 创建新 AS 项目,跳转到选择项目类型,选择 空活动
之后会选项目名称和保存位置,名称保持默认,保存位置自己选好,Minimum API level 选择 Android 4.0,这样我们的应用可以运行到几乎 100% 的设备上。其他设置保持默认。
点击 Finish 完成创建,接着页面会进行跳转,等待一会(这里又要吐槽,sync 过程中下载各种各样的包等等有时候会比较慢,具体的解决对策这里就不说了)即可完成了。完成了之后界面如下。默认的界面展示的是 MainActivity.java 的代码。
可以看到这里导入了 androidx 的一个包,这是之前所没有的,androidx 中提出了很多新特性,之后会有介绍。总之界面已经和之前的代码不一样了,但是不要惊慌。不要学我。
看布局文件,布局文件默认是 activity_main.xml,之前也没有看到设置布局类型的选项,这里提供的布局是一个看上去很复杂的 ConstraintLayout,暂时我不知道怎么用它,把它替换成 LinearLayout,删除一些看上去没必要的属性,加上一些必要的属性如下(保持文本居中对齐):
运行一下程序就可以看到 Hello World 出现在了屏幕的居中位置。
2.0.2 活动的基本用法
关于手动创建活动、注册主活动、使用 Toast 和 Menu 我没有发现有大的问题,但是我强烈建议各位敲一敲代码,最好关掉自动补全,以便记住这些基本的知识。看起来一个一个字符敲很傻一点也不像那些酷酷的程序员,但是这种办法绝对是有好处的,这也算是我在大学里面学到的一点经验。
有一个问题是,AndroidManifest.xml 文件中会出现大面积的警告,可以不用理会,这提示你的应用无法被 Google Search 检索。
接下来是我认为相当重要也很基础的 使用 intent 在活动中穿梭 的内容,之前我学习的时候虽然觉得自己掌握了,但是关于活动中数据的传输我是很有问题的,比如,如何从一个活动返回图片等特殊数据给前一个活动?我预想是,主活动跳转到用于个人信息编辑的的一个活动,设置好了照片、姓名等信息后,返回主活动后主活动要能够展示出这些信息,怎么做呢?我是否应该把它存入数据库,其他活动再从数据库中取?说实话我也不太清楚,现在还在尝试中。
2.0.3 Intent 传递图片
3、操作数据库
3.1 写一个 Java Bean
今天试了试操作数据库,我选择的数据库是 LitePal,一开始是按照教材上的步骤,创建好了一个比较简单的 Java Bean,如下:
3.2 问题:LitePal 版本 与 adb shell
按照教材上的步骤设置好了 litepal.xml 这个文件,有一个问题是我们用的最低API 版本是 API 14, LitePal 目前的版本已经是 3.0 了,用 3.0 版本的方法在我们这里行不通。
adb shell 按照书上的内容配置好之后,可以在命令行里面进行操作了;问题又出来了,Android 7.0 以上的设备对超级管理员权限似乎限制的很死, 我现在用的是华为实体机测试,进入 abd shell 是普通模式,输入 su 会报错,无法进入超级模式。
这也意味着目前通过这种方式来操作数据库已经不是很方便了,目前我也不知道有什么好的解决办法,不过如果是虚拟设备,则可以创建一个 Android 6.0 的虚拟设备来测试书上的指令。
另外就是如何查看建成的数据库确认创建情况,Android Studio 3.5.3 的 Filer Explorer 在这里:
打开之后按照书上的步骤即可找到我们创建的数据库了。
3.3 总结
LitePal 操作数据库非常方便,按照书上的来即可。但是关于 SQL 的操作仍然是重要的一环,SQL 编程也是程序员基本的能力之一。所以建议出于练习的考虑要学会 SQL。SQL 数据库在大学里也是必修课…
当然,郭霖先生的博客上有更多的关于 LitePal 数据库的介绍,是冠名为 Andorid 数据库高手秘籍的一系列文章,可以 点击这里 查看第 10 篇介绍,关于如何在 Kotlin 中更好地使用 LitePal。
4、手机多媒体
4.0 2020-2-17-flag
下面的两个标题都是我希望弄懂然后发布博文的,但实际上我目前发现 Android 操作照相机和相册的 Java 代码量很大,逻辑也比较复杂,加上自己目前显然不算是精通 Android 开发,采用的是完全 手敲代码 的模式,所以觉得很麻烦,今天早上开始到现在目前都在试着如何开启系统摄像头,看了文档,花了很久时间理解的 Demo 自己写上去,应用出现了崩溃的情况,总之是失败了。
不过我会持续学习,一定会在近期把这个难关攻克,算是一个 flag。
4.1 如何进行图片压缩
4.2 使用 Android Image Cropper 进行图片裁剪
4.3e 近况
很久没有更新了,实际上是最近已经开始了线上教学,任务繁重,不得不停止学习 Android。学习好计算机专业本科课程,我觉得对 Android 开发是有帮助的。之后肯定是不能频繁更新 Android 相关内容了,不过依然会有更新,还会有!有更多的时候应该是更新有关自己学习内容的博客,也可以关注一下。
4.3f 学业繁忙,仍会更新
最近因为学习了计算机系统理论课和实验课,还有比较厉害的算法课所以平时时间都不够,暂时还不能适应这种模式,我之后计划是每月至少更新一次,因为自己也已经很久没有更新博客了,所以必须要给自己一点鞭策和督促,至少是要先抓紧时间学好自己的本职工作,再做自己喜欢做的 Android 开发呀。
希望大家能够继续支持。
下一次更新预计 2020.4.17, 内容是Android 图片裁剪(Android Image Cropper)、以及相关的图片布局设计。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135581.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...