Android 技术栈总结
开发工具
IDE
AndroidStudio
Android Studio使用总结
神奇的Android Studio Template
让你变懒的 Android Studio Live Templates
你真的了解Instant Run吗?
编译工具 & 反编译 & 安全
- 官方:Configure your build
- GRADLE构建最佳实践
- Gradle 完整指南(Android)
- App环境分离的实现:Android篇
- Android Apk打包过程
- 深入浅出Android打包
- 使用“aapt dump”查看APK内容
- Android 反编译初探 应用是如何被注入广告的
jcenter & maven
- Android 快速发布开源项目到jcenter
Java 代码质量 CodeReview
- 让 CodeReview 这股清流再飞一会儿
- 使用Lint 和 Annotations来提升代码质量
- [Google] Improve Your Code with Lint
- [Google] Improve Code Inspection with Annotations
- 提高代码质量-工具篇
Structure
App Resource
- [CodePath] Understanding App Resources (Understanding Strings and Resources)
Application
- [CodePath] Understanding the Android Application Class (Custom application object)
Context
- [CodePath] Using Context (What is context and how is it used?)
Configuration
- [CodePath] Handling Configuration Changes (Screen Rotation)
Other
- [CodePath] Organizing your Source Files (Cleaning up source of your apps)
UI相关
Views and Layouts
- [CodePath] Constructing View Layouts (How to layout views)
- [CodePath] Defining Views and their Attributes (Gravity, Margin, Padding, etc)
- Android xml资源文件中@、@android:type、@*、?、@+含义和区别
TextView
- [CodePath] Working with the TextView (Properties, Drawables, Custom Fonts)
- 强大的SpannableStringBuilder
ImageView & Bitmap
- [CodePath] Working with the ImageView (Drawables, Size and Scale, Density, Raw Bitmaps)
- Android总结 - ImageView
- Android Bitmap面面观
- Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?
- Android 高仿微信语音聊天页面高斯模糊效果
- 教你一分钟实现动态模糊效果
include merge ViewStub
- Android抽象布局——include、merge 、ViewStub
ViewSwitcher、TextSwitcher、ImageSwitcher
- ViewSwitcher、TextSwitcher、ImageSwitcher 使用方法
WebView
- [CodePath] Working with the WebView
- WebView你真的熟悉吗?看了才知道
ScrollView
- [CodePath] Working with the ScrollView
- [CodePath] Implementing a Heterogenous ListView ScrollView
Soft Keyboard
- [CodePath] Working with the Soft Keyboard
Interaction
DialogFragment
- [CodePath] Dialogs with DialogFragment (Displaying a content overlay)
Menus and Popups
- [CodePath] Menus and Popups (Context Menu, PopupMenu, PopupWindow)
- Android总结 - Menu
Toast
- [CodePath] Displaying Toasts (Quick notices and includes custom views)
ToolBar & ActionBar
- [CodePath] Using the App Toolbar (ActionBar Replacement)
- Toolbar作为ActionBar与标题居中
SystemUI
- 管理System UI (状态栏 + 导航栏) ,翻译自[Google] Managing the System UI
Snackbar
- [CodePath]Displaying the Snackbar (Quick notices with actions)
Floating Action Button
- [CodePath] Floating Action Buttons (Android 5.0, Promoted Action)
CoordinatorLayout
- [CodePath] Handling Scrolls with CoordinatorLayout (Collapsing toolbars)
- 一个神奇的控件——Android CoordinatorLayout与Behavior使用指南
- 源码看CoordinatorLayout.Behavior原理
BottomSheet
- Android 原生BottomSheet 介绍及坑
- Material Design系列,Behavior之BottomSheetBehavior与BottomSheetDialog
重复周期任务
- [CodePath] Repeating Periodic Tasks (Handler, ScheduledThreadPoolExecutor)
- using-with-alarmmanager-for-periodic-tasks
- Scheduling Repeating Alarms
- 关于使用AlarmManager的注意事项
- ThreadPoolExecutor 官方使用说明
AdapterViews
ListView
- Android之ListView的getItemViewType和getViewTypeCount
RecyclerView
-
基础和使用
- [CodePath](Using the RecyclerView (Android 5.0))
- RecyclerView 技术栈
-
Adapter 和 ViewHolder
- 打造属于RecyclerView的万能适配器Adapter和ViewHolder
-
RecyclerView LayoutManager布局
- [CodePath] Heterogenous Layouts inside RecyclerView (Android 5.0)
-
HeaderView and FooterView
- RecyclerView添加Header的正确方式
- Android 优雅的为RecyclerView添加HeaderView和FooterView
-
下拉刷新 和 自动加载
- [CodePath] Implementing Pull to Refresh Guide
- [CodePath]Endless Scrolling with AdapterViews and RecyclerView (Infinite pagination)
- RecyclerView 实现下拉刷新和自动加载
-
开源库整理
- RecyclerView 开源框架大集合
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
CardView
- [CodePath] Using the CardView
Navigations
- [CodePath] Common Navigation Paradigms (Tabs, Swipe-able Views, Pull-out Drawer)
- [CodePath] Common Implicit Intents (Making a Call, Sending a Text, Opening a URL)
- [CodePath] Sharing Content with Intents (and ShareActionProvider)
Designing and Styling Views
- [CodePath] Android Design Guidelines (Overview of Android design standards)
Drawable & Canvas
[CodePath] Drawables (and how to polish UI views)
Android的矢量图支持 - VectorDrawable
Android设计中的.9.png
Android 2D绘图解析之 Canvas,Paint
Canvas之translate、scale、rotate、skew方法讲解!
LoadingDrawable源码分析
Styles and Themes 样式 主题
- [CodePath] Styles and Themes (Consolidating view styles)
- [CodePath] Developing Custom Themes (Integrating drawables, styles and themes)
- Attr、Style和Theme详解
- Android主题换肤 无缝切换
Material Design
- [CodePath] Material Design Primer (Lollipop Design Overview)
- [Google] 面向开发者的 Material Design
- [CodePath] Dynamic Color using Palettes (Adaptive colors, Android 5.0)
Design Support Library
- [CodePath] Design Support Library (Material Design Library)
Animation 动画
[CodePath] Animations (Animating views, layouts, activities and more)
[CodePath] Ripple Animation (Android 5.0)
[CodePath] Circular Reveal Animation (Android 5.0)
-
Activity 动画
- 酷炫的Activity切换动画,打造更好的用户体验
- 实现Activity跳转动画的五种方式
-
Transition 动画
- Getting Started with Activity & Fragment Transitions
- [CodePath] Shared Element Activity Transition (Android 5.0)
-
自定义动画
- Android自绘动画实现与优化实战——以Tencent OS录音机波形动画为实例
-
Interpolator 动画插值器
- PathInterpolator简介 , 贝塞尔曲线
- Android 自带Interpolator(插值器)讲解
-
其他
- 开发者选项中动画时长原理分析(Android M)
- Android动画FillEnabled、FillBefore、FillAfter理解
Custom Views 自定义控件 自定义View
- [CodePath] Defining Custom Views (Needs Attention)
- [CodePath] Extending SurfaceView (Needs Attention)
- Android SurfaceView 源码分析及使用
- 自定义View系列教程
- 自己总结:带有一键清空功能的EditText
- 浅谈Android自定义锁屏页的发车姿势
- 实现类似新浪微博帖子显示(2)——话题、@好友、表情解析工具类
Component
Activity
- Activity 任务、返回栈、保存Activity的状态
- 彻底弄懂Activity四大启动模式
- [CodePath] Navigation and Task Stacks (Controlling the behavior of the task stack)
Broadcast
- BroadcastReceiver的注册和使用
Service
- Service使用总结
Fragments
- [CodePath] Creating and Using Fragments
- [CodePath] Displaying a DialogFragment
- [CodePath] Sliding Tabs with PagerSlidingTabStrip
- [CodePath] ViewPager with FragmentPagerAdapter
- [CodePath] Fragment Navigation Drawer
- 个人总结 - Fragment
Content Providers
- Android数据库升级攻略
- ContentProvider 的批处理操作
Permissions 权限
- [CodePath] Understanding App Permissions
- [CodePath] Managing Runtime Permissions with PermissionsDispatcher
- 聊一聊Android 6.0的运行时权限
后台任务
- [CodePath] Starting Background Services (with IntentService and Receivers)
- [CodePath] Notifications (Persistent Notices on the Dashboard)
- Notification 使用
- [CodePath] Push Messaging (Parse Push and Broadcast Receiver Overview)
- [CodePath] Managing Threads and Custom Services (Looper, Handler, ThreadPoolExecutor)
Networking and Models
Network Requets
HTTP & HTTPS
- Android网络编程(一)HTTP协议原理
- Android 偶遇HTTPS
- HTTPS 理论详解与实践
- 详解Https是如何确保安全的?
Native API
- [CodePath] Sending and Managing Network Requests (API Calls, Image Downloading)
OkHttp API
- [CodePath] Networking with the OkHttp Library
Retrofit API
- [CodePath] Consuming APIs with Retrofit
- [Bugly] 深入浅出 Retrofit
- Retrofit 2.0 超能实践系列
- Retrofit 2.0(一) 超能实践,完美支持Https传输
- Retrofit2.0(二) 完美同步Cookie实现免登录
- Retrofit 2.0 超能实践(三),轻松实现文件/图片上传
- Retrofit 2.0 超能实践(四),完成大文件断点下载
- 基于Retrofit2.0 封装的超好用的RetrofitClient工具类
- 玩转IOC,教你徒手实现自定义的Retrofit框架
Display And Download Images
Fresco
- Displaying Images with the Fresco Library
FileTransfer 文件下载
- Android快速实现文件下载(只有4行代码)
- 多线程断点下载
Socket
- [CodePath] Sending and Receiving Data with Sockets
Persistence
- [CodePath] Persisting Data to the Device (Preferences, Files, SQLite, ORMs)
- [Android总结 - 保存数据到存储器中]
- [CodePath] Storing and Accessing SharedPreferences
- [CodePath] Settings with PreferenceFragment
- [CodePath] Local Databases with SQLiteOpenHelper
- [CodePath] Storing Secret Keys in Android (API keys, credentials)
Sensors and Device SDKs
- [CodePath] Accessing the Camera and Stored Media (Camera, Photo Roll)
- [CodePath] Retrieving Location with LocationServices API (Location)
- [CodePath] Listening to Sensors using SensorManager (Light, Accelerometer)
- [CodePath] Audio Playback and Recording (MediaPlayer)
- [CodePath] Video Playback and Recording (VideoView)
- 自动抢红包,自动安装原理之AccessibilityService
Testing
[CodePath] Android Testing Options
[CodePath]Unit Testing with Robolectric
[CodePath]UI Testing with Espresso
解读Android官方MVP项目单元测试
Android单元测试 - 如何开始?
Android JNI
- 关于Android的.so文件你所需要知道的
Libraries (开源库)
自己使用
- ButterKnife
- [CodePath] Reducing View Boilerplate with Butterknife (View Annotations)
- 深入理解 ButterKnife,让你的程序学会写代码
汇总
- [CodePath] Must Have Libraries (Networking, Persistence, Compatibility, Convenience, etc)
- [CodePath] Popular External Tools (Analytics, Crash Reporting)
- awesome-android
动画相关
- Transitions-Everywhere Material Design 中 Transition动画,向后兼容
- AndroidViewAnimations Android Property Animation, Animator
TroubleShooting
Android进程保活招式大全
Android-完全退出当前应用程序-新公司学习到的细节
Android子线程中更新UI的3种方法
ListView、RecyclerView、ScrollView里嵌套ListView 相对优雅的解决方案:NestFullListView
在滚动列表中实现视频的播放(ListView & RecyclerView)
ViewPager 嵌套百度地图事件冲突的解决方法
防止按钮重复点击
Android系统中Parcelable和Serializable的区别
android actionBar searchview 默认展开,并且放大镜图标在编辑框内。
Android实现点击AlertDialog上按钮时不关闭对话框的方法
Splash实践 , 启动页、开屏页、广告页
26款优秀的Android逆向工程工具
那些值得你试试的Android竞品分析工具
Windows Git Tip: Hide ^M (Carriage Return) in Diff
常用代码
Android 相关
- AndroidUtils 自己总结
- Google Samples
- Android开发人员不得不收集的代码
- project_and_code_guidelines
第三方扩展库
-
guava
The Guava project contains several of Google's core libraries that we rely on in our Java-based projects: collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and so forth.Google Guava官方教程(中文版)
joda-time
Joda-Time provides a quality replacement for the Java date and time classes.commons-lang
Provides extra functionality for classes in java.lang.commons-collections
Extends or augments the Java Collections Framework.
APP Advance
Architecture 架构
- [CodePath] Architecture of Android Apps (Understanding how apps should be structured)
- 最全的安卓架构合集
- Google MVP Examples
- Android架构思考:模块化、多进程
响应式编程
Rx*
- Android开发技术周报特刊之RxJava&RxAndroid Issue#1
Android 插件化(组件化)开发
- 蘑菇街 App 的组件化之路
Android 热修复
- Android热修复技术专题:来自微信、淘宝、支付宝、QQ空间的热修复方案
- 当你准备开发一个热修复框架的时候,你需要了解的一切
- Android 动态链接库加载原理及 HotFix 方案介绍
Hybrid APP
性能优化
- [Google] Best Practices for Performance
- Android 性能优化典范系列
- Android客户端性能优化(魅族资深工程师毫无保留奉献)
UI 优化
- Android性能优化-过度绘制解决方案
- Android UI性能优化 检测应用中的UI卡顿
内存优化
- Android DiskLruCache完全解析,硬盘缓存的最佳方案
- 安卓面试题 5 – 关于内存泄漏
- 从OnTrimMemory角度谈Android代码内存优化
- 说一说Android Studio和IDEA中一个很有用的内存调试插件
网络优化
- APP弱网络条件下,体验优化之道
Android Framework
System
- 详解 Android 是如何启动的
AMS
- [译]Android Application启动流程分析
WMS
- Android 的窗口管理系统 (View, Canvas, WindowManager)
- 像360悬浮窗那样,用WindowManager实现炫酷的悬浮迷你音乐盒(上)
InputSystem
- Android 5.0(Lollipop)事件输入系统(Input System)
- TouchEvent
- 可能是讲解 Android 事件分发最好的文章
- 那些你应该知道却不一定知道的——View坐标分析汇总
View System
- Android LayoutInflater深度解析 给你带来全新的认识