1. 程式人生 > >翻翻git之---足以取代底部PoPupWindows的強大控制元件 BottomSheet

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

今天貼的是一個自定義的BottomSheet,先來貼下效果圖

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

那些傳統的分享啊,選擇啊等等pop操作的事他都能幹,而且他還是基於MD的設計(弄死那些腦殘UI)。

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>

這邊補充下,要使用的話 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();

有技術問題或者有私活可以微信我,記得標明出處,不然一般我都會無視,寫寫

這裡寫圖片描述

週末愉快!!!!(下面那部分我本意不怎麼想貼,但是貌似群眾們還很喜歡,那就繼續貼吧)

這裡寫圖片描述