Android-Tips

This is an awesome list of tips for android.

If you are a beginner, this list will be the first choice for you when you have a difficult time.

​Star​​ and ​​Fork​​, your support is my greatest affirmation.


学习 Android 至今,大大小小的坑没少踩过,庆幸的是,在强大的搜索引擎与无私奉献的人们的帮助下,那些坑都顺利地被填平了。

为了日后在遇到同样的问题时,能免于再次搜索带来的麻烦,我养成了收藏书签的习惯,随着书签(Tips)的日积月累,我想,是时候该有这个项目了。

如果你是个 Android 新人,又不善于搜索或不知道从何开始,那么我相信这份列表,将会成为你的首选。

当然,这份列表并不完美,如果不幸,这里没有你所踩到的坑,或者对于某个问题你有更好的 Tips,欢迎与大家分享,让我们一起来维护这个项目!

你可以通过 ​​Pull request​​​ 的形式进行提交,当然也欢迎 ​​Star​​ 与 ​​Fork​

由于各种问题,给出的链接可能会无法正常访问。遇到这种情况欢迎大家提交 ​​Issue​​​,Contributers 也可以使用 ​​Utils​​​ 里面的 ​​URLChecker​​ 来检测列表里链接的有效性,你可以选择更改为新的有效连接,或者把需要梯子的文章以 Markdown 的形式保存在 Utils/Content 目录下,并注明原文章链接和作者。


目录


A

ADB

  1. ​Installing ADB on Windows 7​
  2. ​Android ADB常用命令​
  3. ​​Android开发调试工具ADB的使用​​
  4. ​Android通过Wifi来调试你的应用​
  5. ​​Adb connection Error:远程主机强迫关闭了一个现有的连接​​

Adapter

  1. ​Android简便通用的SimpleBaseAdapter​
  2. ​Android数据适配器(Adapter)优化:使用高效的ViewHolder​
  3. ​​Android 快速开发系列 打造万能的ListView GridView 适配器​​

AIDL

  1. ​​android进程间通信:使用AIDL​​
  2. ​​Android AIDL使用详解​​
  3. ​​android跨进程通信(IPC): 使用AIDL​​
  4. ​​Android中的跨进程通信的实现(一)——远程调用过程和aidl​​
  5. ​Android Studio下如何配置AIDL文件​

Android-Async-Http

  1. ​Asynchronous Http Client for Android​
  2. ​​快速Android开发系列网络篇之Android-Async-Http​​
  3. ​android-async-http框架库使用基础​

Android Studio

  1. ​Android Studio导入项目​
  2. ​Android Studio 简单设置​
  3. ​Android Studio 简介及导入 jar 包和第三方开源库方法​
  4. ​​Android Studio使用技巧系列教程(一)​​
  5. ​​Android Studio中如何使用Git和Github来管理项目​​
  6. ​​Android Studio 权威教程​​
  7. ​倍数提高工作效率的Android Studio奇技​
  8. ​​Android Studio 快捷键(Windows)​​
  9. ​Android Studio详细教程汇总​
  10. ​Android Studio有什么奇技淫巧​

AQuery

  1. ​AQuery Image Loading​
  2. ​​Android之使用Android-query框架进行开发(一)​​

AsyncTask

  1. ​​Android AsyncTask完全解析,带你从源码的角度彻底理解​​
  2. ​​Android中AsyncTask的简单用法​​
  3. ​Android开发者:你真的会用AsyncTask吗?​
  4. ​​深入解析AsyncTask,多例子版​​

Annotations

  1. ​AndroidAnnotations框架入门教程一之介绍​
  2. ​How to stop an animation (cancel() does not work)​

B

Bitmap

  1. ​图片处理​
  2. ​​Android中自定义布局中加载图片BitmapFactory.options详解​​
  3. ​​Android学习笔记进阶16之BitmapShader​​
  4. ​Android 优化Bitmap避免OutOfMemoryError​
  5. ​​Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅​​
  6. ​Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?​

Broadcast

  1. ​​【Android】BroadCast广播机制应用与实例​​
  2. ​玩转Android---组件篇---Broadcast Receiver(广播接收器)​
  3. ​​【Android】动态注册广播接收器​​

