Piasy · 更新于 2018-11-28 11:00:42

Material Design

Ripples

<?xml version="1.0" encoding="utf-8"?>
<ripple 
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:color="?android:colorControlHighlight" />
  • 实现点击态、正常态的视觉切换(反馈)
    • 使用多个drwable,通过selector实现;
    • 通过新的ripple api实现点击反馈;
  • 动画可能超出parent layout的范围;
  • 可以通过为ripple加一个item来限制动画的范围;
  • 在ripple中使用theme的元素定义color,可以保证整个app中view颜色的一致性;
  • android:colorPrimary(AppCompat中使用colorPrimary)定义ActionBar的颜色;
  • android:colorPrimaryDark(AppCompat中使用colorPrimaryDark)定义状态栏的颜色(5.0之前无效);
  • 直接Activity会导致ActionBar不显示,应继承自AppCompatActivity(或ActionBarActivity,已弃用);

AppCompat

  • 在5.0之前使用Material Design的兼容库;
  • AppCompat不包括ripple,因为ripple使用了5.0引入的render thread去进行渲染;

TextAppearance

  • android.R.style.TextAppearance.Material.*(AppCompat使用R.style.TextAppearance.AppCompat.*);

CardView

  • 支持圆角、阴影的卡片式View,继承自FrameLayout
  • 在5.0以前,通过为CardView设置额外的padding来绘制阴影;因此,如果想要去掉阴影区域额外的padding,目前只能通过将contentPaddingXXXX属性设为负值来实现;

RecyclerView

  • ListView默认有selector overlay,点击有视觉效果;RecyclerView需要使用RecyclerView.ItemDecoration手动实现(ItemDecoration还可以做更多事情,例如divider等);

RecyclerView的item支持拖拽

Activity切换动画

  • ActivityOptionsCompat.makeSceneTransitionAnimationActivityCompat.finishAfterTransition