android-roadmap

在线书籍


在线Andriod or Iphone模拟器

视频

博客

Google官方 Andriod 开发教程
Google开发者训练营
Google开发官方网站 阿里巴巴 知行动手实验室 Andriod Studio
Android SDK上手指南 Android屏幕适配全攻略(最权威的官方适配指导) Android性能专项测试 Android NDK开发学习
Android 例子高仿篇 Android基础与异常处理 android技术分享与探讨
极客教程 Android 教程篇 极客教程 Flutter教程篇 极客教程 Kotlin教程篇
App开发新手入门攻略 一个优秀的Android应用从建项目开始---创建项目的一些规范
Android学习项目入行必备 老罗的Android之旅(总结) android源码解析---主要用于解析android framework层源码,干货满满
Android知识点总结
flutter Android开发人员不得不收集的工具类集合 GitHub上最火的Android开源项目 RxJava-Android-Samples---Learning RxJava for Android by example
Android MaterialDrawer---the flexible, easy to use, all in one drawer library for your Android project
Android基础入门教程 Android Training官方培训课程 解析 Android 架构设计原则 Android知识点总结 Android SDK上手指南
Android实战技巧---应用开发中积累的实战经验和技巧 Android 开发规范与应用---从Futurice公司Android开发者中学到的经验。
深入理解Android Java 虚拟机ART Android产品研发实录
深入理解Android(卷1)---以情景方式对Android的源代码进行深入分析的书 深入理解Android(卷2)---以情景方式对Android的源代码进行深入分析的书
深入理解Android(卷3)Wi-Fi、NFC和GPS卷(完整版)
AndroidUI开发 Android热门三方库源码面试宝典
Android(OpenCV)开发---掌纹识别 人脸识别 火灾检测 Android屏幕适配全攻略(最权威的官方适配指导)
Android 中流行的开源框架解读 Android设备和PC端通过USB线通信
android通过web与后台数据库交互 后端spring boot+前端Android交互+mysql增删查改
Android 最佳实践 之 单元测试 android WebSocket详细实现步骤
2019初中级Android开发社招面试

项目实战

目录

Kotlin目录

  • 如何运行Kotlin代码
    • 第一种方法是使用IntelliJ IDEA
    • 第二种方法是在线运行Kotlin代码---JetBrains专门提供了一个可以在线运行Kotlin代码的网站,地址是:https://try.kotlinlang.org
    • 第三种方法是使用Android Studio
  • Kotlin特色
  • Kotlin语法
    • 注意,Kotlin每一行代码的结尾是不用加分号的
    • 变量---而Kotlin中定义一个变量,只允许在变量前声明两种关键字:val和var
      • val(value的简写)---用来声明一个不可变的变量,这种变量在初始赋值之后就再也不能重新赋值,对应Java中的final变量
      • var(variable的简写)---用来声明一个可变的变量,这种变量在初始赋值之后仍然可以再被重新赋值,对应Java中的非final变量。
      • 显式地声明变量类型: Val a : int = 10
    • Kotlin对象数据类型---Kotlin完全抛弃了Java中的基本数据类型,全部使用了对象数据类型,在Java中int是关键字,而在Kotlin中Int变成了一个类,它拥有自己的方法和继承结构
    • 函数
      • Kotlin标准函数和静态方法
        • 标准函数---Kotlin的标准函数指的是Standard.kt文件中定义的函数,任何Kotlin代码都可以自由地调用所有的标准函数
        • 静态方法---静态方法在某些编程语言里面又叫作类方法,指的就是那种不需要创建实例就能调用的方法,因而静态方法非常适合用于编写一些工具类的功能,因为工具类通常没有创建实例的必要,基本是全局通用的, Kotlin却极度弱化了静态方法这个概念,那么Kotlin为什么要这样设计呢?因为Kotlin提供了比静态方法更好用的语法特性,并且我们在上一节中已经学习过了,那就是单例类
          • 顶层方法
          • @JvmStatic注解
          • 单例类
          • companion object
    • 程序的逻辑控制
      • 顺序语句
      • 条件语句
        • if语句
          • Kotlin中的if语句相比于Java有一个额外的功能,它是可以有返回值的,返回值就是if语句每一个条件中最后一行代码的返回值
        • When
          • Kotlin中的when语句有点类似于Java中的switch语句,但它又远比switch语句强大得多
      • 循环语句
        • While
        • For
        • 区间
          • 双端闭区间: 0..10 , ..是创建两端闭区间的关键字,在..的两边指定区间的左右端点就可以创建一个区间了
          • 左闭右开的区间 : Kotlin中可以使用until关键字来创建一个左闭右开的区间, 0 until 10
          • step(跳过指定的区间)
          • downTo(降序)
      • 面向对象编程
        • 继承
          • 主构造函数---主构造函数将会是你最常用的构造函数,每个类默认都会有一个不带参数的主构造函数,当然你也可以显式地给它指明参数。主构造函数的特点是没有函数体,直接定义在类名的后面即可
          • 次构造函数
          • 类中只有次构造函数,没有主构造函数
        • 多态
        • 函数的可见性修饰符
          • public---public修饰符的作用虽然也是一致的,表示对所有类都可见,但是在Kotlin中public修饰符是默认项,而在Java中default才是默认项
          • private---首先private修饰符在两种语言中的作用是一模一样的,都表示只对当前类内部可见
          • protected---protected关键字在Java中表示对当前类、子类和同一包路径下的类可见,在Kotlin中则表示只对当前类和子类可见
          • internal---只对同一模块中的类可见,使用的是internal修饰符。比如我们开发了一个模块给别人使用,但是有一些函数只允许在模块内部调用,不想暴露给外部,就可以将这些函数声明成internal
        • 数据类与单例类
          • 单例类
          • 数据类
        • Lambda编程
          • 集合的创建与遍历
            • list
              • listOf()函数创建的是一个不可变的集合。
              • 那如果我们确实需要创建一个可变的集合呢?也很简单,使用mutableListOf()函数就可以了
            • set
              • setOf()函数创建的是一个不可变的集合
              • mutableSetOf()函数创建一个可变的集合
            • Map
              • mapOf()函数创建的是一个不可变的集合
              • mutableMapOf()函数创建一个可变的集合
            • 集合的函数式API
              • 学习函数式API的语法结构
        • 空指针检查
        • 字符串内嵌表达式

