UI:Android 5.0&6.0 控件

1. SwipeRefreshLayout

  • 注意:该控件属于support-v4包,早期版本就已经存在。
  • 使用方法:
    包裹一个可以上下滚动的View(比如ScrollView、ListView、RecyclerView),即可实现下拉刷新。
  • 主要方法:
  • setRefreshListener -- 添加下拉刷新监听
  • setRefreshing(boolean) -- 设置圆圈显示与隐藏
  • isRefreshing -- 判断当前是否正在刷新
  • setColorSchemeResource -- 设置转圈的多种颜色变化(color的资源id)
  • setColorSchemeColors -- 设置转圈的多种颜色变化(color颜色值)
  • setProgressBackgroundColor -- 设置圆圈的背景色

2. CardView

  • 使用方法:
    自带阴影(z轴海拔)的控件,该View继承自FrameLayout,直接作为父布局包裹子控件。
  • 注意:如果父控件和CardView之间没有空隙,阴影可能无法显示,原因见Material Design相关文章
UI:Android 5.0&6.0 控件_第1张图片
SwipeRefreshLayout和CardView

3. RecyclerView

  • 介绍:
    可以实现列表、多列列表、瀑布流的效果,用来替代ListView、GridView,并且实现了NestedScrollingChild接口,其事件可以被CoordinatorLayout捕获。
  • 使用方法:
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
//GridLayoutManager layoutManager = new GridLayoutManager(this,3);
//StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, LinearLayoutManager.VERTICAL);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(new MyAdapter(this));

MyAdapter需要继承RecyclerView.Adapter<自定义的ListHolder继承RecyclerView.ViewHolder>,如果需要Item点击事件,需要自己添加并提供回调接口。

4. ToolBar

  • 介绍:
    利用support-v7的方式向下兼容,用来替代传统的ActionBar,相比传统的ActionBar,ToolBar的自由度更高,他是ViewGroup的子类,可以作为一个控件,放在界面的任何位置。
  • 使用方法:
  • 将界面原有的ActionBar去掉:
    1. 通过配置NoTitle的主题

supportRequestWindowFeature(Window.FEATURE_NO_TITLE),需在setContentView之前。

  • 设置ToolBar:setSupportActionBar(toolbar)
  • 主要方法:
// 设置LOGO
mToolBar.setLogo(R.drawable.ic_launcher);
// 设置导航按钮图片
mToolBar.setNavigationIcon(R.drawable.head_1);
// 设置主标题(不设置就显示APP的名称)
mToolBar.setTitle("主标题");
// 设置次级标题
mToolBar.setSubtitle("副标题");
// 设置主标题的颜色
mToolBar.setTitleTextColor(Color.RED);
// 设置次级标题的颜色
mToolBar.setSubtitleTextColor(Color.GREEN);

5. DrawerLayout

UI:Android 5.0&6.0 控件_第2张图片
DrawerLayout

6. DrawerLayout 与 home toggle的联动

  • 使用ActionBar:
UI:Android 5.0&6.0 控件_第3张图片
DrawerLayout 绑定 ActionBar
  • 使用ToolBar:

    UI:Android 5.0&6.0 控件_第4张图片
    DrawerLayout 绑定ToolBar
  • 注意:如果和ToolBar结合使用,如果不修改home toggle的点击事件,默认会控制左侧边栏的滑动事件。

7. 自定义文本选择(TextSelection)菜单

  • 实现方法:

    • 让TextView可被选中
      android:textIsSelectable="true"
    • 给TextView添加callback
      tv.setCustomSelectionActionModeCallback(callback)
    • 实现callback
    UI:Android 5.0&6.0 控件_第5张图片
    callback

8. TextInputLayout

UI:Android 5.0&6.0 控件_第6张图片
TextInputLayout
  • 实现方法:
UI:Android 5.0&6.0 控件_第7张图片
TextInputLayout
  • 添加错误提醒:
UI:Android 5.0&6.0 控件_第8张图片
TextInputLayout

9. FloatingActionButton(FAB)

  • 使用方法:
    与ImageView类似

10. SnackBar

  • 使用方法:
    用法和Toast差不多,当用在CoordinatorLayout中时,与FAB一起使用,能实现同上同下的效果,FAB不会被覆盖
UI:Android 5.0&6.0 控件_第9张图片
SnackBar

11. TabLayout

  • 使用方法:
    TabLayout结合ViewPager一起使用,起到指示器的作用,跟三方的ViewPagerIndicator作用一样
UI:Android 5.0&6.0 控件_第10张图片
TabLayout

12. NavigationView

  • 使用方法:
    放在DrawerLayout中,作为菜单的部分
UI:Android 5.0&6.0 控件_第11张图片
UI:Android 5.0&6.0 控件_第12张图片
NavigationView
  • 注意:
    fitsSystemWindows = “true”这个属性,在做沉浸式状态栏时,必须配置,非常重要,沉浸式状态栏的要点:
  1. 状态栏设置为背景透明 (只在4.4以上的系统设备生效)
  2. fitsSystemWindows = “true”的意义在于让配置该属性的控件侵入状态栏的同时,设置跟状态栏等高度的padding值,从而不让控件中的内容发生偏移

13. AppBarLayout

  • 介绍:
    继承自LinearLayout,内部可以包含子控件,并且会自动给子控件添加与ActionBar同背景颜色的背景色(primaryColor配置的颜色) ,可以作为一个整体替换ActionBar所在的区域,制造更多样的ActionBar
UI:Android 5.0&6.0 控件_第13张图片
AppBarLayout

14. CoordinatorLayout

  • 介绍
    协调内部子控件间的滚动事件,通常作为最外层的布局使用,通过配置CoordinatorLayout.Behavior这个行为属性,可以控制其内部子控件间的联动效果,AppBarLayout和FloatingActionButton具有默认的Behavior实现
  • 注意:
  • CoordinatorLayout只可以捕获到实现了NestedScrollingChild接口的子view的滚动事件,然后分发给其他内部子view
    • RecyclerView
    • NestedScrollView -- 和ScrollView一样效果,可以被捕获事件
    • SwipeRefreshLayout
  • AppBarLayout中的子view是否响应滚动事件,通过给子view配置app:layout_scrollFlags属性来指定不同的滚动事件响应
    • scroll(常用) 响应滚动事件,必须配置这个属性
    • enterAlways(常用) 滚动事件向下,配置该属性的子view就会向下滚动进入,AppBarLayout中的子view需要滚动的,必须放在最顶部,否则滚不动
    • enterAlwaysCollapsed 滚动事件向下,子view也配置了最小高度,那么向下滚动时,子view会以最小高度进入,只有当被监听的view滚动到顶端时,子view才会以最大高度展开
    • snap 该属性会判断子view底部能看到多少,如果只能看到25%,那么缩回去,如果能看到75%,那么完全显示
    • exitUntilCollapsed 子view滚出屏幕时,待其完全折叠之后才滚动,常用在CollapsingToolbarLayout中

15. NestedScrollView

  • 介绍:
    实现了NestedScrollingChild接口,所以他的滚动事件可以被CoordinatorLayout协调,用来代替ScrollView。

16. CollapsingToolbarLayout

  • 介绍:
    折叠视图效果,注意,其并没有完全折叠,所以配置exitUntilCollapsed属性后,其不会完全滚出屏幕,而会在屏幕中保留一个ActionBar的高度。继承自FrameLayout,内部子控件可以配置layout_collapseMode属性,展示不同的效果
  • none
  • parallax 视差模式
  • pin 固定不动

你可能感兴趣的:(UI:Android 5.0&6.0 控件)