AndroidSweetSheet 1.1版本

一個富有動感的Sheet(選擇器)
github
Android Arsenal
Android Gems
簡書
我的新浪

先發兩張圖:


原型.GIF
效果圖.gif

gradle

/build.gradle

jitpack.io

repositories {
    maven {
        url "https://jitpack.io"
    }
}

/app/build.gradle

compile compile 'com.github.zzz40500:AndroidSweetSheet:1.1.0''

Usage:

MainActivity.class


// SweetSheet 控件,根據 rl 確認位置
mSweetSheet = new SweetSheet(rl);

//設置數據源 (數據源支持設置 list 數組,也支持從menu 資源中獲取)
mSweetSheet.setMenuList(list);
//根據設置不同的 Delegate 來顯示不同的風格.
mSweetSheet.setDelegate(new RecyclerViewDelegate(true));
//根據設置不同Effect來設置背景效果:BlurEffect 模糊效果.DimEffect 變暗效果,NoneEffect 沒有效果.
mSweetSheet.setBackgroundEffect(new BlurEffect(8));
//設置菜單點擊事件
mSweetSheet.setOnMenuItemClickListener(new SweetSheet.OnMenuItemClickListener() {
    @Override
    public boolean onItemClick(int position, MenuEntity menuEntity1) {

        //根據返回值, true 會關閉 SweetSheet ,false 則不會.
        Toast.makeText(MainActivity.this, menuEntity1.title + "  " + position, Toast.LENGTH_SHORT).show();
        return true;
    }
});

自定義擴展:


// SweetSheet 控件,根據 rl 確認位置
mSweetSheet3 = new SweetSheet(rl);
//定義一個 CustomDelegate 的 Delegate ,并且設置它的出現動畫.
CustomDelegate customDelegate = new CustomDelegate(true,
        CustomDelegate.AnimationType.DuangLayoutAnimation);
View view = LayoutInflater.from(this).inflate(R.layout.layout_custom_view, null, false);
//設置自定義視圖.
customDelegate.setCustomView(view);
//設置代理類
mSweetSheet3.setDelegate(customDelegate);
//因為使用了 CustomDelegate 所以mSweetSheet3中的 setMenuList和setOnMenuItemClickListener就沒有效果了
view.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mSweetSheet3.dismiss();
    }
});

監聽返回

    @Override
    public void onBackPressed() {
 
        if(mSweetSheet.isShow()){
            mSweetSheet.dismiss();
        } else{
            super.onBackPressed();
        }
    }

v1.1(版本說明)

  1. 去掉之前ViewPager 使用FragmentStatePagerAdapter 做為它的適配器.
  • SweetSheet 不支持 LinearLayout 作為它的父控件.

  • setMenuList 設置數據源支持從 List<MenuEntity>數組和Menu資源的填充.(Menu僅支持一級Menu,因為2級Menu我還沒想好怎么展示).

  • setBackgroundEffect(Effect effect) 提供對背景效果的支持,目前提供3種風格:
    BlurEffect:模糊效果,DimEffect 變暗效果,NoneEffect 沒有效果.
    你也可以繼承Effect擴展背景的效果

  • setDelegate 目前提供了三種風格
    RecyclerViewDelegate,ViewPagerDelegate,CustomDelegate.

  • CustomDelegate用于擴展類,你可以使用通過構造方法指定出現動畫,通過setCustomView(View v)來設置你的自定義的布局.

  • CustomDelegate中提供了4種類型:
    DuangLayoutAnimation,DuangAnimation,
    AlphaAnimation,Custom:
    看名字大概就能知道它是什么效果.如果你對前3個效果不滿意你就使用 Custom ,然后通過setCustomViewAnimation設置出現效果.

  • CRImageView 內部實現了 Android 5.0上面的CircleReveal效果.使用方法:CRImageView. circularReveal(int centerX, int centerY, float startRadius, float endRadius, long duration, Interpolator interpolator)你可以在你的項目中用上它.

FAQ

怎么使包括 actionBar 在內的背景也虛化?
使用 一個 FrameLayout或者RelativeLayout 里面用 ToolBar 來替代 ActionBar ,然后將這個 FrameLayout 或者RelativeLayout作為SweetSheet 的父控件,

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容