Android目录

  • Android系统架构
    • 应用层---所有安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人、短信等程序,或者是你从Google Play上下载的小游戏,当然还包括你自己开发的程序
    • 应用框架层---这一层主要提供了构建应用程序时可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的,开发者可以使用这些API来构建自己的应用程序
    • 系统运行库层---这一层通过一些C/C++库为Android系统提供了主要的特性支持。如SQLite库提供了数据库的支持,OpenGL|ES库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持等,在这一层还有 Android运行时库,它主要提供了一些核心库,允许开发者使用Java语言来编写Android应用。另外,Android运行时库中还包含了Dalvik虚拟机(5.0系统之后改为ART运行环境),它使得 每一个Android应用都能运行在独立的进程中,并且拥有一个自己的虚拟机实例
    • Linux内核层---这一层为Android设备的各种硬件提供了底层的驱动
      • 显示驱动
      • 音频驱动
      • 照相机驱动
      • 蓝牙驱动
      • Wi-Fi驱动
      • 电源管理
  • Android开发
    • Android应用开发特色
    • Android开发环境
      • 所需要的工具
        • JDK---JDK是Java语言的软件开发工具包,它包含了Java的运行环境、工具集合、基础类库等内容。
        • Android SDK---Android SDK是Google提供的Android开发工具包,在开发Android程序时,我们需要通过引入该工具包来使用Android相关的API。
        • Android Studio
      • Android模拟器设备
      • Android Studio源程序项目结构
      • 日志工具的使用
        • 程序中的日志输出
          • Log.v()---用于打印那些最为琐碎的、意义最小的日志信息。对应级别verbose,是Android日志里面级别最低的一种。
          • Log.d()---用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别debug,比verbose高一级。
          • Log.i()---用于打印一些比较重要的数据,这些数据应该是你非常想看到的、可以帮你分析用户行为的数据。对应级别info,比debug高一级。
          • Log.w()---用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别warn,比info高一级。
          • Log.e()---用于打印程序中的错误信息,比如程序进入了catch语句中。当有错误信息打印出来的时候,一般代表你的程序出现严重问题了,必须尽快修复。对应级别error,比warn高一级
        • Logcat中可以很轻松地添加过滤器
        • Logcat中的日志级别控制
        • 日志关键字过滤---如果使用过滤器加日志级别控制还是不能锁定到你想查看的日志内容的话,那么还可以通过关键字进行进一步的过滤
    • 创建首个主页面 Activity
      • 创建Activity
      • 注册为主Activity
      • Toast
      • 不用再调用findViewById()方法了
      • 在Activity中使用Menu
      • 销毁一个Activity
      • 在不同的Activity之间跳转
        • Intent---Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可用于启动Activity、启动Service以及发送广播等场景
          • 显式Intent---
          • 隐式Intent---隐式Intent则含蓄了许多,它并不明确指出想要启动哪一个Activity,而是指定了一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent,并帮我们找出合适的Activity去启动
      • Activity的生命周期---每个Activity在其生命周期中最多可能会有4种状态
        • 运行状态
        • 暂停状态
        • 停止状态
        • 销毁状态
        • Activity的生存期
          • Activity类中定义了7个回调方法,覆盖了Activity生命周期的每一个环节
            • onCreate()。这个方法你已经看到过很多次了,我们在每个Activity中都重写了这个方法,它会在Activity第一次被创建的时候调用。你应该在这个方法中完成Activity的初始化操作,比如加载布局、绑定事件等。
            • onStart()。这个方法在Activity由不可见变为可见的时候调用。
            • onResume()。这个方法在Activity准备好和用户进行交互的时候调用。此时的Activity一定位于返回栈的栈顶,并且处于运行状态。
            • onPause()。这个方法在系统准备去启动或者恢复另一个Activity的时候调用。我们通常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶Activity的使用。
            • onStop()。这个方法在Activity完全不可见的时候调用。它和onPause()方法的主要区别在于,如果启动的新Activity是一个对话框式的Activity,那么onPause()方法会得到执行,而onStop()方法并不会执行。
            • onDestroy()。这个方法在Activity被销毁之前调用,之后Activity的状态将变为销毁状态。
            • onRestart()。这个方法在Activity由停止状态变为运行状态之前调用,也就是Activity被重新启动了。
      • Activity的启动模式---启动模式一共有4种,分别是standard、singleTop、singleTask和singleInstance
        • standard启动模式---在standard模式下,每当启动一个新的Activity,它就会在返回栈中入栈,并处于栈顶的位置。对于使用standard模式的Activity,系统不会在乎这个Activity是否已经在返回栈中存在,每次启动都会创建一个该Activity的新实例
        • singleTop启动模式---当Activity的启动模式指定为singleTop,在启动Activity时如果发现返回栈的栈顶已经是该Activity,则认为可以直接使用它,不会再创建新的Activity实例
        • singleTask启动模式---当Activity的启动模式指定为singleTask,每次启动该Activity时,系统首先会在返回栈中检查是否存在该Activity的实例,如果发现已经存在则直接使用该实例,并把在这个Activity之上的所有其他Activity统统出栈,如果没有发现就会创建一个新的Activity实例
        • singleInstance启动模式---指定为singleInstance模式的Activity会启用一个新的返回栈来管理这个Activity
      • Activity的最佳实践
    • UI界面开发
      • ConstraintLayout方式---Google官方更加推荐使用ConstraintLayout来开发程序界面
      • 通过编写XML的方式来实现界面开发
        • TextView控件
        • EditText控件
        • ImageView控件
        • ProgressBar控件
        • AlertDialog控件
        • ListView控件
        • Button控件
        • 创建自定义控件
      • 3种基本布局
        • LinearLayout又称作线性布局---LinearLayout又称作线性布局,是一种非常常用的布局。正如它的名字所描述的一样,这个布局会将它所包含的控件在线性方向上依次排列
        • RelativeLayout又称作相对布局--- RelativeLayout显得更加随意,它可以通过相对定位的方式让控件出现在布局的任何位置
        • FrameLayout又称作帧布局---这种布局没有丰富的定位方式,所有的控件都会默认摆放在布局的左上角

