Android 技术栈总结
2016-11-28 本文已影响906人
ShenJC
Android 技术栈总结
开发工具
IDE
AndroidStudio
编译工具 & 反编译 & 安全
- 官方:Configure your build
- GRADLE构建最佳实践
- Gradle 完整指南(Android)
- App环境分离的实现:Android篇
- Android Apk打包过程
- 深入浅出Android打包
- 使用“aapt dump”查看APK内容
- Android 反编译初探 应用是如何被注入广告的
jcenter & maven
Java 代码质量 CodeReview
- 让 CodeReview 这股清流再飞一会儿
- 使用Lint 和 Annotations来提升代码质量
- [Google] Improve Your Code with Lint
- [Google] Improve Code Inspection with Annotations
- 提高代码质量-工具篇
Structure
App Resource
Application
Context
Configuration
Other
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
ViewSwitcher、TextSwitcher、ImageSwitcher
WebView
ScrollView
Soft Keyboard
Interaction
DialogFragment
Menus and Popups
Toast
ToolBar & ActionBar
SystemUI
Snackbar
Floating Action Button
CoordinatorLayout
- [CodePath] Handling Scrolls with CoordinatorLayout (Collapsing toolbars)
- 一个神奇的控件——Android CoordinatorLayout与Behavior使用指南
- 源码看CoordinatorLayout.Behavior原理
BottomSheet
重复周期任务
- [CodePath] Repeating Periodic Tasks (Handler, ScheduledThreadPoolExecutor)
- using-with-alarmmanager-for-periodic-tasks
- Scheduling Repeating Alarms
- 关于使用AlarmManager的注意事项
- ThreadPoolExecutor 官方使用说明
AdapterViews
ListView
RecyclerView
-
基础和使用
-
Adapter 和 ViewHolder
-
RecyclerView LayoutManager布局
-
HeaderView and FooterView
-
下拉刷新 和 自动加载
-
开源库整理
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
Drawable & Canvas
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
Animation 动画
-
[CodePath] Animations (Animating views, layouts, activities and more)
-
Activity 动画
-
Transition 动画
-
自定义动画
-
Interpolator 动画插值器
-
其他
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
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
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
Native API
OkHttp API
Retrofit API
- [CodePath] Consuming APIs with Retrofit
- [Bugly] 深入浅出 Retrofit
- Retrofit 2.0 超能实践系列
Display And Download Images
Fresco
FileTransfer 文件下载
Socket
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
Android JNI
Libraries (开源库)
自己使用
汇总
- [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 相关
第三方扩展库
-
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. -
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 插件化(组件化)开发
Android 热修复
Hybrid APP
性能优化
UI 优化
内存优化
- Android DiskLruCache完全解析,硬盘缓存的最佳方案
- 安卓面试题 5 – 关于内存泄漏
- 从OnTrimMemory角度谈Android代码内存优化
- 说一说Android Studio和IDEA中一个很有用的内存调试插件
网络优化
Android Framework
System
AMS
WMS
InputSystem
- Android 5.0(Lollipop)事件输入系统(Input System)
- TouchEvent