{"id":13396064,"url":"https://github.com/zzz40500/AndroidSweetSheet","last_synced_at":"2025-03-13T22:31:38.858Z","repository":{"id":36028060,"uuid":"40324166","full_name":"zzz40500/AndroidSweetSheet","owner":"zzz40500","description":"一个富有动感的Sheet(选择器)","archived":false,"fork":false,"pushed_at":"2018-05-04T21:20:44.000Z","size":4332,"stargazers_count":2059,"open_issues_count":22,"forks_count":364,"subscribers_count":68,"default_branch":"master","last_synced_at":"2025-03-11T01:22:47.943Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zzz40500.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-08-06T19:57:03.000Z","updated_at":"2025-03-07T05:30:42.000Z","dependencies_parsed_at":"2022-08-17T23:05:10.494Z","dependency_job_id":null,"html_url":"https://github.com/zzz40500/AndroidSweetSheet","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzz40500%2FAndroidSweetSheet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzz40500%2FAndroidSweetSheet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzz40500%2FAndroidSweetSheet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzz40500%2FAndroidSweetSheet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zzz40500","download_url":"https://codeload.github.com/zzz40500/AndroidSweetSheet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243493791,"owners_count":20299720,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T18:00:38.792Z","updated_at":"2025-03-13T22:31:37.982Z","avatar_url":"https://github.com/zzz40500.png","language":"Java","funding_links":[],"categories":["Index `(light-weight pages)`","Java","Index","Libs"],"sub_categories":["\u003cA NAME=\"Widget\"\u003e\u003c/A\u003eWidget"],"readme":"一个富有动感的 Sheet,\n先发两张图:\n![原型.GIF](https://github.com/zzz40500/AndroidSweetSheet/raw/master/screenshot/Design.gif)\n\n![效果图.gif](https://github.com/zzz40500/AndroidSweetSheet/raw/master/screenshot/SweetSheet.gif)\n\n\n[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-AndroidSweetSheet-green.svg?style=flat)](https://android-arsenal.com/details/1/2271)\n\n[![Android Gems](http://www.android-gems.com/badge/zzz40500/AndroidSweetSheet.svg?branch=master)](http://www.android-gems.com/lib/zzz40500/AndroidSweetSheet)\n\n[![我的微博](http://www.easyicon.net/api/resizeApi.php?id=1164436\u0026size=24)](http://weibo.com/u/5579192921/home?wvr=5)\n\n###gradle      \n/build.gradle\n~~~\nrepositories {\n    maven {\n        url \"https://jitpack.io\"\n    }\n}\n~~~\n/app/build.gradle\n~~~\ncompile 'com.github.zzz40500:AndroidSweetSheet:1.1.0'\n~~~\n###Usage:\n\n~~~\n\n// SweetSheet 控件,根据 rl 确认位置\nmSweetSheet = new SweetSheet(rl);\n\n//设置数据源 (数据源支持设置 list 数组,也支持从menu 资源中获取)\nmSweetSheet.setMenuList(list);\n//根据设置不同的 Delegate 来显示不同的风格.\nmSweetSheet.setDelegate(new RecyclerViewDelegate(true));\n//根据设置不同Effect来设置背景效果:BlurEffect 模糊效果.DimEffect 变暗效果,NoneEffect 没有效果.\nmSweetSheet.setBackgroundEffect(new BlurEffect(8));\n//设置菜单点击事件\nmSweetSheet.setOnMenuItemClickListener(new SweetSheet.OnMenuItemClickListener() {\n    @Override\n    public boolean onItemClick(int position, MenuEntity menuEntity1) {\n\n        //根据返回值, true 会关闭 SweetSheet ,false 则不会.\n        Toast.makeText(MainActivity.this, menuEntity1.title + \"  \" + position, Toast.LENGTH_SHORT).show();\n        return true;\n    }\n});\n~~~\n自定义扩展:\n~~~\n\n// SweetSheet 控件,根据 rl 确认位置\nmSweetSheet3 = new SweetSheet(rl);\n//定义一个 CustomDelegate 的 Delegate ,并且设置它的出现动画.\nCustomDelegate customDelegate = new CustomDelegate(true,\n        CustomDelegate.AnimationType.DuangLayoutAnimation);\nView view = LayoutInflater.from(this).inflate(R.layout.layout_custom_view, null, false);\n//设置自定义视图.\ncustomDelegate.setCustomView(view);\n//设置代理类\nmSweetSheet3.setDelegate(customDelegate);\n//因为使用了 CustomDelegate 所以mSweetSheet3中的 setMenuList和setOnMenuItemClickListener就没有效果了\nview.findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {\n    @Override\n    public void onClick(View v) {\n        mSweetSheet3.dismiss();\n    }\n});\n~~~\n\n\n监听返回\n~~~\n    @Override\n    public void onBackPressed() {\n \n        if(mSweetSheet.isShow()){\n\n            mSweetSheet.dismiss();\n        }\n        else{\n            super.onBackPressed();\n        }\n    }\n\n~~~\n \n\n###v1.1(版本说明)\n1. 去掉之前ViewPager 使用FragmentStatePagerAdapter 做为它的适配器.\n\n* SweetSheet 不支持 LinearLayout 作为它的父控件.\n\n* setMenuList 设置数据源支持从 List\u003cMenuEntity\u003e数组和Menu资源的填充.(Menu仅支持一级Menu,因为2级Menu我还没想好怎么展示).\n* setBackgroundEffect(Effect  effect) 提供对背景效果的支持,目前提供3种风格:\nBlurEffect:模糊效果,DimEffect 变暗效果,NoneEffect 没有效果.\n你也可以继承Effect扩展背景的效果\n\n* setDelegate 目前提供了三种风格\nRecyclerViewDelegate,ViewPagerDelegate,CustomDelegate.\n\n* CustomDelegate用于扩展类,你可以使用通过构造方法指定出现动画,通过setCustomView(View v)来设置你的自定义的布局.\n\n* CustomDelegate中提供了4种类型:\nDuangLayoutAnimation,DuangAnimation,\nAlphaAnimation,Custom:\n看名字大概就能知道它是什么效果.如果你对前3个效果不满意你就使用 Custom ,然后通过setCustomViewAnimation设置出现效果.\n\n* CRImageView 内部实现了 Android 5.0上面的CircleReveal效果.使用方法:`CRImageView. circularReveal(int centerX, int centerY, float startRadius, float endRadius, long duration, Interpolator interpolator)`你可以在你的项目中用上它.\n\n\n###FAQ\n怎么使包括 actionBar 在内的背景也虚化? \n使用 一个 FrameLayout或者RelativeLayout 里面使用 ToolBar 来替代 ActionBar 将这个 FrameLayout 或者RelativeLayout作为SweetSheet 的父控件传递进去,\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzzz40500%2FAndroidSweetSheet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzzz40500%2FAndroidSweetSheet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzzz40500%2FAndroidSweetSheet/lists"}