Android进阶学习内容整理_%80%e5%85%ac%e5%85%b1%e6%94%af%-程序员宅基地

技术标签: 学习计划  

今天看了一篇文章,说的是程序员的宿命就是不断地学习!

我是个喜欢不断学习新知识,探索新东西的人,无论是对于技术还是生活,我都有着足够的好奇心,我觉得只有这样,人生才会更快乐一些。然而,在学习的过程中,归纳和总结知识,整合资源的能力也是非常重要的。所以,今天正好有点时间,就整合一下Android学习路上进阶的内容。

在文章开始之前想先分享两篇不错的文章。

我的 Android 开发实战经验总结 ——简书上看到的一篇不错的文章

http://www.jianshu.com/p/4f152bc8f4f3


还有一篇是Android学习之路 stormzhang 张哥的文章。
 Android开发如何进阶?

http://mp.weixin.qq.com/s?__biz=MzA4NTQwNDcyMA==&mid=403072488&idx=1&sn=12a1deee3c00da644ad3844032a2374f&scene=0#wechat_redirect


接下来是我整理的 Android进阶学习内容:

书籍:
1.Android群英传
2.Android艺术开发与探索
3.Android设计模式

第三方框架  详细使用步骤加源码解析:1.会使用  2.懂原理  3.框架源码解析

网络框架: 
1.Volley框架二次封装

