首先贴一个参考过的文章,写的不错: 在低版本android系统上实现Material design应用
下面是工作中总结出来的,列出了在<5.0的设备是如何实现material design的一些常见样式的
- 大元素
- 其他还有什么明显的大元素【待补充】
- 下拉刷新【可以实现,类似Gmail下拉刷新的样式】
- SwipeRefreshLayoutDemo 【google官方出的下来刷新,这里是一个例子】
- android-Ultra-Pull-To-Refresh
- Action Bar 【可以实现】
- Google自己的support v7 r21提供的类即可,主要是Theme.AppCompat
- Floating action button 【可以实现】
- 开源项目 futuresimple/android-floating-action-button 比较合适,唯一的缺点就是值支持API 14以上的系统版本
- Scrolling techniques (滚动)【可以实现】
- 开源项目 NotBoringActionBar
- Navigation drawer (导航抽屉)【可以实现】
- Google自己的support v7 r21提供的类(具体可见Support v7最新版demo里边的AppCompat→Action Bar→Navigation Drawer Toggle)
- 开源项目 kanytu/android-material-drawer-template 有Gmail样式的Navigation Drawer(展开时盖住ActionBar)
- Navigational transitions (导航转换)【可能可以,但是还没有找】
- 分2种:Parent to child, Sibling to sibling
- Tabs (导航标签)【可以实现,但是没有找】
- Bottom sheets (底部窗口)【应该可以,但是还没有找】
- 其他小元素
- 其他还有什么明显的小元素【待补充】
- Ripple Effects【可以实现】
- RippleEffect 开源项目效果最好
- SnackBar【可以实现】
- ColorSelector【可以实现】
- 开源项目MaterialDesignLibrary 里边有这个控件
- Typography 【可以实现,建议先不用】
- 其实是2种字体:Robot – Latin, Greek, and Cyrillic scripts ;Noto – all other languages
- Color (大色块) 【可以实现】
- 与开发相关的是颜色的使用,Support v7 r21里边只是定义了一个material_blue系列的颜色,并没有将20种色系全部定义到project中。实际开发当中,开发只需要按照google的示例自己定义颜色就可以了
- Layout: Metrics and Keylines (边距/间距方面的规定) 【可以实现】
- 主要针对设计,实现没有问题
- Tooltips(工具提示) 【可以实现】
- 对于触屏来说,就是长按一个图形按钮(无文字)会出现一个tooltip
- ActionBar已经实现了这种机制 ,这也是我强烈建议使用Google的ActionBar,而不要自己画一个看着像ActionBar的ActionBar
- Text fields (文本输入) 【部分实现】
- Support v7 r21提供的Theme.AppCompat主题已经涵盖了EditText控件,但是至于文字数与颜色变化等小特性我估计是没有的(没有调试),这个待以后补充
- Buttons 【可以实现,具体待调试】
- 这里边有4类buttons: Floating action button, Raised button, Flat button, Pulldown button
- Floating action button见上方,
- Raised button再找下开源项目,本质上是加了一个边缘的阴影
- Flat button主要用于对话框的确定/取消按钮,这个在相关对话框开源项目里边已经有了(目前没有见到单独用的)
- Pulldown button,看截图感觉和之前的Spinner的下来列表是一样的
- Switches【可以实现,具体待调试】
- 这里边有3类:Checkbox, Radio button, Switch
- Support v7 r21里边Theme.AppCompat里边已经涵盖了上面3种控件的样式,不过颜色只有Light/Drak两种
- 开源的第三方项目里边也有比较灵活的上述控件(自己重新写的),即可以很方便的更改颜色