AndroidSweetSheet 一个富有动感的 Sheet(选择器)

AndroidSweetSheet

项目地址:zzz40500/AndroidSweetSheet 

简介:一个富有动感的 Sheet(选择器)

更多:作者   提 Bug   

标签:

 

一个富有动感的 Sheet, 先发两张图: 原型.GIF

效果图.gif

 

 

我的微博

gradle

/build.gradle

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

/app/build.gradle

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

Usage:


// 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 做为它的适配器.

  2. SweetSheet 不支持 LinearLayout 作为它的父控件.

  3. setMenuList 设置数据源支持从 List数组和 Menu 资源的填充.(Menu 仅支持一级 Menu,因为 2 级 Menu 我还没想好怎么展示).

  4. setBackgroundEffect(Effect effect) 提供对背景效果的支持,目前提供 3 种风格: BlurEffect:模糊效果,DimEffect 变暗效果,NoneEffect 没有效果. 你也可以继承 Effect 扩展背景的效果

  5. setDelegate 目前提供了三种风格 RecyclerViewDelegate,ViewPagerDelegate,CustomDelegate.

  6. CustomDelegate 用于扩展类,你可以使用通过构造方法指定出现动画,通过 setCustomView(View v)来设置你的自定义的布局.

  7. CustomDelegate 中提供了 4 种类型: DuangLayoutAnimation,DuangAnimation, AlphaAnimation,Custom: 看名字大概就能知道它是什么效果.如果你对前 3 个效果不满意你就使用 Custom ,然后通过 setCustomViewAnimation 设置出现效果.

  8. 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 的父控件传递进去,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值