翻翻git之---足以取代底部PoPupWindows的强大控件 BottomSheet

转载请注明出处:王亟亟的大牛之路

这两天都在忙公事吧,文章断更了2天,不过为了发而发反而影响质量,还是要弄一些至少大家有使用价值的东西,顺道把之前一直在安利的库每日一更了下,这里继续给出案例地址:https://github.com/ddwhan0123/Useful-Open-Source-Android


今天贴的是一个自定义的BottomSheet,先来贴下效果图

这里写图片描述

这里写图片描述

这里写图片描述

那些传统的分享啊,选择啊等等pop操作的事他都能干,而且他还是基于MD的设计(弄死那些脑残UI)。

作者写了一个使用介绍,是英文版的,英文好的小伙可以自己看http://soarcn.github.io/BottomSheet(我这里更多的做一个翻译和解释的操作)

OK,我们来看看怎么引用

Grade

 compile 'com.cocosw:bottomsheet:1.+@aar'

Maven

<dependency>
    <groupId>com.cocosw</groupId>
    <artifactId>bottomsheet</artifactId>
    <version>1.x</version>
    <type>apklib</type>
</dependency>

zip:https://github.com/soarcn/BottomSheet/zipball/master
tar.gz:https://github.com/soarcn/BottomSheet/tarball/master

这边补充下,要使用的话 Compile版本要在 21+

使用的话就android 2.1+都可以

作者做了一些列的引用场景,诸如从XML中读取每一条item内容的,像这样

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/share" android:title="@string/share" android:icon="@drawable/perm_group_messages"/>
    <item android:id="@+id/upload" android:title="@string/upload" android:icon="@drawable/perm_group_system_clock"/>
    <item android:id="@+id/call" android:title="@string/call" android:icon="@drawable/perm_group_phone_calls"/>
    <group android:id="@+id/helpgroup">
         <item android:id="@+id/help" android:title="@string/help" android:icon="@drawable/perm_group_system_tools"/>
    </group>
</menu>

然后在我们的业务类里面做一下操作,就可以完成点击的逻辑行为了

new BottomSheet.Builder(this).title("title").sheet(R.menu.list).listener(new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        switch (which) {
                            case R.id.help:
                                q.toast("Help me!");
                                break;
                        }
                    }
                }).show();

You can get a menu object from bottomsheet instance from 1.1.0, and change it as you want, exactly like you manipulating android menu or actionbar actionitems. Please be aware that if you change the menu after showing the bottomsheet, you must call invalidate(), or no changes would be applied and your app might crash. Please check example application for more info.

获得bottomsheet实例的菜单对象,并改变它,你完全一样操纵机器人菜单或动作条actionitems 。请注意,如果你显示bottomsheet后更改菜单,您必须调用invalidate( ) ,或者没有修改将被应用,你的应用程序可能会崩溃。更多信息请查看示例应用程序。


当然,既然遵循MD那肯定也会有黑白2个风格,那首先你得预先设置个字的风格样式,像这样

  <style name="BottomSheet.StyleDialog" parent="BottomSheet.Dialog">
        <item name="android:backgroundDimAmount">0.5</item>
        <item name="android:windowAnimationStyle">@style/BottomSheet.Animation</item>
        <item name="android:textColorPrimary">#DDffffff</item>
        <item name="android:textColorSecondary">#8Affffff</item>
        <item name="android:textColorHint">#42ffffff</item>
        <item name="bs_dialogBackground">@color/abc_search_url_text_normal</item>
        <item name="bs_dividerColor">@color/abc_search_url_text_pressed</item>
        <item name="bs_numColumns">4</item>
        <item name="bs_listStyle">@style/BottomSheet.StyleList</item>
    </style>

然后在我们的Activity里做一下操作:

new BottomSheet.Builder(this, R.style.BottomSheet_StyleDialog).title("To " + adapter.getItem(position)).sheet(R.menu.list).listener(new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        ListAcitivty.this.onClick(adapter.getItem(position), which);
                    }
                }).build();

作者是一个在悉尼的中国人(智商长得像中国人) Git:https://github.com/soarcn

有技术问题或者有私活可以微信我,记得标明出处,不然一般我都会无视,写写

这里写图片描述

周末愉快!!!!(下面那部分我本意不怎么想贴,但是貌似群众们还很喜欢,那就继续贴吧)

这里写图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值