目录
前言
这是我第一次决定系统的做一下学习笔记,并且决定把第一次系统的笔记排在CSDN博客中。虽然此前也在简书之类的网站有过一些杂乱的博客,但是大部分比较散乱。
由于本人实习是从Android开发开始,而且其实本人的Android开发基础并不是很好,所以这里打算做一个0基础Android的系列。由于缺乏经验可能做的不会很完美,但是我会慢慢改进的,如果有人发现我的问题随时欢迎指正!由浅入深,虽然JAVA基础也很重要,Kotlin却也不甘示弱也成了当今Android工业界的主流之一,至于具体要选择什么,那是最后回顾的时候才有资格思考的问题。现在基础阶段,先把基础打牢!戒骄戒躁!
书籍学习
《Android编程权威指南》介绍
这本书算是一本Android界口碑尚可的书了,本人喜欢它的原因是在于它兼顾了新手和老手,深层次的挖掘和初识的概述都做的不错。
建议大家支持正版,可以购入电子书进行学习。当然没有书观看本系列博客应该也是完全没问题的。毕竟我这只是一个从零开始的学习笔记,并不是一个教程。
当然有兴趣的也可以访问Big Nerd Ranch 适当学习一下,论坛里面还是很有帮助的。
第三版与时俱进的添加了Android开发需要学习的一些新知识,虽然我们的定位是0基础,这些概念可能还不清楚,但是最好还是看一下:
第 3 版较之前版本增加了对数据绑定等新工具的介绍, 同时新增了针对单元测试、 辅助功能和
MVVM 架构等主题的章节。
好的,正式开始之前,我们先来对这本书的难度有一个把控——
本书计划要完成8个APP的编写,有简单有难,下面简单介绍一下这8个APP都是干嘛的:
本书的八个App介绍,以及源码链接(个人实现的源码,不做任何保证)
- GeoQuiz 本书的第一个应用,借此学习Android应用的基本组成、 activity、界面布局以及显式intent。
- CriminalIntent 本书中最复杂的应用,用来记录办公室同事的种种陋习。借此应用学习fragment、主从用 户界面、 list-backed用户界面、菜单选项、相机调用、隐式intent等内容。
- BeatBox 一个可以震慑坏人的应用,借此深入学习fragment、媒体文件的播放与控制、 MVVM架构、数据绑定、单元测试、主题以及drawable资源。
- NerdLauncher 一个个性化启动器,借此深入学习intent以及Android任务。
- PhotoGallery 一个从Flickr网站下载并显示照片的客户端应用,借此学习Android服务、多线程、网络内 容下载等知识。
- DragAndDraw 一个简单的画图应用,借此学习触摸手势事件处理以及如何创建个性化视图。
- Sunset 一个漂亮的日落动画应用,借此学习Android动画。
- Locatr 一个查询当前位置的Flickr图片并显示在地图上的应用。借此应用学习如何使用定位服务 和地图。
学习准备
先来准备一下开发环境。
我们使用google提供的IDE:Android Studio当然,你可以自行google,或者直接到官网进行下载。
我的具体开发环境如下:
/*********公司PC环境**********/
Android Studio 3.2.1
Build #AI-181.5540.7.32.5056338, built on October 9, 2018
JRE: 1.8.0_152-release-1136-b06 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
好的做了这么多准备,快点翻开书看看具体的内容吧!
八大App学习过程
App1 GeoQuiz
1~5(6)章都在介绍这个APP。整体实现很简单,就是两个Activity,并未引入fragment,无持久保存,有简单的旋转屏幕后的Activity重建处理。
第一章,Android开发初体验
只是简单介绍了:(所有我觉得甚至不需要复习巩固的常识一样的知识点就直接用删除文本的形式划掉了,其余知识点的详细介绍在本文后面的“各章知识点详细介绍”中)
activity与layout(布局)的关系如何创建一个新的android项目在资源文件string.xml
中创建一个字符串资源- 如何在
app/build/generated/source/r/debug
目录下查看R.java中的资源文件 使用匿名内部类实现监听器
第二章,Android与MVC设计模式
- MVC设计模式的概念
快速生成getter和setter方法(先设置前缀,再Generate)新建Model的java类Question.java
添加和引用图片资源- 设备配置与备选资源
第三章,activity的生命周期
- Activity的生命周期以及其中的六(七)大回调方法
五种级别的日志 E,W,I,D,V[附加一个Assert]- Android内存清理现状
第四章,Android应用的调试
- 异常与栈跟踪
设置断点- Android Lint
- R类的问题如何解决
第五章,第二个activity
- 在manifest配置文件中声明activity
- startActivity方法启动Activity的流程
- 基于intent的通信
- 当我们在各activity间往返的时候,操作系统层面到底发生了什么
第六章,Android SDK版本与兼容
- Android SDK 版本(各SDK版本【API级别/代号】、相应的Android固件版本)
- minSdkVersion,targetSdkVersion,compileSdkVersion
Overall:第一个APP编写时要注意的问题
- 不要向Model中添加过多内容。
Question.java
就是单纯的一个问题内容和答案是否正确以及对应的getter和 setter。
package xxx.xx.xxx.x;
public class Question {
private int mTextResId;
private boolean mAnswerTrue;
public int getTextResId() {
return mTextResId;
}
public void setTextResId(int textResId) {
mTextResId = textResId;
}
public boolean isAnswerTrue() {
return mAnswerTrue;
}
public void setAnswerTrue(boolean answerTrue) {
mAnswerTrue = answerTrue;
}
public Question(int id, boolean answer) {
mTextResId = id;
mAnswerTrue = answer;
}
}
- 为了添加横屏的layout资源,需要在res文件夹下new出一个layout的文件夹。
App2 CriminalIntent
App3 BeatBox
各章知识点详细介绍
前面在App学习过程中总结出了一些知识点,有些知识点特别简单我这里不做过多讲述,但是还有很多知识点需要详细介绍。前面由于篇幅限制只用一句话概括,下面按章节为单位,在这里详细介绍一番各个知识点。
第一章
- 如何在
app/build/generated/source/r/debug
目录下查看R.java中的资源文件
没有过多介绍的,直接打开文件位置可以自行查看。可以参考博客:https://blog.csdn.net/hudfang/article/details/50897094
第二章
- MVC设计模式的概念
Model(模型)-View(视图)-Controller(控制器)
模型对象
存储着应用的数据和业务逻辑。模型类通常用来映射与应用相关的一些事物,如用户、商店里的商品、服务器上的图片或者一段电视节目,抑或GeoQuiz应用里的地理知识问题。模型对象不关心用户界面,它为存储和管理应用数据而生。
Android应用里,模型类通常就是我们创建的定制类。应用的全部模型对象组成了模型层。
视图对象
知道如何在屏幕上绘制自己,以及如何响应用户的输入,如触摸动作等。一个简单的经验法则是,凡是能够在屏幕上看见的对象,就是视图对象。Android自带很多可配置的视图类。当然,也可以定制开发其他视图类。应用的全部视图对象组成了视图层。
控制器对象
含有应用的逻辑单元,是视图对象与模型对象的联系纽带。控制器对象响应视图对象触发的各类事件,此外还管理着模型对象与视图层间的数据流动。在Android的世界里,控制器通常是Activity、Fragment或Service的子类。 - 设备配置与备选资源
第三章
- Activity的生命周期以及其中的六(七)大回调方法
- Android内存清理现状
第四章
- 异常与栈跟踪
- Android Lint
- R类的问题如何解决
第五章
- 在manifest配置文件中声明activity
- startActivity方法启动Activity的流程
- 基于intent的通信
- 当我们在各activity间往返的时候,操作系统层面到底发生了什么
第六章
- Android SDK 版本(各SDK版本【API级别/代号】、相应的Android固件版本)
- minSdkVersion,targetSdkVersion,compileSdkVersion