Android开源 - AndroidSweetSheet
nanxicao
8年前
<h2>效果图</h2> <p><img alt="" src="https://simg.open-open.com/show/167f913d2fd3d6c274d2a67fd4006bd3.gif"></p> <h2>使用</h2> <pre> <code class="language-java"> // 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; } }); </code></pre> <h2>自定义扩展</h2> <pre> <code class="language-java"> // 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(); } }); </code></pre> <h2>监听返回</h2> <pre> <code class="language-java"> @Override public void onBackPressed() { if(mSweetSheet.isShow()){ mSweetSheet.dismiss(); } else{ super.onBackPressed(); } } </code></pre> <p> </p>