C

Callback

  1. ​How to Define Callbacks in Android?​
  2. ​​一个经典例子让你彻彻底底理解java回调机制​​
  3. ​​Java设计模式-回调函数和观察者模式​​

CardView

  1. ​​Android5.0新控件CardView的介绍和使用​​
  2. ​Android CardView Example​
  3. ​Android CardView Widget – Add Cards to a List using RecyclerView​

Configuration Change

  1. ​​Android Configuration change引发的问题及解决方法​​
  2. ​Handling Runtime Changes​

Context

  1. ​​android学习—— context 和 getApplicationContext()​​
  2. ​​Android中Context详解 ---- 你所不知道的Context​​
  3. ​Difference between getContext() , getApplicationContext() , getBaseContext() and “this”​

CoordinatorLayout

  1. ​CoordinatorLayout与滚动的处理​
  2. ​Handling Scrolls with CoordinatorLayout​

D

Download

  1. ​Download a file with Android, and showing the progress in a ProgressDialog​​​ ​​译文​
  2. ​​Java 服务器端支持断点续传的源代码【支持快车、迅雷】​​
  3. ​​Java 多线程断点下载文件​​
  4. ​​Android 后台Service下载 (一)​​
  5. ​​Android网络编程 --断点续传下载文件​​
  6. ​​android 多线程断点续传下载 一​​

Dagger


E

EventBus

  1. ​​EventBus使用详解(一)——初步使用EventBus​​
  2. ​​快速Android开发系列通信篇之EventBus​​
  3. ​​Android EventBus实战 没听过你就out了​​

F

Fragment - 碎片

  1. ​​Android Fragment完全解析,关于碎片你所需知道的一切​​
  2. ​​Android Fragment 你应该知道的一切​​
  3. ​​Android系列之Fragment(二)----Fragment的生命周期和返回栈​​
  4. ​​处女男学Android(九)---Fragment进阶篇之Fragment生命周期和回退栈​​
  5. ​Fragment笔记整理​
  6. ​Android实战技巧:Fragment的那些坑​
  7. ​​android Fragments详解四:管理fragment​​
  8. ​​Android Fragment 嵌套使用(Nested Fragments)​​

FlowLayout - 自定义流布局

  1. ​​Android 自定义ViewGroup - 实现FlowLayout - 本文出自【张鸿洋的博客】​​

G

Glide

  1. ​Glide 一个专注于平滑滚动的图片加载和缓存库​
  2. ​Google推荐的图片加载库Glide介绍​

Gradle

  1. ​​用Gradle 构建你的android程序​​
  2. ​Android Studio系列教程四--Gradle基础​
  3. ​使用Gradle构建Android项目​
  4. ​使用Gradle管理你的Android Studio工程​
  5. ​灵活强大的构建系统Gradle​
  6. ​Gradle Android Could not find method testPackage()​
  7. ​Android Studio 1.0 Gradle Error with getConfiguration()​
  8. ​Android打包的那些事​
  9. ​​深入理解Android之Gradle​​
  10. ​gradle build fails on lint task​
  11. ​“Gradle Version 2.10 is required.” Error​

greenDao

  1. ​ORM 框架之 greenDAO 使用心得​
  2. ​​SQLite数据库框架ORMLite与GreenDao的简单比较​​
  3. ​​在AndoridStudio中引入GreenDAO​​

GridView

  1. ​​Android入门第八篇之GridView(九宫图)​​
  2. ​​用Volley让GridView加载网络图片​​
  3. ​Add space to top and bottom of GridView​

H

Hotfix

  1. ​​Android热更新实现原理​​
  2. ​Android App 线上热修复方案​
  3. ​Nuwa​

Handler

  1. ​Handler和他的小伙伴们​

I

ImageView

  1. ​​[Android] ImageView.ScaleType设置图解​​

Immersive Full-Screen Mode

  1. ​Using Immersive Full-Screen Mode​​​ ​​译文​

Intent

  1. ​Android系列教程之十:Intents and Intent Filters(一)​
  2. ​​Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!​​
  3. ​​Intent filter 关于Action、Category属性详解---附带实例源码​​
  4. ​​startActivityForResult用法详解​​
  5. ​​Android 开发笔记——通过 Intent 传递类对象​​

