转载:http://www.jianshu.com/p/e4f80f3252ea
作为一个程序员,应该养成持续学习的能力,随时关注新技术,有时候做起事来会让你事半功倍的效果。之前在知乎上看到下面这个问题,觉得很受用,所有就总结了大牛们的回答,也跟着大牛们的脚步,看看有哪些新技术,也跟着学习学习,涨涨见识。
本文参考@Android 笔记在知乎的回答:
Android 开发有哪些新技术出现?
https://www.zhihu.com/question/32037895
Android Studio
Android Studio 是Google 官方推出的全新的Android 开发的IDE,自2013 年发布,目前最新稳定版是1.5。
目前Google 官方放弃 Eclipse 的支持,加上Android Studio 普及。AS 虽然不算新,但是对 Android Studio 这个软件的更新速度快的惊人,有大量的新功能发布。
例如支持很多注解代码提示注解、Live Code Template、支持自动生成 Parcelable 实现等等,作为开发者,持续关注这个更新列表:tools.android.com/recent,一定会让你的写代码的生活更加美好。
而且Android 1.0 之后大量的新特性,让我们的开发更便捷,比如Vector Asset,Theme Editor,Gradle 编译速度大幅提升,Android Studio 2.0 的Install Run 实现的实时运行功能。
Material Design 设计
Android 4.0 的Android Design 留下了诟病,也让Google 下定了决心,在5.0 推出了Material Design 全平台设计语言。它对于每一个点击,每一次滑动都有设计规范。对于设计师和程序员都是值得一看的。
Material Design 设计规范:https://design.google.com/
Design 设计支持库
如果说Material Design 是设计师看的(其实程序员也应该看)。那么的Design 设计支持库,也使得Material Design 设计在Android 中也慢慢实现了。也让没有设计感的程序员也可以制作出惊艳的App。比如Navigation View(侧滑栏),Floating Action Button(悬浮按钮),Snackbar,TabLayout,CoordinatorLayout,App Bar,nestedscrollview。
http://android-developers.blogspot.com/2015/05/android-design-support-library.html
Sketch 3
这是一个专为设计移动端 UI 的设计工具,作为开发者,不用懂那么复杂的 PS 使用,也可以做非常专业设计:https://designcode.io/sketch
RecyclerView
RecyclerView的几大特性:
ViewHolder 模式:在ListView 中需要手动添加ViewHolder 模式,而且不会重用之前的View,RecyclerView默认实现了重用,让绘制View 更加高效。
LayoutManager:设置布局,就可以实现单列表,GridView,瀑布流的效果。
Item Decoration:自定义各种分割线
Item Animator:设置各种炫酷增删动画
RecyclerView 对于不同类型可以很容易添加。现在很多App 的首页很复杂的内容,样式不一样,使用RecyclerView 很容易解决,还有底部加载更多也很容易实现。
Kotlin
作为 Android 领域的 Swift,绝对让你如沐新风。抛弃沉重的 Java 语法,Kotlin 融入了很多现代编程语言的思想,作为开发者,接受新的语言,了解新语言的发展趋势,更有利于开阔你的思路和加深对语言的理解。在 Android 开发上,使用 Kotlin 并不会让你付出什么代价,为什么不来试试?
Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络、本地存储和本地资源中加载图片。其中的Drawees可以显示占位符,直到图片加载完成。而当图片从屏幕上消失时,会自动释放内存。
React Native
React Native 结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生应用。在 JavaScript 中用 React 抽象操作系统原生的 UI 组件,代替 DOM 元素来渲染等。
跨平台一直是程序员的梦想,而且移动应用的跨平台解决方案也很多,因为 Facebook 的参与和力推,让这个解决方案带上了光环。第一个用 React Native 开发的 App 已经在 Google Play 上架Facebook 广告管理工具,目前iOS 和Android 版本都已发布,最新版为0.5。
Dagger 2
Dagger 2 是Google 主导开发的依赖注入框架,它是基于Dagger 1(由Square 主导开发),利用生成和写的代码混合达到看似所有的产生和提供依赖的代码都是手写的样子,极大减少了使用者的编码负担,也更便于调试,Google 声称提高了13 % 的性能,。
MVP
我们都知道MVC 模式,MVP 就是基于MVC 的模式上的一个演化版本。在MVC模式中,Activity应该是属于View这一层。而实质上,它既承担了View,同时也包含一些Controller的东西在里面。随着项目的迭代更新,这对开发很不友好,耦合度也原来越高,项目越来越难维护,而MVP 就是解决这样的痛点。把Activity的View和Controller抽离出来就变成了View和Presenter。
DataBindingMVVM
DataBinding 即数据绑定,在前端的框架有很广泛的使用,比如像AngularJS,就支持双向绑定。
所谓MVVM,像Activity,Fragment,View 都属于View 这一层;Model层主要负责数据相关部分,可以从数据库或者网络获取;ViewModel主要是把Model转换为View 可以呈现的东西,例如把一个Date 类型转化为格式化后的String,也就是将前面两者联系在一起的对象,
在Data Binding 支持下,会根据layout 文件名自动生成一个相对应的Binding(比如activity_main,对应生成MainActivityDataBinding 对象),数据绑定在Layout文件中XML标注。
在Google I/O 2015上,伴随着Android M预览版发布的Data Binding 兼容函数库改变了这一切。而在Android Studio 2.5 的预览版,Data Binding 在XML 中也终于有了代码提示功能。
RxJava/RxAndroid
RxJava一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。用简单的一个词来介绍就是“异步”。
它提供了基于Observable(观察者) 序列实现的异步调用及基于事件编程。
它扩展了观察者模式,支持数据、事件序列并允许你合并序列,无需关心底层的线程处理、同步、线程安全、并发数据结构和非阻塞I/O处理。
它支持Java5 及更高版本,并支持其他一些基于JVM的语言,如Groovy、Clojure和Scala。而且他能和Retrofit 更好的结合使用,也有相对应的RxBus 等框架结合。
Espresso 2.0
近些年,随着Android社区的成熟,出现了诸如Robotium,Robolectric等的优秀测试框架。而Google也在近期推出了自己的UI测试框架Espresso。
Espresso 是一个提供了简单 API 的用于 Android App UI 测试的测试框架。最新的 2.0 版本发布后已经可以在 Android Support Repository 中下载了,那么在项目中集成它就方便多了。它的API 很小,对外扩张开放,测试跑起来那是相当的快,对Gradle 和Android Studio 支持。
Baas
Baas 又称mBaas,全称叫Backend as a Service(后端作为一种服务), 怎么说呢,为移动应用开发者提供后端服务;作为一个移动应用开发者(Android & iPhone),除了开发应用程序,还要做后台的服务器端,当然,大多移动应用开发者并非都懂后端开发, 这让一个应用应用开发者开发一款应用不容易,然而有了Baas,开发者就可以不用管后端开发了,Baas 提供商,提供了我们最常用的功能,比如数据存储,应用分析,IM 等功能,让开发者把主要精力放在应用本身,大大提高了效率。
当然也不一定是移动应用开发者,当然也可以Web 开发,当初Baas 主要是为了解决移动应用开发者的后端服务问题,Baas 也提供其他的服务;国外类似Parse,Firebase,国内像LeanCloud 都是提供这样的服务。
App Indexing
我们都知道网页是一个一个超链接相连的,然而在移动互联网时代,每个App 里的数据就想信息孤岛,App Indexing 就是要打破这样的尴尬,只要你在App 实现App Indexing 功能,你的App 里的数据,就会出现在Google 的搜索结果中,尤其是出海的App,这个功能尤其重要,据说Google 打算实现在网页中直接安装App。
参考
android - what are recycler view advantages compared to listview - Stack Overflow