1. 了解Material Design
- 概念:融合卡片式,立体式,拟物化的设计风格,强调层次感,动画,阴影等元素
- Android UI样式风格发展:2.3版本(黄色丑陋版)->4.0(Hole)->5.0(MaterialDesign)
- 国内翻译介绍:查看 http://design.1sters.com
- 官网介绍:http://developer.android.com/training/material
- 演示Android5.0 Demo
2. 动态替换Theme
- MaterialTheme配色方案:http://www.materialpalette.com
- 动态替换Theme的步骤:
- 定义至少2套theme
- 在xml布局中给控件指定颜色时要使用占位符的方式,比如:
android:textColor="?android:colorAccent"
- 调用setTheme方法设置当前的theme,但是该方法要在setContentView之前,如:
setTheme(mTheme); setContentView(R.layout.activity_main);
- 设置了Theme,需要finish当前Activity,然后重启当前Activity,让Theme生效
Intent intent = getActivity().getIntent(); getActivity().finish();//结束当前的Activity getActivity().overridePendingTransition(0,0);//不要动画 startActivity(intent);
3. View的高度与阴影,轮廓
- 官网介绍:https://developer.android.com/intl/zh-tw/training/material/shadows-clipping.html
- View增加了高度的概念,高度大的View会覆盖在高度小的View之上,并带有阴影效果:
- View高度有2个因素组成:
View高度 = elevation + translationZ
- elevation表示view的高度,高度越大,阴影越大,可以在xml中直接使用属性, 也可以在代码中使用view.setEvelvation();
android:elevation="10dp"
- transtionZ属性表示view在Z方向移动的距离,一般用于属性动画中,translationZ也会影响View的高度,但是对阴影没有效,同时增加了改变translationZ的属性动画;
android:translationZ="10dp"
- View高度有2个因素组成:
4. View的轮廓与裁剪(在Android5.1以及以上才有效果)
- 官网介绍:https://developer.android.com/intl/zh-tw/training/material/shadows-clipping.html
- View增加了轮廓概念,轮廓会影响阴影的效果和裁剪的形状
- View的轮廓默认是依据于background的,有其他3个取值:bounds,none,paddingBounds,可以通过outlineProvider属性更改:
android:outlineProvider="bounds"
- 可以通过setOutlineProvider()方法自定义轮廓:
tv_blue.setOutlineProvider(new ViewOutlineProvider() { @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public void getOutline(View view, Outline outline) { outline.setOval(0,0, view.getWidth(),view.getHeight()); } });
- View的轮廓默认是依据于background的,有其他3个取值:bounds,none,paddingBounds,可以通过outlineProvider属性更改:
- View的裁剪是指将View按照轮廓裁剪