底部动作条(BottomSheet)是一个从屏幕底部边缘向上滑出的一个面板,给用户呈现一组功能选项。底部动作条封装了一组简单、清晰、无需额外说明的操作。底部动作条(如下图)可以是列表样式的,也可以是宫格样式的。

          

  根据Material Design设计规范,如果只有两个或更少的操作,可以考虑菜单或者对话框来实现。但是当有三个或三个以上的操作需要提供给用户选择时,底部动作条就有了用武之地,可以作为对话框和菜单的替代产品应用到实际的开发实践中。

  笔者通过继承Dialog类实现了一个简单版本、列表样式的底部动作条,下面介绍具体的使用方法。

  安装方法 

  在Android Studio中,以导入Module的方式添加BottomSheet依赖(jCenter Remote Library Dependency等待更新...)。

  基本用法

 BottomSheet bottomSheet = new BottomSheet(this);
bottomSheet.setTitle("Bottom Sheet");
bottomSheet.addItem(R.mipmap.quiz_bottom_download, "下载", new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    makeToast("下载!");
    bottomSheet.dismiss();
   }
});
bottomSheet.addItem(R.mipmap.quiz_bottom_favorite, "喜欢", new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    makeToast("喜欢!");
    bottomSheet.dismiss();
  }
});
bottomSheet.addItem(R.mipmap.quiz_bottom_answer, "答案", new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    makeToast("答案!");
    bottomSheet.dismiss();
  }
});
bottomSheet.addItem(R.mipmap.quiz_bottom_share, "分享", new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    makeToast("分享!");
    bottomSheet.dismiss();
  }
});
bottomSheet.show();

  设计思想

  关键是对setContentView()方法的重写。setContentView()实际承担着底部动作条的绘制,事件处理的任务,读者可以对该方法定制实现自己底部动作条。

  效果截图

  

  下载链接:链接: http://pan.baidu.com/s/1gduaTOZ 密码: jnmu。

开源项目:底部动作条(BottomSheet)的更多相关文章

  1. BottomSheet底部动作条使用

    底部动作条 底部动作条(Bottom Sheets)是一个从屏幕底部边缘向上滑出的一个面板,使用这种方式向用户呈现一组功能.底部动作条呈现了简单.清晰.无需额外解释的一组操作. 使用环境 底部动作条( ...

  2. Android开源项目——带图标文字的底部导航栏IconTabPageIndicator

    接下来的博客计划是,在<Android官方技术文档翻译>之间会发一些Android开源项目的介绍,直接剩下的几篇Android技术文档发完,然后就是Android开源项目和Gradle翻译 ...

  3. ProgressBar 进度条开源项目总结

    在Android开发中,我们不免会遇到进度条展示的需求,以下是本人之前star的开源项目,供大家参考: 一.ArcProgressBar 开源项目地址:https://github.com/zenoT ...

  4. [iOS微博项目 - 4.5] - 每条微博的底部工具条

    github: https://github.com/hellovoidworld/HVWWeibo A.每条微博的底部工具条 1.需求 每条微博底部都有一个工具条 显示3个按钮:评论.转发.赞 按钮 ...

  5. 最新最全的 Android 开源项目合集

    原文链接:https://github.com/opendigg/awesome-github-android-ui 在 Github 上做了一个很新的 Android 开发相关开源项目汇总,涉及到 ...

  6. GitHub 优秀的 Android 开源项目(转)

    今天查找资源时看到的一篇文章,总结了很多实用资源,十分感谢原作者分享. 转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介 ...

  7. GitHub 优秀的 Android 开源项目

    转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...

  8. GitHub 优秀Android 开源项目

    阅读目录 1.Xabber客户端 2.oschina客户端 3.手机安全管家 4.星座连萌 5.玲闹铃 6.魔乐盒 7.PWP日历 8.Apollo音乐播放器 9.夏普名片识别 10.高仿人人网 11 ...

  9. 【转】GitHub 优秀的 Android 开源项目

    转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...

随机推荐

  1. DateTime.Compare(t1,t2)比較两个日期大小

    DateTime.Compare(t1,t2)比較两个日期大小,排前面的小,排在后面的大,比方:2011-2-1就小于2012-3-2返回值小于零:  t1 小于 t2. 返回值等于零 : t1 等于 ...

  2. Git使用总结-so easy

    一.Git的特性 Speed 速度(git是用c语言写的.一般都是提交到本地) Simple design Strong support for non-linear development (tho ...

  3. swift排序算法和数据结构

    var arrayNumber: [Int] = [2, 4, 6, 7, 3, 8, 1] //冒泡排序 func maopao(var array: [Int]) -> [Int] { fo ...

  4. 从控制台读取password - C#

    Tip :    从控制台读取password 语言: C# ______________________________________________________________ 在登陆Lin ...

  5. Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作

    一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...

  6. 联想A798T刷机包 基于百度云V6 集成RE3.1.7美化版 精简冗余文件

    ROM介绍 1.apk进行odex合并及zipaliang优化-省电及降低内存暂用. 2.測试相机.通话.数据.wifi.蓝牙.等传感器均正常,. 3.提供时间居中防iphone状态栏补丁 4.增加I ...

  7. Oracle 闪回表实验

    工:闪回表实验 1.结构测试表flb_test,数据不小于10000行: TEST_USER1@PROD>create table flb_test(id number,dd date); Ta ...

  8. Shuttle ESB 实践

    http://blog.csdn.net/liu765023051/article/category/2482069

  9. Thanks

    今天,突然有一种爽的感觉.是做题做到爽的感觉,晚上就不是非常强烈了,脖子疼,要断了. 中午.妈妈给我打了电话,后来才知道爸爸的嗓子都哑了.说不出话来了都,哎,这都快一个月没有下雨了.地都干得要命了.好 ...

  10. CFileDialog 使用简单介绍

    CFileDialog使用文件选择对话框:首先构造一个对象,并提供一个相应的参数,构造函数原型例如,下面的: CFileDialog::CFileDialog( BOOL bOpenFileDialo ...