Android Material Design 踩坑记(1)

最近随大流学着使用Material Design元素重新设计App,尝试着使用v4,v7,design库中的新组件,AppBarLayout,Toolbar,Nest系列,CoordinatorLayout.Behavior等等。

以前一直使用基础的组件来自己封装或者使用开源框架来实现一些目前很流行的页面效果,改造起来还是有点麻烦,使用新的Material控件之后真是柳暗花明又一村,用户体验蹭蹭上几个档次,但是但是.....新东西上手总是要踩坑的....


  • AppBarLayout + ToolBar

ToolBar需要AppBarLayout包括才能显示出来!
如果在API19以上想使用沉浸式状态栏,请从最外层根视图加上

android:fitsSystemWindows="true"
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:fitsSystemWindows="true">
    <android.support.design.widget.AppBarLayout
        android:fitsSystemWindows="true">
        <android.support.v7.widget.Toolbar
            android:fitsSystemWindows="true" />
    </android.support.design.widget.AppBarLayout>
    <!--  .... others  -->
</android.support.design.widget.CoordinatorLayout>

在对应的Activity或者Fragment中将ActionBar替换为ToolBar

setSupportActionBar(toolbar)

Fragment中想使用menu,需要在Fragment中增加

setHasOptionsMenu(true)
  • 主题Theme
    <style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <!-- Window 背景设置为Toolbar颜色,避免切换动画时状态栏闪烁 -->
        <item name="android:windowBackground">@color/app_theme</item>
        <!-- Toolbar 背景颜色 -->
        <item name="colorPrimary">@color/app_theme</item>
        <item name="colorPrimaryDark">@color/app_theme</item>
        <!-- Toolbar 文字颜色(标题) -->
        <item name="titleTextColor">@android:color/white</item>
        <!-- Toolbar 按钮颜色(返回键) -->
        <item name="colorControlNormal">@android:color/white</item>
        <!-- Toolbar 菜单文字颜色 -->
        <item name="actionMenuTextColor">@android:color/white</item>
    </style>

以上是使用ToolBar的通用配置,针对API19开始状态栏透明,API21 SharedElementTransition场景过度动画,经过不断的尝试得出以下效果还不错的设置
values-v19.xml

    <style name="AppThemeCompact" parent="AppTheme">
        <!-- 透明状态栏 -->
        <item name="android:windowTranslucentStatus">true</item>
    </style>

values-v21.xml

    <style name="AppThemeCompact" parent="AppTheme">
        <!-- 透明状态栏 -->
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <!-- window transition -->
        <!-- 切换动画播放顺序 -->
        <item name="android:windowAllowEnterTransitionOverlap">true</item>
        <item name="android:windowAllowReturnTransitionOverlap">true</item>
        <!--<item name="android:windowEnterTransition">@transition/window</item>-->
        <!--<item name="android:windowExitTransition">@transition/window</item>-->
        <!--<item name="android:windowReturnTransition">@transition/window</item>-->
        <item name="android:windowSharedElementEnterTransition">@transition/window_shared</item>
        <item name="android:windowSharedElementExitTransition">@transition/window_shared</item>
        <item name="android:windowSharedElementReturnTransition">@transition/window_shared</item>
    </style>

Android Material Design 踩坑记(2)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,831评论 25 709
  • MaterialDesign是一套全新的界面设计语言,包含视觉,运动,互动效果等特性. Design Suppor...
    小徐andorid阅读 1,038评论 0 9
  • 草青葱,林翳荟。 万紫千红,千里含烟翠。 峭峻青山拥绿水。 诵翠吟青,满面春风...
    欣荣Y阅读 731评论 7 20
  • 壹五点半,刚好完成手上的工作。真好,今天不用加班。踩着高兴的步调,盘算着晚上吃什么?家里有土豆,番茄,可以炒土豆片...
    一本正经地写阅读 598评论 0 2
  • 【0818今日剽悍】 一周时间被逼得写了1篇报告加6篇信息,在这个过程中,因为有在小灶群的历练,下笔的时候没有太过...
    好听的暖阳阅读 151评论 2 1