FishBun

Additional

Language
Kotlin
Version
1.0.0-alpha03 (Aug 8, 2020)
Created
Nov 6, 2015
Updated
Aug 25, 2020
Owner
Seokwon Jeong (sangcomz)
Contributors
Heejun Byun (bhbfhfb)
Seokwon Jeong (sangcomz)
GwonHyeok
Benjamin Fellous (bunjix)
Cook Chen (reallychenchi)
Woong Jun (mycoboco)
Chris McCabe (modohash)
Radoslav Vitanov (Sh1d0w)
윤영직 (laco-dev)
Rapbong
libliboom
Garami (devgaram)
Mohammed Faiyyaz Khatri (Faiyyaz)
Sangyong Jung (NackUn)
Taehwi Jeong (preludezdev)
kklyoon
16
Activity
Badge
Generate
Download
Source code
APK file

Advertising

FishBun

FishBun is a highly customizable image picker for Android.

What's New in FishBun 1.0.0-alpha03? 🎉

  • Refactoring for rapid development🚀🚀🚀
  • Change PickerSpanCount default value (3->4)
  • target SDK 29 support
    • In API 29 or higher, the camera can be used only in the total image folder.
  • Fix Issue(#215)
  • Change DetailView statusBar color
  • Removed Picasso and added Coil

Customizable Styles

FishBun supports various visual styles and allows fine-tuning for details. Just to show some examples:

Default

Code
FishBun.with(WithActivityActivity.this)
        .setImageAdapter(new GlideAdapter())
        .startAlbum();
Screenshots

Dark

Code
FishBun.with(WithActivityActivity.this)
        .setImageAdapter(new GlideAdapter())
        .setMaxCount(5)
        .setMinCount(3)
        .setPickerSpanCount(5)
        .setActionBarColor(Color.parseColor("#795548"), Color.parseColor("#5D4037"), false)
        .setActionBarTitleColor(Color.parseColor("#ffffff"))
        .setArrayPaths(path)
        .setAlbumSpanCount(2, 3)
        .setButtonInAlbumActivity(false)
        .setCamera(true)
        .exceptGif(true)
        .setReachLimitAutomaticClose(true)
        .setHomeAsUpIndicatorDrawable(ContextCompat.getDrawable(this, R.drawable.ic_custom_back_white))
        .setDoneButtonDrawable(ContextCompat.getDrawable(this, R.drawable.ic_custom_ok))
        .setAllDoneButtonDrawable(ContextCompat.getDrawable(this, R.drawable.ic_custom_ok))
        .setIsUseAllDoneButton(ContextCompat.getDrawable(this, R.drawable.ic_custom_ok))
        .setAllViewTitle("All")
        .setMenuAllDoneText("All Done")
        .setActionBarTitle("FishBun Dark")
        .textOnNothingSelected("Please select three or more!")
        .exceptMimeType(listOf(MimeType.GIF))
        .setSpecifyFolderList(arrayListOf("Screenshots", "Camera"))
        .startAlbum();
Screenshots

Light

Code
FishBun.with(WithActivityActivity.this)
        .setImageAdapter(new GlideAdapter())
        .setPickerCount(50)
        .setPickerSpanCount(4)
        .setActionBarColor(Color.parseColor("#ffffff"), Color.parseColor("#ffffff"), true)
        .setActionBarTitleColor(Color.parseColor("#000000"))
        .setArrayPaths(path)
        .setAlbumSpanCount(1, 2)
        .setButtonInAlbumActivity(true)
        .setCamera(false)
        .exceptGif(true)
        .setReachLimitAutomaticClose(false)
        .setHomeAsUpIndicatorDrawable(ContextCompat.getDrawable(this, R.drawable.ic_arrow_back_black_24dp))
        .setOkButtonDrawable(ContextCompat.getDrawable(this, R.drawable.ic_check_black_24dp))
        .setAllViewTitle("All of your photos")
        .setActionBarTitle("FishBun Light")
        .textOnImagesSelectionLimitReached("You can't select any more.")
        .textOnNothingSelected("I need a photo!")
        .startAlbum();
Screenshots

How to Setup

Fishbun 0.10.0 and above only supports projects that have been migrated to androidx. For more information, read Google's migration guide.

Setting up FishBun requires to add this Gradle configuration:

repositories {
    jcenter()
}

dependencies {
    // Under the Android Plugin 3.0.0. 
    compile 'com.sangcomz:FishBun:1.0.0-alpha02'
    
    compile 'com.squareup.picasso:picasso:2.71828'
    compile 'io.coil-kt:coil:0.11.0'
    or
    compile 'com.github.bumptech.glide:glide:4.9.0'
            
    // Android plugin 3.0.0 or higher.
    implementation 'com.sangcomz:FishBun:1.0.0-alpha03'
    
    implementation 'io.coil-kt:coil:0.11.0'
    or
    implementation 'com.github.bumptech.glide:glide:4.11.0'

} 

and to allow the following permissions in your Manifest:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

How to Use

Use FishBun in an activity:

FishBun.with(YourActivity).setImageAdapter(new GlideAdapter()).startAlbum();

or in a fragment:

FishBun.with(YourFragment).setImageAdapter(new PicassoAdapter()).startAlbum();

and implement OnActivityResult:

protected void onActivityResult(int requestCode, int resultCode,
                                Intent imageData) {
    super.onActivityResult(requestCode, resultCode, imageData);
    switch (requestCode) {
        case FishBun.FISHBUN_REQUEST_CODE:
            if (resultCode == RESULT_OK) {
                // path = imageData.getStringArrayListExtra(Define.INTENT_PATH);
                // you can get an image path(ArrayList<String>) on <0.6.2

                path = imageData.getParcelableArrayListExtra(INTENT_PATH);
                // you can get an image path(ArrayList<Uri>) on 0.6.2 and later
                break;
            }
    }
}

Various customizable features can be controlled by chained methods as in:

FishBun.with(YourActivity or YourFragment)
        .setImageAdapter(new GlideAdapter())
        .setIsUseDetailView(false)
        .setPickerCount(5) //Deprecated
        .setMaxCount(5)
        .setMinCount(1)
        .setPickerSpanCount(6)
        .setActionBarColor(Color.parseColor("#795548"), Color.parseColor("#5D4037"), false)
        .setActionBarTitleColor(Color.parseColor("#ffffff"))
        .setArrayPaths(path)
        .setAlbumSpanCount(2, 4)
        .setButtonInAlbumActivity(false)
        .setCamera(true)
        .setReachLimitAutomaticClose(true)
        .setHomeAsUpIndicatorDrawable(ContextCompat.getDrawable(this, R.drawable.ic_custom_back_white))
        .setOkButtonDrawable(ContextCompat.getDrawable(this, R.drawable.ic_custom_ok))
        .setAllViewTitle("All")
        .setActionBarTitle("Image Library")
        .textOnImagesSelectionLimitReached("Limit Reached!")
        .textOnNothingSelected("Nothing Selected")
        .setSelectCircleStrokeColor(Color.BLACK)
        .isStartInAllView(false)
        .exceptMimeType(listOf(MimeType.GIF))
        .setSpecifyFolderList(arrayListOf("Screenshots", "Camera"))
        .startAlbum();

attribute

      Method Name       Description                                 Default Value  
setSelectedImages Set the already selected image null
setMaxCount Maximum number of images selected 10
setMinCount Minimum number of images selected 1
setRequestCode Set RequestCode 27
setReachLimitAutomaticClose Picker automatically ends when the number of images is selected false
exceptMimeType Set file type to exclude(gif, png, jpeg, bmp, webp) NONE
setAlbumThumbnailSize Thumbnail size of album screen 70dp
setPickerSpanCount Set the picker's span count 4
setActionBarColor Set background color of action bar, statusBar color, set light theme #3F51B5, #303F9F, false
setActionBarTitleColor Set the title color of the action bar #ffffff
textOnNothingSelected Message when nothing is selected "There is no selected image."
textOnImagesSelectionLimitReached Message when the image is already all selected "Selection full. Deselect an image to choose another."
setButtonInAlbumActivity Set Selected button visibility in album screen false
setAlbumSpanCount Set the album's span count 1, 2
setAlbumSpanCountOnlyLandscape Set the album's span count when landscape 2
setAlbumSpanCountOnlPortrait Set the album's span count when portrait 1
setAllViewTitle Set the name of all views "All view"
setActionBarTitle Set the title of the action bar "Album"
setHomeAsUpIndicatorDrawable Customizing back button of the action bar null
setDoneButtonDrawable Customizing done button of the action bar null
setAllDoneButtonDrawable Customizing all done button of the action bar null
setIsUseAllDoneButton Set whether to use the Done button false
setMenuDoneText Set text for Done button null
setMenuAllDoneText Set text for All Done button null
setMenuTextColor Set text color for menu Integer.MAX_VALUE
setIsUseDetailView Set whether to use detail screen false
setIsShowCount Set whether to show counting numbers false
setSelectCircleStrokeColor Set select circle color #c1ffffff
isStartInAllView Set to start with all view false
setSpecifyFolderList Set folder to show NONE
hasCameraInPickerPage Set whether to use the camera button on picker screen false

Android M Permission

Running on Android M, FishBun checks if it has proper permission for you before reading an external storage.

Apps using FishBun

If you are using this library in your app, let me know.

Project Name Result Screen
Pandaz(unavailable now)

Multi photo resize compress crop in batch PicTools

Contribution

Any suggestions or contributions would be welcomed. CONTRIBUTING

Feedback

Bug reports and feature requests can be submitted here (please read the instructions on how to report a bug and request feature).

License

Copyright 2019 Seokwon Jeong

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.