J

Java 8

  1. ​Modern Java - A Guide to Java 8​
  2. ​Java8系列 - Java8简明指南​

Json

  1. ​​Android系列---JSON数据解析​​
  2. ​​android json解析及简单例子​​
  3. ​​Android开源库--Gson谷歌官方json解析库​​
  4. ​DataContract4A-简化Json解析与生成​

JNI

  1. ​Hello JNI​

K

Kotlin

  1. ​Kotlin Programming Language​
  2. ​Kotlin中文站点​
  3. ​使用Kotlin进行Android开发​

L

ListFragment

  1. ​​Android App组件之ListFragment -- 说明和示例​​
  2. ​Android 使用ListFragment显示列表​

ListView

  1. ​​在Activity中响应ListView内部按钮的点击事件​​

Log

  1. ​Logger工具类​
  2. ​KLog​

M

MessageDigest

  1. ​​Java利用MessageDigest获取字符串或文件MD5详解​​
  2. ​类 MessageDigest​

Material Design

  1. ​Google Material Design: Everything You Need to Know​
  2. ​An exploration in Material Design​
  3. ​谢谷歌大神传我动画设计30年功力​
  4. ​Codelab for Android Design Support Library used in I/O Rewind Bangkok session​

MVP

  1. ​​浅谈 MVP in Android​​
  2. ​Android中的MVP​
  3. ​开源项目Philm的MVP架构分析​
  4. ​一种在android中实现MVP模式的新思路​
  5. ​说说Android的MVP模式​

N

NavigationView

  1. ​Easy Navigation Drawer with Design Support Library​

Notification

  1. ​​Android——Notifications笔记​​
  2. ​​Android学习之Notification的简单使用​​

O

ORMLite

  1. ​​Android 快速开发系列 ORMLite 框架最佳实践​​
  2. ​Android ORM框架之 ORMLite​

OkHttp

  1. ​​开源项目OkHttpPlus——支持GET、POST、UI线程回调、JSON格式解析、链式调用、文件上传下载​​
  2. ​​Android OkHttp完全解析 是时候来了解OkHttp了​​

P

Parcelable

  1. ​​Android中Parcelable接口用法​​

PackageManager

  1. ​​Android中获取应用程序(包)的信息-----PackageManager的使用(一)​​
  2. ​​【Android】获取手机中已安装apk文件信息(PackageInfo、ResolveInfo)(应用图片、应用名、包名等)​​
  3. ​​Android获取已安装应用信息(图标,名称,版本号,包)​​
  4. ​​关于android 如何安装 assets文件下的apk​​

Palette

  1. ​Extracting Colors to a Palette with Android Lollipop​
  2. ​Android Lollipop 新特性 - Palette​

Preference

  1. ​​PreferenceActivity(首选项设置页)​​
  2. ​​Android的设置界面及Preference使用​​

Picasso

  1. ​Picasso官方网站及javadoc​
  2. ​​Android图片下载缓存库picasso解析​​

R

React Native

  1. ​React Native for Android 入门老虎​
  2. ​React Native For Android初体验​

Reference

  1. ​​Java的引用StrongReference、 SoftReference、 WeakReference 、PhantomReference​​
  2. ​​Java 7之基础 - 强引用、弱引用、软引用、虚引用​​

RecyclerView

  1. ​RecyclerView使用详解(一)​
  2. ​​Android RecyclerView 使用完全解析 体验艺术般的控件​​
  3. ​A Guide to Android RecyclerView and CardView​
  4. ​​Android-RecyclerView-Item点击事件设置​​
  5. ​Why doesn't RecyclerView have onItemClickListener()? And how RecyclerView is different from Listview?​
  6. ​Create RecyclerView with multiple view type​
  7. ​Simple RecyclerView Divider​

Retrofit

RxJava

  1. ​RxJava: Reactive Extensions for the JVM​
  2. ​给 Android 开发者的 RxJava 详解​
  3. ​NotRxJava懒人专用指南​

RandomAccessFile

  1. ​​Java RandomAccessFile用法​​

S

SearchView

  1. ​​详细解读Android中的搜索框(三)—— SearchView​​