Flutter项目

[

Flutter 项目工程化---付费](https://www.kancloud.cn/tiaohuaren/luoxun)
  • APP的开发途径
    • 原生开发途径---使用Android or IOS 的原生资源
      • Android
      • IOS
    • Progressive Web Apps(PWA)开发途径
      • Blazor
      • Native Script
      • AngularJS
      • React
      • Ionic
    • CrossPlatform Native开发途径
      • microsoft
        • Xamarin
      • facebook
        • React Native
      • google
        • Flutter
      • Kotlin Native
Andriod Studio工具 软件框架搭建 choose the best mobile framework
跨平台开发工具框架演变历史

Android 源码分析

Android 核心技术

Android基础知识 用户界面 数据存储 消息机制与异步任务 事件机制 动画 图像处理 碎片

模拟器

安装 Genymotion及其破解版(转) 7个最佳的Android模拟器 远程调试 Android 设备网页

Android 高级开发

自定义控件 JNI/NDK Android与H5互调 第三方框架源码分析 多渠道打包

Android 前沿技术

OKHttp JSON解析 xUtils3 Afinal Volley Butterknife
EventBus ImageLoader Picasso RecyclerView Glide Fresco
Pulltorefresh UniversalVideoView JieCaoVideoPlayer Banner CountdownView秒杀
OpenDanmaku弹幕 TabLayout&ViewPager

项目实战

Android 视频

有用的参考