{"id":17981451,"url":"https://github.com/andremion/louvre","last_synced_at":"2025-04-05T07:04:15.486Z","repository":{"id":52505551,"uuid":"80039524","full_name":"andremion/Louvre","owner":"andremion","description":"A small customizable library useful to handle an gallery image pick action built-in your app. :sunrise_over_mountains::stars:","archived":false,"fork":false,"pushed_at":"2021-04-27T09:23:06.000Z","size":79480,"stargazers_count":635,"open_issues_count":5,"forks_count":94,"subscribers_count":15,"default_branch":"development","last_synced_at":"2025-03-29T06:04:36.486Z","etag":null,"topics":["android","gallery","image","library","louvre","pick","picker","theme"],"latest_commit_sha":null,"homepage":"https://play.google.com/store/apps/details?id=com.andremion.louvre.sample","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/andremion.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}},"created_at":"2017-01-25T17:42:19.000Z","updated_at":"2025-01-21T19:38:00.000Z","dependencies_parsed_at":"2022-09-06T15:11:23.946Z","dependency_job_id":null,"html_url":"https://github.com/andremion/Louvre","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andremion%2FLouvre","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andremion%2FLouvre/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andremion%2FLouvre/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andremion%2FLouvre/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andremion","download_url":"https://codeload.github.com/andremion/Louvre/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247299831,"owners_count":20916190,"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":["android","gallery","image","library","louvre","pick","picker","theme"],"created_at":"2024-10-29T18:09:57.957Z","updated_at":"2025-04-05T07:04:15.465Z","avatar_url":"https://github.com/andremion.png","language":"Java","funding_links":["https://ko-fi.com/T6T05M4O'"],"categories":[],"sub_categories":[],"readme":"\u003cimg alt=\"Icon\" src=\"sample/src/main/res/mipmap-xxhdpi/ic_launcher.png?raw=true\" align=\"left\" hspace=\"1\" vspace=\"1\"\u003e\n\n\u003ca alt='Buy Me a Coffee at ko-fi.com' href='https://ko-fi.com/T6T05M4O' target='_blank' align='right'\u003e\u003cimg align='right' height='36' style='border:0px;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi4.png?v=0' border='0' /\u003e\u003c/a\u003e\n\u003ca alt='Get it on Google Play' href='https://play.google.com/store/apps/details?id=com.andremion.louvre.sample' target='_blank' align='right'\u003e\u003cimg align='right' height='36' style='border:0px;height:36px;' src='https://developer.android.com/images/brand/en_generic_rgb_wo_60.png' border='0' /\u003e\u003c/a\u003e\n# Louvre\n\nA small customizable image picker. Useful to handle an gallery image pick action built-in your app.\n\n\u003c/br\u003e\n\n[![License Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=true)](http://www.apache.org/licenses/LICENSE-2.0)\n![minSdkVersion 19](https://img.shields.io/badge/minSdkVersion-19-red.svg?style=true)\n![compileSdkVersion 25](https://img.shields.io/badge/compileSdkVersion-25-yellow.svg?style=true)\n[![maven-central](https://img.shields.io/maven-central/v/com.github.andremion/louvre.svg)](https://search.maven.org/#artifactdetails%7Ccom.github.andremion%7Clouvre%7C1.3.0%7Caar)\n\n[![Android Arsenal Louvre](https://img.shields.io/badge/Android%20Arsenal-Louvre-green.svg?style=true)](https://android-arsenal.com/details/1/5188)\n[![MaterialUp Louvre](https://img.shields.io/badge/MaterialUp-Louvre-blue.svg?style=true)](https://www.uplabs.com/posts/louvre)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt='Sample' src=\"https://raw.githubusercontent.com/andremion/Louvre/master/art/sample.gif\"\u003e\u003c/br\u003e\n  \u003ci\u003e*Images from Google Image Search\u003c/i\u003e\n\u003c/p\u003e\n\n## Installation\n\nAdd this in your root `build.gradle` file (**not** your app module `build.gradle` file):\n\n```gradle\nallprojects {\n    repositories {\n        ...\n        maven { url \"https://jitpack.io\" }\n    }\n}\n```\n\nThen, add the library in your app module `build.gradle`\n\n```groovy\ndependencies{\n    compile 'com.github.andremion:louvre:[LATEST VERSION]'\n}\n```\n\n## Usage\n\nChoose one of the **Louvre** themes to use in `GalleryActivity` and override it to define your app color palette.\n\n```xml\n\u003cstyle name=\"AppTheme.Louvre.Light.DarkActionBar\" parent=\"Louvre.Theme.Light.DarkActionBar\"\u003e\n    \u003citem name=\"colorPrimary\"\u003e@color/colorPrimary\u003c/item\u003e\n    \u003citem name=\"colorPrimaryDark\"\u003e@color/colorPrimaryDark\u003c/item\u003e\n    \u003citem name=\"colorAccent\"\u003e@color/colorAccent\u003c/item\u003e\n\u003c/style\u003e\n```\n```xml\n\u003cstyle name=\"AppTheme.Louvre.Dark\" parent=\"Louvre.Theme.Dark\"\u003e\n    \u003citem name=\"colorPrimary\"\u003e@color/colorPrimary\u003c/item\u003e\n    \u003citem name=\"colorPrimaryDark\"\u003e@color/colorPrimaryDark\u003c/item\u003e\n    \u003citem name=\"colorAccent\"\u003e@color/colorAccent\u003c/item\u003e\n\u003c/style\u003e\n```\n```xml\n\u003cstyle name=\"AppTheme.Louvre.Light\" parent=\"Louvre.Theme.Light\"\u003e\n    \u003citem name=\"colorPrimary\"\u003e@color/colorPrimary\u003c/item\u003e\n    \u003citem name=\"colorPrimaryDark\"\u003e@color/colorPrimaryDark\u003c/item\u003e\n    \u003citem name=\"colorAccent\"\u003e@color/colorAccent\u003c/item\u003e\n\u003c/style\u003e\n```\n\nFor `PreviewActivity` you just need to define the accent color.\n\n```xml\n\u003cstyle name=\"AppTheme.Louvre.Preview\" parent=\"Louvre.Theme.Preview\"\u003e\n    \u003citem name=\"colorAccent\"\u003e@color/colorAccent\u003c/item\u003e\n\u003c/style\u003e\n```\n\nDeclare the **Louvre** activities in `AndroidManifest.xml` file using your new app themes.\n\n```xml\n\u003cactivity\n    android:name=\"com.andremion.louvre.home.GalleryActivity\"\n    android:theme=\"@style/AppTheme.Louvre.Light.DarkActionBar\" /\u003e\n\u003cactivity\n    android:name=\"com.andremion.louvre.preview.PreviewActivity\"\n    android:theme=\"@style/AppTheme.Louvre.Preview\" /\u003e\n```\n\nAdd `READ_EXTERNAL_STORAGE` permission in your `AndroidManifest.xml` file.\n\n```xml\n\u003cuses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" /\u003e\n```\n\nIn your `Activity` you just need the below lines of code to open the **Louvre**.\n\n```java\nLouvre.init(myActivity)\n        .setRequestCode(LOUVRE_REQUEST_CODE)\n        .open();\n```\n\nYou can also use a `Fragment` to open the **Louvre**. In this case, the `Fragment` will get the `onActivityResult` callback.\n\n```java\nLouvre.init(myFragment)\n        .setRequestCode(LOUVRE_REQUEST_CODE)\n        .open();\n```\n\nBut you can customize the picker:\n\n######Setting the max images allowed to pick\n```java\nlouvre.setMaxSelection(10)\n```\n\n######Setting the current selected items\n```java\nList\u003cUri\u003e selection;\n...\nlouvre.setSelection(selection)\n```\n\n######Setting the media type to filter the query with a combination of one of these types: `Louvre.IMAGE_TYPE_BMP`, `Louvre.IMAGE_TYPE_JPEG`, `Louvre.IMAGE_TYPE_PNG`\n```java\nlouvre.setMediaTypeFilter(Louvre.IMAGE_TYPE_JPEG, Louvre.IMAGE_TYPE_PNG)\n```\n\nSee more at the [sample](https://github.com/andremion/Louvre/tree/master/sample)\n\n## Libraries and tools used in the project\n\n* [Design Support Library](http://developer.android.com/intl/pt-br/tools/support-library/features.html#design)\nThe Design package provides APIs to support adding material design components and patterns to your apps.\n* [CounterFab](https://github.com/andremion/CounterFab)\nA FloatingActionButton subclass that shows a counter badge on right top corner.\n* [Glide](https://github.com/bumptech/glide)\nAn image loading and caching library for Android focused on smooth scrolling\n* [PhotoView](https://github.com/chrisbanes/PhotoView)\nImplementation of ImageView for Android that supports zooming, by various touch gestures.\n\n## Contributing\n\nContributions are always welcome!\n\n**Issues:**\nFell free to open a new issue. Follow the [ISSUE_TEMPLATE.MD](https://github.com/andremion/Louvre/tree/master/ISSUE_TEMPLATE.md)\n\nFollow the \"fork-and-pull\" Git workflow.\n\n 1. **Fork** the repo on GitHub\n 2. **Clone** the project to your own machine\n 3. **Commit** changes to your own branch\n 4. **Merge** with current *development* branch\n 5. **Push** your work back up to your fork\n 7. Submit a **Pull request** your changes can be reviewed (please refere the issue if reported)\n\n**Prevent** code-style related changes. Format the code before commiting.\n\n## License\n\n    Copyright 2017 André Mion\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n        http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandremion%2Flouvre","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandremion%2Flouvre","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandremion%2Flouvre/lists"}