Serializable

  1. ​Android系统中Parcelable和Serializable的区别​
  2. ​Android: Difference between Parcelable and Serializable?​

Service

  1. ​​Android Service完全解析,关于服务你所需知道的一切(上)​​
  2. ​​ExecutorService 的理解与使用​​
  3. ​​Android基本功:IntentService的使用​​
  4. ​​Android基础笔记(十一)- Service基础和注意事项以及Activity与Service的通信​​

SharedPreference

  1. ​​Android SharedPreferences使用以及原理详解​​
  2. ​Google为何这样设计OnSharedPreferenceChangeListener​
  3. ​SharedPreferences在多进程中的使用及注意事项​

SparseArray

  1. ​Android应用性能优化之使用SparseArray替代HashMap​
  2. ​Android SparseArray​
  3. ​Android性能优化之使用SparseArray代替HashMap​
  4. ​HashMap的实现与优化​

SQLite

  1. ​​Android中SQLite应用详解​​
  2. ​​ANDROID开发之SQLite详解​​
  3. ​使用嵌入式关系型SQLite数据库存储数据​
  4. ​Android将数据库保存到SD卡的实现​

Support Library

  1. ​Android Support兼容包详解​
  2. ​Android各个Support Library介绍​
  3. ​Android Support Library 23.1的变化​

SwipeRefreshLayout

  1. ​Android SwipeRefreshLayout​
  2. ​​下拉刷新之 swipeRefreshLayout​​

T

Textview

  1. ​Remove underline from links in TextView​
  2. ​What is the default text size on Android?​
  3. ​Which unit of measurement does the Paint.setTextSize(float) use?​
  4. ​How to set unit for Paint.setTextSize()​
  5. ​Android Center text on canvas​

TouchEvent

  1. ​​两分钟彻底让你明白Android中onInterceptTouchEvent与onTouchEvent(图文)!​​
  2. ​​MotionEvent事件在onInterceptTouchEvent()、onTouchEvent()中的传递顺序​​
  3. ​Android Deeper(00) - Touch事件分发响应机制​

Thread

  1. ​​ThreadPoolExecutor运转机制详解​​
  2. ​ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别​
  3. ​​Java并发编程:Callable、Future和FutureTask​​
  4. ​​Java 7之多线程线程池 - Callable和Future​​
  5. ​​Java 7之多线程线程池 - 线程池原理(1)​​
  6. ​Android线程间交互(Java synchronized & Android Handler)​
  7. ​​Android--多线程之Handler​​
  8. ​Java(Android)中线程池的使用​
  9. ​Java(Android)线程池​

U

Unit Test

  1. ​​Android单元测试​​
  2. ​Don’t Test Blindly: The Right Methods for Unit Testing Your Java Apps​
  3. ​在Android Studio中进行单元测试和UI测试​

V

ViewPager

  1. ​​Android ViewPager使用详解​​
  2. ​​ViewPager + Fragment实现滑动标签页​​
  3. ​【移动开发】Android中Fragment+ViewPager的配合使用​
  4. ​​Android 手把手教您自定义ViewGroup(一)本文出自:【张鸿洋的博客】​​
  5. ​Android的坑之ScrollView嵌套ViewPager​

View

  1. ​​Android LayoutInflater原理分析,带你一步步深入了解View(一)​​
  2. ​​Android中View绘制流程以及invalidate()等相关方法分析​​
  3. ​​Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)​​
  4. ​​Android开发:LayoutParams的用法​​
  5. ​Saving Android View state correctly​

ViewFlipper

  1. ​​Android ViewFlipper的使用分析​​
  2. ​​Android 滑动效果入门篇(一)—— ViewFlipper​​

VideoView

  1. ​​Android--使用VideoView播放视频​​
  2. ​Playing a video in VideoView in Android​
  3. ​Position Video Inside a VideoView​

Volley

  1. ​Android Volley​
  2. ​​Android Volley完全解析(一),初识Volley的基本用法​​
  3. ​Android库Volley的使用介绍​
  4. ​网络请求库Volley详解​
  5. ​Volley 源码解析​
  6. ​使用okHttp、Volley、Gson快速组装HttpClinet​

W

