Skip to content

zfdang/android-multiple-images-selector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ba32013 · Apr 27, 2022

History

70 Commits
Apr 27, 2022
Apr 27, 2022
Apr 27, 2022
Nov 29, 2018
Apr 22, 2016
Nov 30, 2018
Apr 27, 2022
Apr 22, 2016
Apr 22, 2016
Apr 27, 2022
Apr 12, 2016
Apr 12, 2016
May 3, 2016
Apr 12, 2016

Repository files navigation

Android Multiple Images Selector

Easy-to-use library to select images in Android application

Features:

  • select images by folders
  • support to set max number of images to be selected
  • allow filter images with tiny size (configurable)
  • fast scroll of image list
  • support to capture images from camera
  • compitable with android 6.0
  • support Chinese / English

NOTE: this library depends on Fresco / rxjava.

How does it work (GIF)

Demo Demo

Download demo apk here: demo

How to use this library in your application

1. add "multiple-images-selector" dependency

multiple-images-selector is now available in jcenter.

Add "multiple-images-selector" as dependency to your app:

compile 'com.zfdang.multiple-images-selector:multiple-images-selector:1.1.5'

2. Initialize Fresco & Add selector activity in your app's manifest

Permission & Application & Activity:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!--the following two permissions are required if you want to take photo in selector-->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application
	 ...
    android:name=".DemoApplication"
    ...
    
    <activity
        android:name="com.zfdang.multiple_images_selector.ImagesSelectorActivity"
        android:configChanges="orientation|screenSize"/>
    
</application>

Application intialization:

public class DemoApplication extends Application
{
	@Override
	public void onCreate() {
    super.onCreate();

    // the following line is important
    Fresco.initialize(getApplicationContext());
	}
}

3. Launch images selector:

// class variables
private static final int REQUEST_CODE = 123;
private ArrayList<String> mResults = new ArrayList<>();

// start multiple photos selector
Intent intent = new Intent(DemoActivity.this, ImagesSelectorActivity.class);
// max number of images to be selected
intent.putExtra(SelectorSettings.SELECTOR_MAX_IMAGE_NUMBER, 5);
// min size of image which will be shown; to filter tiny images (mainly icons)
intent.putExtra(SelectorSettings.SELECTOR_MIN_IMAGE_SIZE, 100000);
// show camera or not
intent.putExtra(SelectorSettings.SELECTOR_SHOW_CAMERA, true);
// pass current selected images as the initial value
intent.putStringArrayListExtra(SelectorSettings.SELECTOR_INITIAL_SELECTED_LIST, mResults);
// start the selector
startActivityForResult(intent, REQUEST_CODE);

4. get results by

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // get selected images from selector
    if(requestCode == REQUEST_CODE) {
        if(resultCode == RESULT_OK) {
            mResults = data.getStringArrayListExtra(SelectorSettings.SELECTOR_RESULTS);
            assert mResults != null;

            // show results in textview
            StringBuffer sb = new StringBuffer();
            sb.append(String.format("Totally %d images selected:", mResults.size())).append("\n");
            for(String result : mResults) {
                sb.append(result).append("\n");
            }
            tvResults.setText(sb.toString());
        }
    }
    super.onActivityResult(requestCode, resultCode, data);
}

5. Q&A:

Issue 1:

android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class com.facebook.drawee.view.SimpleDraweeView

Solution: make sure Fresco is initialized in app properly.

android:name=".DemoApplication"
...
Fresco.initialize(getApplicationContext());

Issue 2:

App crash while loading large amount of images

Solution: disable hardware acceleration for activity

<activity
    android:name="com.zfdang.multiple_images_selector.ImagesSelectorActivity"
    android:hardwareAccelerated="false"
    android:configChanges="orientation|screenSize"/>

License

Multiple-Images-Selector is MIT-licensed.

About

Easy-to-use library to select images in Android application

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages