美文网首页
UI:Android 5.0&6.0 控件

UI:Android 5.0&6.0 控件

作者: 蜂鸟之歌 | 来源:发表于2016-12-03 10:55 被阅读86次

    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相关文章
    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

    DrawerLayout

    6. DrawerLayout 与 home toggle的联动

    • 使用ActionBar:
    DrawerLayout 绑定 ActionBar
    • 使用ToolBar:

      DrawerLayout 绑定ToolBar
    • 注意:如果和ToolBar结合使用,如果不修改home toggle的点击事件,默认会控制左侧边栏的滑动事件。

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

    • 实现方法:

      • 让TextView可被选中
        android:textIsSelectable="true"
      • 给TextView添加callback
        tv.setCustomSelectionActionModeCallback(callback)
      • 实现callback
      callback

    8. TextInputLayout

    TextInputLayout
    • 实现方法:
    TextInputLayout
    • 添加错误提醒:
    TextInputLayout

    9. FloatingActionButton(FAB)

    • 使用方法:
      与ImageView类似
    <android.support.design.widget.FloatingActionButton 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:layout_gravity="end|bottom"
          //解决5.X阴影不正常显示
          app:borderWidth="0dp" 
          android:layout_margin="@dimen/margin" 
          android:src="@drawable/ic" />
    

    10. SnackBar

    • 使用方法:
      用法和Toast差不多,当用在CoordinatorLayout中时,与FAB一起使用,能实现同上同下的效果,FAB不会被覆盖
    SnackBar

    11. TabLayout

    • 使用方法:
      TabLayout结合ViewPager一起使用,起到指示器的作用,跟三方的ViewPagerIndicator作用一样
    TabLayout

    12. NavigationView

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

    13. AppBarLayout

    • 介绍:
      继承自LinearLayout,内部可以包含子控件,并且会自动给子控件添加与ActionBar同背景颜色的背景色(primaryColor配置的颜色) ,可以作为一个整体替换ActionBar所在的区域,制造更多样的ActionBar
    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 控件

          本文链接:https://www.haomeiwen.com/subject/wmvfmttx.html