WebView

  1. ​WebView详解​
  2. ​Java 与 JavaScript 如何进行交互​
  3. ​​Android与js交互实例​​
  4. ​Android中Java和JavaScript交互​
  5. ​顶部带进度条的Webview​
  6. ​Android WebView播放视频问题​
  7. ​​理解WebKit和Chromium: Android 4.4 上的Chromium WebView​​
  8. ​在WebView中如何让JS与Java安全地互相调用​
  9. ​​Android WebView的Js对象注入漏洞解决方案​​

Others

Code Style

  1. ​Java编程规范​
  2. ​​Android 命名规范 (提高代码可以读性)​​
  3. ​Code Style Guidelines for Contributors​

Git

  1. ​Pro Git​
  2. ​GitHub秘籍​
  3. ​git - 简易指南​
  4. ​基于Github参与开源项目指南​
  5. ​使用git和github进行协同开发流程​
  6. ​如何高效利用GitHub​
  7. ​廖雪峰的GIT入门教程​
  8. ​GitHub&Git入门基础​
  9. ​git-flow 备忘清单​

JCenter

  1. ​Android Studio发布项目到Jcenter​
  2. ​将Library上传到Jcenter​
  3. ​​使用Gradle发布aar项目到JCenter仓库​​

反编译

  1. ​​android_smali语法学习​​
  2. ​​apk的包名修改​​
  3. ​为Sublime Text安装smali代码语法高亮插件​
  4. ​​Android APK反编译详解(附图)​​
  5. ​​Android开发学习总结(六)—— APK反编译​​
  6. ​我是如何使用Android反编译软件的?​
  7. ​Android程序的反编译对抗研究​

设计模式

  1. ​Java开发中的23种设计模式详解​
  2. ​MVC,MVP 和 MVVM 的图示​
  3. ​​如果让我重新设计一款Android App​​
  4. ​一个人如何开发一款 App?​
  5. ​Android应用架构 (Android Dev Summit 2015)​
  6. ​Android源码设计模式分析项目​

夜间模式

  1. ​Android Night Mode 夜间模式实现​
  2. ​Android夜间模式实现​
  3. ​Android 中 知乎日报和知乎设置夜间模式是怎么样做到不重启Activity的?​

自定义控件

  1. ​​Android 自定义View及其在布局文件中的使用示例​​
  2. ​自定义控件进阶:declare-styleable重用attr​
  3. ​​android 自定义控件 使用declare-styleable进行配置属性(源码角度)​​
  4. ​​Android使用AttributeSet自定义控件的方法​​
  5. ​从源码中浅析Android中如何利用attrs和styles定义控件​
  6. ​Android SDK: Creating Custom Views​
  7. ​Creating custom and compound Views in Android - Tutorial​
  8. ​Tutorial: Enhancing Android UI with Custom Views​
  9. ​​Android 自定义View (一)​​
  10. ​What does postInvalidate() do?​
  11. ​When it's necessary to execute invalidate() on a View?​
  12. ​​Android笔记:invalidate()和postInvalidate() 的区别及使用​​

No category

  1. ​THE DEX 64K LIMIT IS NOT A PROBLEM ANYMORE, ALMOST​
  2. ​​Android 4.4从图库选择图片,获取图片路径并裁剪​​
  3. ​​浅析android应用增量升级​​
  4. ​​Android四大基本组件介绍与生命周期​​
  5. ​​Android代码优化——使用Android lint工具​​
  6. ​Android 插件化 动态升级​
  7. ​Java String StringBuilder StringBuffer​
  8. ​​tools:context=".MainActivity的作用​​
  9. ​关于APK瘦身值得分享的一些经验​
  10. ​性能优化之数据库优化​
  11. ​How to check visibility of software keyboard in Android?​
  12. ​android 4.4.4侧滑退出显示app启动界面​​ ​
  13. ​How to get a Color from hexadecimal Color String​
  14. ​【译】Android应用架构​
  15. ​​Android静默安装实现方案,仿360手机助手秒装和智能安装功能​​
  16. ​How to convert a color integer to a hex String in Android?​
  17. ​IllegalArgumentException: width and height must be > 0 while loading Bitmap from View​
  18. ​Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication ?​