{"id":17688678,"url":"https://github.com/boybeak/starter","last_synced_at":"2025-05-13T00:48:33.957Z","repository":{"id":87642819,"uuid":"138537866","full_name":"boybeak/Starter","owner":"boybeak","description":"A quick starter package for android developer.","archived":false,"fork":false,"pushed_at":"2021-12-19T07:09:40.000Z","size":4505,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-13T00:48:27.142Z","etag":null,"topics":["drag-exit","imagepicker","permission-android","starter"],"latest_commit_sha":null,"homepage":"","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/boybeak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-06-25T03:11:46.000Z","updated_at":"2022-12-11T19:24:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"48cd8741-f5a9-48c9-af05-739406c0a0d4","html_url":"https://github.com/boybeak/Starter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boybeak%2FStarter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boybeak%2FStarter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boybeak%2FStarter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/boybeak%2FStarter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/boybeak","download_url":"https://codeload.github.com/boybeak/Starter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253850882,"owners_count":21973672,"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":["drag-exit","imagepicker","permission-android","starter"],"created_at":"2024-10-24T11:45:03.804Z","updated_at":"2025-05-13T00:48:33.944Z","avatar_url":"https://github.com/boybeak.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n# Starter\n\n中文[Readme.md](https://github.com/boybeak/Starter/blob/master/README_cn.md)\n\nThere are 4 libraries in this project:[ **Starter**](https://github.com/boybeak/Starter#starter--), [**Drag-Exit**](https://github.com/boybeak/Starter#drag-exit--), [**Permission**](https://github.com/boybeak/Starter#permission--), [**Picker**](https://github.com/boybeak/Starter#picker--), [**SAFR**](https://github.com/boybeak/Starter#safr--)\n\n## Starter[ ![Starter](https://api.bintray.com/packages/boybeak/nulldreams/starter/images/download.svg) ](https://bintray.com/boybeak/nulldreams/starter/_latestVersion)\n\nThis is a quick start package, including BaseActivity, BaseFragment and utils classes;\n\n```groovy\nimplementation 'com.github.boybeak:starter:x.y.z'\n```\n\n#### Starter structure\n\n| package                                                      | class                                                        | description                                                  |\n| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |\n| [**activity**](https://github.com/boybeak/Starter/wiki/activity) | [BaseActivity](https://github.com/boybeak/Starter/wiki/activity#baseactivity),[BaseDragExitActivity](https://github.com/boybeak/Starter/wiki/activity#basedragexitactivity),[DataBindingActivity](https://github.com/boybeak/Starter/wiki/activity#basedragexitactivity),DataBindingToolbarActivity,DragExitToolbarActivity, SrlRvActivity, [ToolbarActivity](https://github.com/boybeak/Starter/wiki/activity#toolbaractivity),ToolbarViewPagerActivity | Some basic activities                                        |\n| [**adapter**](https://github.com/boybeak/Starter/wiki/adapter) | [DataBindingAdapter](https://github.com/boybeak/Starter/wiki/adapter#databindingadapter),[FooterAdapter](https://github.com/boybeak/Starter/wiki/adapter#footeradapter),BaseLayoutImpl,AbsDataBindingHolder, [DataChange](https://github.com/boybeak/Starter/wiki/adapter#datachange) | Only some main class a presented                             |\n| [**broadcast**](https://github.com/boybeak/Starter/wiki/broadcast) | AbsReceiver, BroadcastUtils                                  | Add isRegistered state in AbsReceiver.Use this with **BroadcastUtils** |\n| [**fragment**](https://github.com/boybeak/Starter/wiki/fragment) | BaseFragment, BaseDialogFragment, BaseBottomDialogFragment, RefreshListFragment, PaginationFragment |                                                              |\n| [**mvc**](https://github.com/boybeak/Starter/wiki/mvc)       |                                                              | It's not too useful                                          |\n| [**retrofit**](https://github.com/boybeak/Starter/wiki/retrofit) | SimpleCallback, SimpleListCallback, SafeCallback, SafeListCallback | Some quick retrofit callback                                 |\n| [**utils**](https://github.com/boybeak/Starter/wiki/utils)   | AssetUtil, Connectivity, FileUtil, ImeUtil                   | Some useful utils                                            |\n| [**widget**](https://github.com/boybeak/Starter/wiki/widget) | BottomHideBehavior, Chip, EmptyView, OnScrollBottomListener, PagerStateAdapter, ProgressBar, RatioCardView, RatioImageView,RatioViewPager, SearchBar, SimpleViewPagerFragmentAdapter |                                                              |\n| [Others](https://github.com/boybeak/Starter/wiki/Others)     | [CrashHandler](https://github.com/boybeak/Starter/wiki/Others/_edit#crashhandler), GetNothingImpl, ILife, [Intents](https://github.com/boybeak/Starter/wiki/Others/_edit#intents), [Memory](https://github.com/boybeak/Starter/wiki/Others/_edit#memory), [Router](https://github.com/boybeak/Starter/wiki/Others/_edit#router), [SafeHandler](https://github.com/boybeak/Starter/wiki/Others/_edit#safehandler) |                                                              |\n\n[See full wiki document](https://github.com/boybeak/Starter/wiki)\n\n## Drag-Exit[ ![Download](https://api.bintray.com/packages/boybeak/nulldreams/drag-exit/images/download.svg) ](https://bintray.com/boybeak/nulldreams/drag-exit/_latestVersion)\n\n```groovy\nimplementation 'com.github.boybeak:drag-exit:x.y.z'\n```\n\n![demo gif](https://github.com/boybeak/Starter/blob/master/gif/drag-exit.gif)\n\nThere's only one FrameLayout's sub class **DragExitLayout**. Use the layout like this:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003ccom.github.boybeak.de.DragExitLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:id=\"@+id/drag_exit_layout\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    app:lazy=\"0.25\"\n    app:stuckEffect=\"true\"\n    app:activeEdges=\"left\"\u003e\n\t\u003cWebView \n        android:id=\"@+id/web_view\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        \u003e\n    \u003c/WebView\u003e\n\u003c/com.github.boybeak.de.DragExitLayout\u003e\n```\n\n```kotlin\nclass DragExitActivity : AppCompatActivity() {\n    \n    private val dragListener = object : DragExitLayout.OnExitListener {\n        override fun onExit() {\n\t\t\tfinish()\n        }\n    }\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        super.setContentView(R.layout.activity_drag_exit)\n        \n        drag_exit_layout.setOnExitListener(dragListener)\n        \n        web_view.webViewClient = WebViewClient()\n        web_view.webChromeClient = WebChromeClient()\n        web_view.loadUrl(\"https://github.com/boybeak/Starter\")\n    }\n}\n```\n\nSome attributes as below:\n\n- **activeEdges** - *enum*: 3 values are available, **left**, **right** and **both**, which edge can active the drag gesture.\n- **exitLineRatio** - *float*: Available values in range (0, 1), the exit action trigger ratio of layout width.\n- **stuckEffect** - *boolean*:  Whether should the child view stuck at exitLineRation position or not.\n- **lazy** - *float*: Available values in range (0, 1). If set to 0.5, your finger move 100 pixels, the child view actually move 50 pixels.\n- **alphaEffect** - *boolean*: Whether the child view change its alpha when moving.\n- **alphaMin** - *float*: The minimum value of the child view can be. Once the child view moves to exitLineRation position, the alpha will be alphaMin.\n- **scaleEffect** - *boolean*, same as alphaEffect\n- **scaleMin** - *float*: same as alphaMin\n\nMore about **exitLineRatio** see the image below:\n\nIf set exitLineRation to 0.25.\n\n![exitLineRation](https://github.com/boybeak/Starter/blob/master/gif/exitLineRation.png)\n\n\u003e Don't forget use a transparent theme to your activity if you want a drag-exit activity. Or you can use **BaseDragExitActivity** or **DragExitToolbarActivity** in the **Starter** library.\n\n## Permission[ ![Download](https://api.bintray.com/packages/boybeak/nulldreams/permission/images/download.svg) ](https://bintray.com/boybeak/nulldreams/permission/_latestVersion)\n\nThis is a permission helper. Quickly grant permissions.\n\n```groovy\nimplementation 'com.github.boybeak:permission:x.y.z'\n```\n\n```kotlin\nPH.ask(Manifest.permission.WRITE_EXTERNAL_STORAGE, \n\tManifest.permission.CAMERA, \n\tManifest.permission.RECORD_AUDIO).go(this, object : Callback {\n            override fun onGranted(permissions: MutableList\u003cString\u003e) {\n\t\t\t\t//TODO do what you want\n            }\n\n            override fun onDenied(permission: String) {\n\t\t\t\t//TODO do what you want\n            }\n\n        })\n```\n\n**PH** is short for Permission Helper.\n\n\n\n## Picker[ ![Picker](https://api.bintray.com/packages/boybeak/nulldreams/picker/images/download.svg) ](https://bintray.com/boybeak/nulldreams/picker/_latestVersion)\n\nA helper library for getting images and videos quickly.\n\n```groovy\nimplementation 'com.github.boybeak:picker:x.y.z'\n```\n\n```kotlin\n// Get multiple images from gallery\nPicker.gallery().image().multiple(true)\n\t.go(this@PickerActivity, object : MultipleCallback {\n\t\toverride fun onGet(id: String, uris: MutableList\u003cUri\u003e, files: MutableList\u003cFile\u003e) {\n\t\t    adapter!!.addAll(files, Converter\u003cFile, FileImpl\u003e { data, _ -\u003e FileImpl(data) }).autoNotify()\n\t\t}\n\n\t\toverride fun onCancel(id: String) {\n\n\t\t}\n\n\t    })\n```\n\n```kotlin\n// Get one image from camera\nval dir = File(externalCacheDir, \"images\")\nif (!dir.exists()) {\n    dir.mkdirs()\n}\n\nval cameraTempFile = File(dir, System.currentTimeMillis().toString() + \".jpg\")\nval uri = FileProvider.getUriForFile(this@PickerActivity, \"$packageName.provider\", cameraTempFile)\nPicker.camera().image().output(uri, cameraTempFile)\n\t.go(this@PickerActivity, object : SingleCallback {\n\t\toverride fun onGet(id: String, uri: Uri, file: File) {\n\t\t    adapter!!.add(FileImpl(file)).autoNotify()\n\t\t}\n\n\t\toverride fun onCancel(id: String) {\n\n\t\t}\n\n\t    })\n```\n\nWith this library, you can get images easily from gallery and camera. Support getting multiple images and videos from gallery, and getting one image or video from camera.\n\n\n\n## SAFR[ ![Download](https://api.bintray.com/packages/boybeak/nulldreams/safr/images/download.svg) ](https://bintray.com/boybeak/nulldreams/safr/_latestVersion)\n\n```groovy\nimplementation 'com.github.boybeak:safr:x.y.z'\n```\n\n**SAFR** is short for **startActivityForResult**.\n\n```kotlin\nSAFR.newInstance().extras {\n            //fill data here\n        }.byAction(Intent.ACTION_GET_CONTENT)\n\t.startActivityForResult(this, 100, object : Callback {\n            override fun onResult(requestCode: Int, resultCode: Int, data: Intent?) {\n\n            }\n\n        })\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboybeak%2Fstarter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fboybeak%2Fstarter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fboybeak%2Fstarter/lists"}