Android开发相关的博客、文章、教程
名称 | Blog地址 | 说明 |
---|---|---|
Android Developers Blog | http://android-developers.blogspot.com/ | 官方Blog |
Android Weekly | http://androidweekly.net/ | Android周刊,支持邮箱订阅,随时了解Android Dev最新前沿,每周一更新 |
Android Weekly 中文版 | http://androidweekly.cn/ | Android中文周刊,每周一更新 |
Code Path | https://github.com/codepath/android_guides/wiki | 教程通俗易懂 |
Android开发技术前线 | http://www.devtf.cn/ | 一个定期翻译、发布国内外Android优质的技术、开源库、软件架构设计、测试等文章的开源项目 |
Styling Android | https://blog.stylingandroid.com/ | 专注Android Design实现 |
Big Nerd Ranch | https://www.bignerdranch.com/blog/categories/android/ | 他们所写的培训教程非常有名 |
Square | https://corner.squareup.com/ | 良心企业 |
https://code.facebook.com/android/ | 良心企业 | |
Vogella | http://blog.vogella.com/category/android/ | Android基础教程 |
codekk | http://www.codekk.com/open-source-project-analysis | Trinea发起的Android开源项目分析 |
Yalantis | https://yalantis.com | 介绍很多酷炫动画的实现原理(Android + iOS) |
Arsenal | https://android-arsenal.com/ | Android库+工具分类网站 |
Must Have Libraries | http://guides.codepath.com/android/Must-Have-Libraries | Must Have Libraries |
名称 | Blog地址 | 说明 |
---|---|---|
Jake Wharton | http://jakewharton.com/ | Jake大神, 专心写框架,Blog比较少 |
Chris Banes | https://chris.banes.me/ | Android-PullToRefresh等开源项目作者 |
Daniel Lew | http://blog.danlew.net/ | 有干货,也有很多有趣的文章 |
The Cheese Factory | http://inthecheesefactory.com/blog | 2015年才开的博客,内容非常新 |
TechnoTalkative | http://www.technotalkative.com/ | the lazy android developers 系列作者 |
Saúl Molinero | http://saulmm.github.io/ | 个人非常喜欢的一个开发者博客 |
Cyril Mottier | http://cyrilmottier.com/ | Quora上很推崇的一个开发者,但是现在博客写的不勤了 |
Ravi Tamada | http://www.androidhive.info/ | 博文非常基础,非常详细,适合初学者 |
Alex Lockwood | http://www.androiddesignpatterns.com/ | |
http://fragmentedpodcast.com/ |
名称 | Blog地址 | 说明 |
---|---|---|
Trinea | http://www.trinea.cn/category/android/ | Trinea大神 |
liaohuqiu | http://www.liaohuqiu.net/cn/ | android-Ultra-Pull-To-Refresh作者 |
代码家 | http://blog.daimajia.com/ | AndroidSwipeLayout、AndroidViewAnimations、NumberProgressBar等开源库作者,撸库大神,不过好像不太喜欢写技术博客... |
stormzhang | http://stormzhang.com/ | 经常混迹知乎、GitHub |
郭霖 | 郭霖的专栏 | CSDN 博客之星, 《第一行代码》作者 |
- Developing for Android, I:Understanding the Mobile Context
- Developing for Android, II:The Rules: Memory
- Developing for Android, III:The Rules: Performance
- Developing for Android, IV:The Rules: Networking
- Developing for Android V:The Rules: Language and Libraries
- Developing for Android VI:The Rules: Storage
- Developing for Android VII:The Rules: Framework
- Developing for Android VIII:The Rules: User Interface
- Developing for Android IX:Tools
- Android性能优化典范
- Android性能优化之渲染篇
- Android性能优化之运算篇
- Android性能优化之内存篇
- Android性能优化之电量篇
- Android性能优化典范 - 第2季
- Android性能优化典范(三)[1-3]
- Android性能优化典范(三)[4-7]
- Android性能优化典范(三)[8-12]
- Managing Your App's Memory
- Avoiding memory leaks
- How to Leak a Context: Handlers & Inner Classes
- Activitys, Threads, & Memory Leaks
- Android Performance Case Study
- Android Performance Case Study Follow-up
- A small leak will sink a great ship
- Android内存泄露案例分析
- How to Analyze & Manage Memory on Android Like a Boss
- Displaying Bitmaps Efficiently [中文版--郭霖译]
- Android DiskLruCache完全解析,硬盘缓存的最佳方案
- Android照片墙完整版,完美结合LruCache和DiskLruCache
- Android应用性能优化之使用SparseArray替代HashMap
- PerfMatters using custom Views in Android to improve performance — Part 1
- PerfMatters introduction to custom ViewGroups - Part 2
- A journey on the Android Main Thread - PSVM
- A journey on the Android Main Thread - Lifecycle bits
- Async Android
- The Chronos library: making easier work of long operations
- Using concurrency to improve speed and performance in Android
- Performance Tips
- Speed up your app
- Why You Should Care about Your Android App's Performance
- How to Make Your Application Fluid
- Optimizing Android bytecode with Redex
- Using hardware layers to improve Android animation performance
- Tip: Use cold start time to make your app look much faster
- ListView Tips & Tricks #1: Handling Emptiness
- ListView Tips & Tricks #2: Sectioning Your ListView
- ListView Tips & Tricks #3: Create Fancy ListViews
- ListView Tips & Tricks #4: Add Several Clickable Areas
- ListView Tips & Tricks #5: Enlarged Touchable Areas
- Building a RecyclerView LayoutManager – Part 1
- Building a RecyclerView LayoutManager – Part 2
- Building a RecyclerView LayoutManager – Part 3
- Drag and Swipe with RecyclerView Part One: Basic ItemTouchHelper Example
- Drag and Swipe with RecyclerView Part Two: Handles, Grids, and Custom Animations
- Scrolling RecyclerView – Part 1
- Scrolling RecyclerView – Part 2
- RecyclerView FastScroll – Part 1
- RecyclerView FastScroll – Part 2
- Android: ListView Fastscroll and its styling
- 6 ways to make your lists scroll faster than the wind 提升ListView滚动速度
- Expand a RecyclerView in Four Steps
- Exploring the new Android Design Support Library
- More Material Design with Topeka for Android
- Codelab for Android Design Support Library used in I/O Rewind Bangkok session
- TIPS AND TRICKS FOR ANDROID MATERIAL SUPPORT LIBRARY
- TIPS AND TRICKS FOR ANDROID MATERIAL SUPPORT LIBRARY 2: ELECTRIC BOOGALOO
- Overview of the Android Design Support Library
- InstaMaterial meets Design Support Library
- How We Developed the Guillotine Menu Animation for Android
- 一步一步教你实现Periscope点赞效果
- Card Library : Customization -- 自定义Card View
- GraphView -- open source graph plotting library for Android
- Creating Custom Views -- Android官方Training
- Custom Components
- Defining Custom Views
- Android LayoutInflater原理分析,带你一步步深入了解View(一)
- Android视图绘制流程完全解析,带你一步步深入了解View(二)
- Android视图状态及重绘流程分析,带你一步步深入了解View(三)
- Android自定义View的实现方法,带你一步步深入了解View(四)
- Creating custom Android views – Part 1: Extending standard views and adding new xml attributes
- Creating custom Android views – Part 2: How padding works and how to draw your own content
- Creating custom Android views – Part 3: Animating your custom views, smoothly
- Creating custom Android views – Part 4: Measuring and how to force a view to be square
- Custom ViewGroups
- Using Custom Compound Views in Android
- Custom Drawables
- How We Developed the Guillotine Menu Animation for Android -- 如何实现铡刀菜单动画?
- Android Canvas drawText实现中文垂直居中
- Twitter's like animation in Android - alternative
- Making EditTexts with links both clickable and editable
- Creating custom Text Selection actions with ACTION_PROCESS_TEXT
- Beware EditText on API 21
- Designing Android Apps For Vision Impaired Users
- The Fabulous Goes Material
- Login experiences that don't suck
- Why would I want to fitsSystemWindows?
- android:ToolBar详解(手把手教程)
- How to hide/show Toolbar when list is scroling (part 1)
- How to hide/show Toolbar when list is scrolling (part 2)
- How to hide/show Toolbar when list is scrolling (part 3)
- Android Fragments Tutorial
- Android Fragment完全解析,关于碎片你所需知道的一切
- Probably be the best way (?) to save/restore Android Fragment’s state so far 注:作者认为该方法存在很多问题,建议阅读下篇博文
- The Real Best Practices to Save/Restore Activity's and Fragment's state. (StatedFragment is now deprecated)
- How to make onActivityResult get called on Nested Fragment
- ViewPager Without Fragments
- 让多个Fragment 切换时不重新实例化
- Fragment transitions with shared elements
- Sending objects to Fragment; Naive question: is it sent by value?!
- Android Tutorial: Content Provider Basics
- Android Tutorial: Using Content Providers
- Android Tutorial: Writing your own Content Provider
- 使用android.view.TouchDelegate扩大View的触摸点击区域
- Android EditText的使用及值得注意的地方
- Android Tips Round-Up [PART 1] [PART 2] [PART 3] [PART 4] [PART 5]
- Why You Should Use a GIT SHA in Your Crash Reporting
- Supporting multiple themes in your Android app [(Part 1)] [(Part 2)]
- A useful stack on android #1, architecture
- A useful stack on android #2, user interface
- A useful stack on android #3, compatibility
- Going multiprocess on Android
- Fast Rendering News Feed on Android
- Cool Android Apis 整理(一)
- Cool Android Apis 整理(二)
- Android快速开发系列 10个常用工具类
- Tinting drawables
- The truth about Preventative Optimizations
- Don't Interrupt the User's Flow
- Lazy Loading Dex files
- Having Trouble Focusing? A Primer on Focus in Android
- Exploring Meaningful Motion on Android
- Unleash functional power on Android (I): Kotlin lambdas
- Functional Android (II): Collection operations in Kotlin
- AO(sp)y Episode 2 - Lambdas
- 10 reasons (plus one) to try Kotlin on Android
- Kotlin: A New Hope in a Java 6 Wasteland
- Converting Plaid to Kotlin: Lessons learned (Part 1)
- Converting Plaid to Kotlin: Lessons learned (Part 2)
- Runtime Permissions: Best Practices
- Sharing files on Android in a world with runtime permissions
- Runtime Permissions, Files, and ACTION_SEND
- RxPermissions
- Intent Resolving in Android M
- Android M: What’s that “Broadcast Tile” for?
- Implementing Android Marshmallow Direct Share
- Retrofit官方文档
- Retrofit开发指南 中文翻译
- Retrofit Android Tutorial 英文原版
- Retrofit by Square
- A smart way to use Retrofit
- Implementing an Android REST Client using Retrofit
- Retrofit — Getting Started and Create an Android Client
- How To Use Retrofit Library In Your Android App
- Retrofit – Using Jackson JSON Conversion 使用Jackson解析
- Simple HTTP with Retrofit 2
- Retrofit 2 — Upgrade Guide from 1.9
- How to make HTTP calls on Android with Retrofit 2
- Picasso官方文档
- Solving the Android image loading problem: Volley vs. Picasso
- Loading images with data binding and Picasso
- Introduction to Glide, Image Loader Library for Android, recommended by Google* Glide – How Yelp’s Android App Loads Images
- Glide 一个专注于平滑滚动的图片加载和缓存库
- Realm Java 0.80.3 -- Realm英文文档(Java)
- Realm中文文档
- Why I Don't Use Realm Anymore
- The introduction to Reactive Programming you've been missing -- 什么是响应式编程(Reactive Programming)
- What is Functional Reactive Programming?
- Top 7 Tips for RxJava on Android
- ReactiveX Tutorial
- When Iron Man becomes reactive, RxJava
- Introduction to RxJava for Android
- Grokking RxJava
- Loading data from multiple sources with RxJava
- Don't break the chain: use RxJava's compose() operator
- Replace AsyncTask and AsyncTaskLoader with rx.Observable – RxJava Android Patterns
- RxJava Observable tranformation: concatMap() vs flatMap()
- Learning RxJava (for Android) by example -- YouTube视频教程
- RxJava Code Review Part 1
- A Note About the Warmth of the Share and Replay Operators
- 给 Android 开发者的 RxJava 详解
- How to upgrade to RxAndroid 1.0
- Unit Testing RxJava Observables and Subscriptions
- Functional Reactive Programming in Java
- Why use Observable.create() and not just inherit from Observable?
- Advanced RxJava ConnectableObservables (part 1)
- Getting Started with RxJava and Android
- Debugging RxJava on Android
- RxJava’s Side Effect Methods
- Improving UX with RxJava
- RxJava Operators - toList()
- The new Completable API (part 1)
- How to think about Subjects in RxJava (Part 1)
- Rx glitches aren't actually a problem
- Crunching RxAndroid — Part 5
- Subscribe It While It's Hot: Cached Rest Requests With RxJava
- Robolectric Installation for Unit Testing
- 用Robolectric来做Android unit testing
- Everybody Tests: Boom! Screenshot!
- All in Together: Android Studio, Gradle and Robolectric
- Triumph! Android Studio 1.2 Sneaks In Full Testing Support
- Parameterized testing with Robolectric
- Android Tools Project Site -- Unit testing support
- Reliable API testing for Android with Retrofit and Mockito
- Activity测试
- Tutorial: Sustainable Android Tests with Page Objects
- Sharing code between unit tests and instrumentation tests on Android
- World-Class Testing Development Pipeline for Android - Part 1.
- World-Class Testing Development Pipeline for Android - Part 2.
- Leveraging product flavors in Android Studio for hermetic testing
- How to mock dependencies in Unit, Integration and Functional tests; Dagger, Robolectric and Instrumentation
- Test before integrate
- Testing Tricks #2: Finding UI Views
- Handling Android runtime permissions in UI tests
- Metronome: A Fully Unit-Tested Rx-Based Reference Application
- Using Espresso for Easy UI Testing
- Testing Intents With Espresso Intents
- Espresso: Save and restore state
- Testing a sorted list with Espresso
- Mock Application in Espresso for Dependency Injection
- Reliable functional tests with Espresso and Dagger
- THINGS YOU MAY NOT KNOW: TOOLS ATTRIBUTES -- XML:
tools
属性 - Tools Attributes
- Tools of the trade — Part 1
- Tools of the trade — Part 2
- Designtime Layout Attributes
- ANNOTATION PROCESSING 101 -- Annotation 注解
- A Look At Android Support Annotations
- Parcelable vs Serializable
- How to debug HTTP(S) traffic on Android
- Android: Requesting root access in your app
- TextView预渲染研究
- Wutson: Exploring Design And Development Workflows
- Android视频录制app解决方案汇总
- Annotations to support your contracts
- MVP for Android: how to organize the presentation layer
- TED MOSBY - SOFTWARE ARCHITECT
- STINSON'S PLAYBOOK FOR MOSBY
- Introduction to Model-View-Presenter on Android
- 一种在android中实现MVP模式的新思路 [英文原版]
- Architecting Android…The clean way?
- Architecting Android…The evolution
- MVPR: A FLEXIBLE, TESTABLE ARCHITECTURE FOR ANDROID (PT. 1)
- Android Databinding: Goodbye Presenter, hello ViewModel! [中文版]
- Flux Architecture on Android [中文版]
- Approaching Android with MVVM
- Android Basic Project Architecture for MVP
- archi Repository that showcases 3 Android app architectures: "Standard Android", MVP and MVVM. The exact same app is built 3 times following the different patterns.
- EffectiveAndroid This sample project shows how to apply MVP and Clean architecture on an Android app
- Android Basic Project Architecture for MVP
- A reactive MVP approach to the Plaid app (PART 1)
- A reactive MVP approach to the Plaid app (PART 2)
- Android Application Architecture
- 推荐几个非常有用的工具
- 搜索最好的 Android 代码——Android开发工具之Codota
- Android Studio Live Templates
- Level-up with Android Studio Shortcuts and Live Templates -- AS快捷键
- How to distribute your own Android library through jCenter and Maven Central from Android Studio [中文版] -- 如何使用Android Studio把自己的Android library分享到jCenter和Maven Central
- IDEA Colors & Fonts -- 丰富的AS主题
- Android Studio Tips & Tricks: Moving Around -- 掌握这些操作能节省很多时间
- Android Studio Tips Of the Day
- The Top 8 Plugins for Android Studio
- Squeezing your Gradle builds
- Android Studio使用技巧系列教程
- 使用Android lint发现并解决高版本API问题
- A private Maven repository for Android in 30 min Artifactory
- Android项目中如何用好构建神器Gradle?
- Gradle tip #1: tasks
- Gradle tip #2: understanding syntax
- Android Studio系列教程四--Gradle基础
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- Android Studio系列教程六--Gradle多渠道打包
- Android Studio - MAC 版 - 快捷键详解
- Publish with Gradle on Bitbucket
- Vysor--Chrome的一个插件,可以做到在电脑上操作Android手机,增强生产力的神器
- Don't use dynamic versions for your dependencies
- Android Development Tidbits // No. 1
- LayerVisualizer
- RxMarbles
- Getting Started: Configuring Mac for Android
- Android Feature Graphic Generator
- Optimizing Android bytecode with Redex
- screenshot-tests-for-android
- Dexcount Gradle Plugin
- Circle CI
- Continuous Integration on Android: Why we ditched Jenkins for Circle CI
- Android Build Speed Up. ver English
- How to have debug, beta and prod builds installed at the same time
- How to Analyze & Manage Memory on Android Like a Boss
- Create Useful .proguard Files For Your Project
- Gradle tips & tricks to survive the zombie apocalypse
- Efficiency and fun from using ADB Shell, Part 1
- Inspecting your multidex APK
- Android Studio Tips and Tricks
- Android学习之路--stormzhang
- Top 10 Most Common Android Development Mistakes: A Programming Tutorial
- Android开源库 -- 代码家
- How to improve quality and syntax of your Android code
- Be a lazy but a productive android developer
- 6 THINGS I WISH I KNEW BEFORE I WROTE MY FIRST ANDROID APP
- Should This Be a Library?
- 谈谈App混合开发
- Develop Maintainable Apps
- 微信ANDROID客户端-会话速度提升70%的背后
- Modeling my Android domain layer
- Stuff I Learned at Droidcon NYC
- Things I did at Droidcon London
- Top resources to learn Android
- Android Development Culture. The Document. #qualitymatters
- See the Truth on Android
- Taking Command of Android Development
- Difference between px, dp, dip and sp in Android?
- Formula px to dp, dp to px android
- Close/hide the Android Soft Keyboard
- Saving Activity state in Android
- Get screen dimensions in pixels
- Android - basic gesture detection [Best Answer]
- setEmptyView on ListView not showing its view in a android app
- IPackageStatsObserver cannot be resolved to a type (Android)
- Calling startActivity() from outside of an Activity context
- Using DiskLruCache in android 4.0 does not provide for openCache method
- Same-named attributes in attrs.xml for custom view
- How do I find out if the GPS of an Android device is enabled?
- Renaming modules in Android Studio?
- RecyclerView onItemClick