2. Volley框架源码解析
郭霖:

  1. okhttp
    square 开源的 http 工具类
    项目地址:https://github.com/square/okhttp
    文档介绍:http://square.github.io/okhttp/
    特点:(1) 支持 SPDY( http://zh.wikipedia.org/wiki/SPDY )协议。SPDY 协议是 Google 开发的基于传输控制协议的应用层协议,通过压缩,多路复用(一个 TCP 链接传送网页和图片等资源)和优先级来缩短加载时间。
    (2) 如果 SPDY 不可用,利用连接池减少请求延迟
    (3) Gzip 压缩
    (4) Response 缓存减少不必要的请求

  2. Retrofit
    RESTFUL API 设计
    项目地址:https://github.com/square/retrofit
    文档介绍:http://square.github.io/retrofit/




事件总线:
1. Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
2.公共技术点之 View 事件传递
3.EventBus 源码解析

  1. EventBus
    greenrobot 的开源项目
    项目地址:https://github.com/greenrobot/EventBus
    原理剖析文档:EventBus
    文档介绍:https://github.com/greenrobot/EventBus#general-usage-and-api
    特点:(1) 支持在不同类型的线程中处理订阅,包括发布所在线程,UI 线程、单一后台线程、异步线程
    (2) 支持事件优先级定义,支持优先级高的订阅者取消事件继续传递,支持粘性事件,是不是跟系统的有序广播、粘性广播很像啊
    (3) 不是基于 annotations
    (4) 性能更优
    (5) 体积小
    (6) 支持单例创建或创建多个对象
    (7) 支持根据事件类型订阅

  2. Otto
    Square 的开源项目,基于 Guava 的 Android 优化
    项目地址:https://github.com/square/otto
    文档介绍:http://square.github.io/otto/
    EventBus 与 Otto 的功能及性能对比文档
    EventBus 与 Otto 性能对比 Demo Apk



图片缓存:
  1. Android-Universal-Image-Loader
    图片缓存,目前使用最广泛的图片缓存,支持主流图片缓存的绝大多数特性。
    项目地址:https://github.com/nostra13/Android-Universal-Image-Loader
    原理剖析文档:Android-Universal-Image-Loader
    Demo 地址:https://github.com/Trinea/TrineaDownload/blob/master/universal-imageloader-demo.apk?raw=true
    文档介绍:http://www.intexsoft.com/blog/item/74-universal-image-loader-part-3.html

  2. picasso
    square 开源的图片缓存
    项目地址:https://github.com/square/picasso
    文档介绍:http://square.github.io/picasso/
    特点:(1)可以自动检测 adapter 的重用并取消之前的下载
    (2)图片变换
    (3)可以加载本地资源
    (4)可以设置占位资源
    (5)支持 debug 模式


  1. fresco
    一款强大的图片缓存工具,由 Facebook 开发
    项目地址:https://github.com/facebook/fresco
    文档介绍:http://frescolib.org/
    特点:(1) 两个内存缓存加上磁盘缓存构成了三级缓存
    (2) 支持流式,可以类似网页上模糊渐进式显示图片
    (3) 对多帧动画图片支持更好,如 Gif、WebP
    (4) 更多样的显示,如圆角、进度条、点击重试、自定义对焦点
    (5) 更多样的加载,如支持 EXIF、全面支持 WebP
    (6) 支持 Android 2.3+

  2. Glide
    Glide 是一个 android 平台上的快速和高效的开源的多媒体资源管理库,提供 多媒体文件的压缩,内存和磁盘缓存, 资源池的接口。
    它可以最大性能地在 Android 设备上读取、解码、显示图片和视频。Glide 可以将远程的图片、视频、动画图片等缓存在设备本地便于提高用户浏览图片的流畅体验。
    项目地址:https://github.com/bumptech/glide
    特点:
    (1) GIF 动画的解码
    (2) 本地视频剧照的解码
    (3) 支持缩略图
    (4) Activity 生命周期的集成
    (5) 转码的支持
    (6) 动画的支持
    (7) OkHttp 和 Volley 的支持


Android 三大图片缓存原理、特性对比
Android Universal Image Loader 源码分析

动画框架:
公共技术点之 Android 动画基础
Side Menu.Android 源码解析


注解框架:
Dagger、butterknife
  1. butterknife
    利用 annotation 帮你快速完成 View 的初始化,减少代码
    项目地址:https://github.com/JakeWharton/butterknife
    文档介绍:http://jakewharton.github.io/butterknife/

    ButterKnifeZelezny
    用于快速生成ButterKnifeView 注入代码的 Android Studio/IDEA 插件
    项目地址:https://github.com/inmite/android-butterknife-zelezny


  2. Dagger
    依赖注入,适用于 Android 和 Java
    项目地址:https://github.com/square/dagger
    原理剖析文档:Dagger
    文档介绍:http://square.github.io/dagger/


公共技术点之依赖注入
Dagger 源码解析


上拉刷新,下拉加载:
Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
android-Ultra-Pull-To-Refresh 源码解析


数据库:
LitPal: Android数据库高手秘籍


菜单:
分类侧滑菜单:Side-Menu.Android
Context-Menu.Android: 漂亮带有动画效果的上下文菜单

响应式编程:
深入浅出RxJava四-在Android中使用响应式编程

深入浅出RxJava三--响应式的好处


深入浅出RxJava(二:操作符)


深入浅出RxJava(一)基础篇


深入浅出RxJava(一:基础篇) ——csdn博客系列

RxAndroid
对RxJava在Android上的扩展,使得Android上也很容易实现reactive components,简化线程操作,从而写出很漂亮的代码。
项目地址: https://github.com/ReactiveX/RxAndroid
文档介绍: 给Android 开发者的 RxJava 详解

工具相关:
AndroidUtiles 集合了所有常用的安卓工具类 项目地址: https://github.com/l123456789jy/Lazy


日志输出:
LogUtils

崩溃统计平台:
腾讯BugLy

检查内存泄露: 

多媒体相关:
Vitamio
是一款 Android 与 iOS 平台上的全能多媒体开发框架
项目地址: https://github.com/yixia/VitamioBundle
网站介绍: http://www.vitamio.org/docs/
特点:(1) 全面支持硬件解码与 GPU 渲染
(2) 能够流畅播放 720P 甚至 1080P 高清 MKV,FLV,MP4,MOV,TS,RMVB 等常见格式的视频
(3) 在 Android 与 iOS 上跨平台支持 MMS, RTSP, RTMP, HLS(m3u8)等常见的多种视频流媒体协议,包括点播与直播。


图片处理:
uCrop
Yalantis 出品的强大的图片裁剪库 ,支持缩放,旋转图片,支持各种比例的裁剪框
项目地址:https://github.com/Yalantis/uCrop

android-crop
图片裁剪 Activity 项目地址: https://github.com/jdamcd/android-crop


打包APK:
umeng-muti-channel-build-tool
渠道打包工具
项目地址: https://github.com/umeng/umeng-muti-channel-build-tool
另可参见 Google 的构建系统 Gradle: http://tools.android.com/tech-docs/new-build-system/user-guide

android-resource-remover
根据 lint 的提示删除项目中无用的资源,减少包的大小
项目地址: https://github.com/KeepSafe/android-resource-remover



公共技术点之 View 绘制流程


BaseAdapterHelper 源码分析

公共技术点之 Java 动态代理



 Android Fragment应用实战,使用碎片向ActivityGroup说再见

Complete Android Fragment & Activity Lifecycle
完整的 Android Fragment/Activity 生命周期图
项目地址: https://github.com/xxv/android-lifecycle


PagerSlidingTabStrip 源码解析




SlideAndDragListView

SwipeMenuListView

GridView with Header and Footer
和ListView一样带头部和底部的GridView,用法和ListView一样
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Runningzyx/article/details/52943869

智能推荐

多模态特征融合与多任务学习的特种视频分类_融合多种特征的多任务分类-程序员宅基地

文章浏览阅读3.7k次。前言这篇文章是这个月发布的,采用的方法和参考文献较新,具有一定的参考价值。通过阅读这篇应用型的创新论文,可以很好的对比之前的综述,找到自己的研究创新点。摘要特种视频(本文特指暴力视频)的智能分类技术有助于实现网络信息内容安全的智能监控。针对现有特种视频多模态特征融合时未考虑语义一致性等问题,本文提出了一种基于音视频多模态特征融合与多任务学习的特种视频识别方法。首先,提取特种视频的表观信息和运动信息随时空变化的视觉语义特征及音频信息语义特征;然 后,构 建 具 有 语义保持的共享特征子空间,以实现_融合多种特征的多任务分类

天锐绿盾文档加密软件,文件加密,图纸加密,源代码透明加密系统-程序员宅基地

文章浏览阅读290次,点赞5次,收藏5次。加密后的文件在企业内部环境中可以正常打开和编辑,但一旦脱离受控环境,未经授权则无法打开或显示乱码,从而有效防止了文件非法获取和滥用。总之,天锐绿盾文档加密系统通过源头加密、权限管理、行为审计、文件外发控制等多种手段,为各类型文件提供可靠的安全防护,确保企业数据资产在复杂的网络环境下得到充分的安全保障。对于设计行业的CAD图纸等高价值敏感数据,天锐绿盾能够无缝集成到绘图软件中,确保无论是本地保存还是网络传输,图纸始终处于加密状态,仅授权用户可以正常查看和修改。天锐绿盾 | 办公透明加密、数据防泄漏。

Redhat Enterprise Linux 7.4/CentOS 7.4 安装后初始化配置-程序员宅基地

文章浏览阅读148次。由于我是最小化安装,需要在安装后进行一些配置1. 设定启动级别[root@home ~]# systemctl set-default multi-user.target2. 设定网络[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0TYPE=EthernetPROXY_METHOD=noneBROWSER_..._redhat 7 初始化配置

设置Activity使用系统壁纸作为背景-程序员宅基地

文章浏览阅读2k次。在AndroidManifest.xml中,activity android:label="@string/app_name" android:name=".HomeActivity" android:theme="@style/android:Theme.Wallpaper"> intent-filter

Thread和Runnable-程序员宅基地

文章浏览阅读222次,点赞3次,收藏9次。两者都创建线程的方式,不同之处在于前者是类,后者是接口。使用的时候重写他们即可。

什么是寄存器-程序员宅基地

文章浏览阅读753次,点赞2次,收藏2次。寄存器是计算机中的一种短时存储器,通常用于存储临时数据和指令。它的速度比内存要快得多,因为它直接位于 CPU 内部。寄存器通常很小,只能存储几个字节的数据。..._寄存器是什么

随便推点

科学计数法string 转decimal_c# 可科学计数转为decimal-程序员宅基地

文章浏览阅读352次。方法1:public static decimal ToDecimal(this string obj) { if (string.IsNullOrWhiteSpace(obj)) { return 0; } double result = 0; if (obj.ToUpper().Contains("E")) { _c# 可科学计数转为decimal

【MVP】王宇虹 -程序员宅基地

文章浏览阅读1.1k次。网名tmtony,95年毕业广州中山大学,在外企埋头做了四年的MIS系统开发,主要使用汇编语言、VFP、VB及ORACLE进行软件开发, 99年在利玛公司任高级程序员,开始使用ACCESS和SQL SERVER开发大型CAPMS8 ERP系统, 实施了近六家大型企业的ERP系统, 01年在国土局任职,主要负责GIS 、WEBGIS以及OA系统的开发,同时使用ASP建设政府网站,02年到今任职汇龙科

初识Linux以及其基础指令的使用_1、 linux基本命令的使用: (1) 在根目录下创建一个workspace目录,且在该目录下创-程序员宅基地

文章浏览阅读137次。#1、什么是Linux?在开始之前,相信我们都听说过几种常见操作系统,DOS操作系统,Windows操作系统,Unix操作系统,以及Linux操作系统。现在我们就可以来讲讲Linux这个以高效性和灵活性著称的操作系统,它是基于源代码的方式进行开发的。是一套免费使用和自由传播的类似UNIX的操作系统,这个系统是全世界各地成千上万的程序员设计和实现的。它不仅支持多任务和多线程的操作,而且在大部分的..._1、 linux基本命令的使用: (1) 在根目录下创建一个workspace目录,且在该目录下创

Baumer工业相机堡盟工业相机如何通过BGAPISDK设置硬件触发模式(C++)_工业相机触发电压-程序员宅基地

文章浏览阅读406次。Baumer工业相机堡盟工业相机如何通过BGAPISDK设置硬件触发模式(C++)_工业相机触发电压

实验一:C++简单程序设计-程序员宅基地

文章浏览阅读496次,点赞2次,收藏5次。【实验结论】#2-28实现一个简单的菜单程序,运行时显示“Menu:A(dd) D(elete) S(ort) Q(uit),Selete one:”提示用户输入。A表示增加,D表示删除,S表示排序,Q表示退出。输入为A、D、S时分别提示“数据已经增加、删除、排序。”,输入Q时程序结束。(1)if...else...语句,break,continue控制 #includ..._编写一个完整的程序,实现一个简单的菜单程序c++

5种好用的Python工具分享_pythontutor-程序员宅基地

文章浏览阅读2.9k次。Python开发软件可根据其用途不同分为两种,Python代码编辑器和Python集成开发工具,两者配合使用极大的提高Python开发人员的编程效率。掌握调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等操作。_pythontutor