一个富有动感的Sheet(选择器):AndroidSweetSheet
jopen
9年前
一个富有动感的 Sheet, github 先发两张图:
Usage:
MainActivity.class
//添加假数据 MenuEntity menuEntity=new MenuEntity(); menuEntity.resId=R.drawable.ic_account_child; menuEntity.name="QQ"; list.add(menuEntity); list.add(menuEntity); list.add(menuEntity); list.add(menuEntity); list.add(menuEntity); list.add(menuEntity); list.add(menuEntity); list.add(menuEntity); list.add(menuEntity); list.add(menuEntity); list.add(menuEntity); list.add(menuEntity); list.add(menuEntity); //根据Type生成对应的样式 SweetSheet 控件,根据 rl 确认位置 mSweetSheet = new SweetSheet(rl, SweetSheet.Type.RecyclerView); //设置数据源 FragmentManager 在样式为Viewpager 是必须的, RecyclerView样式可以为 null, 不影响运行 mSweetSheet.setMenuList(getSupportFragmentManager(), list); //设置背景灰度 mSweetSheet.setBackgroundDim(0.8f); //设置点击事件 mSweetSheet.setOnMenuItemClickListener(new SweetSheet.OnMenuItemClickListener() { @Override public boolean onItemClick(int position) { //根据返回值, true 会关闭 SweetSheet ,false 则不会. Toast.makeText(MainActivity.this,list.get(position).name+" "+position,Toast.LENGTH_SHORT).show(); return true; } });
监听返回
@Override public void onBackPressed() { if(mSweetSheet.isShow()){ mSweetSheet.dismiss(); } else{ super.onBackPressed(); } }
Note:
- 目前SweetSheet支持的样式2种:SweetSheet.Type.RecyclerView 和 SweetSheet.Type.Viewpager
- 关于:SweetSheet.setMenuList(FragmentManager fm, LIst list); 第一个参数是用了做ViewPager的适配器使用的,类型SweetSheet.Type.RecyclerView 可以传null;
- 暂不支持使用LinearLayout 作为mSweetSheet 的父控件.
Future (1.1):
- 支持从menu中创建.
- 优化SweetSheet.Type.RecyclerView 的体验.
- gradle的支持
- 支持简单的扩展