MCPcopy Index your code
hub / github.com/Lichenwei-Dev/ImagePicker

github.com/Lichenwei-Dev/ImagePicker @2.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 2.0.0 ↗ · + Follow
243 symbols 543 edges 32 files 94 documented · 39%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

高仿微信图片选择器

注意开发细节,尽可能的做到加载速度最快,目前支持图片,视频单选,多选,多文件夹切换,大图预览,自定义图片加载器等功能。

效果图:

相比1.0.+版本,2.0版本进行了代码的大块重构,注重模块间的代码解耦,简化了配置,将兼容Android7.0所需要的FileProvider下沉到库中完成,不再需要开发者配置,并对GIF图,视频,大图预览等功能有了支持。

使用方式:

1、如何 在项目中引入该图片加载库:

//gradle版本在3.0以下引入此行
compile 'com.lcw.library:imagepicker:2.0.0'

//gradle版本在3.0以上引入此行
implementation 'com.lcw.library:imagepicker:2.0.0'

2、需要在AndroidManifest.xml里声明组件:

<application>
....

        <activity
            android:name="com.lcw.library.imagepicker.activity.ImagePickerActivity"
            android:screenOrientation="portrait" />

         <activity
            android:name="com.lcw.library.imagepicker.activity.ImagePreActivity"
            android:screenOrientation="portrait" />
...
</application>

3、一行代码调用:

                ImagePicker.getInstance()
                        .setTitle("标题")//设置标题
                        .showCamera(true)//设置是否显示拍照按钮
                        .showImage(true)//设置是否展示图片
                        .showVideo(true)//设置是否展示视频
                        .setMaxCount(9)//设置最大选择图片数目(默认为1,单选)
                        .setImagePaths(mImageList)//保存上一次选择图片的状态,如果不需要可以忽略
                        .setImageLoader(new GlideLoader())//设置自定义图片加载器
                        .start(MainActivity.this, REQUEST_SELECT_IMAGES_CODE);//REQEST_SELECT_IMAGES_CODE为Intent调用的requestCode

4、如何获取选中的图片集合:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_SELECT_IMAGES_CODE && resultCode == RESULT_OK) {
            List<String> imagePaths = data.getStringArrayListExtra(ImagePicker.EXTRA_SELECT_IMAGES);
        }
    }

5、如何自定义图片加载器(让开发者更加灵活的定制,只需要去实现ImageLoader接口即可):

public class GlideLoader implements ImageLoader {
    //to do something 可以参考Demo用法
}

6、关于权限,6.0以后危险权限需要动态申请,不了解的同学可以看下我之前写过的一篇文章《适配Android6.0动态权限管理》,由于国内各大厂商的ROM存在差异化,需要经常处理一些兼容上的问题,也有比较成熟的开源库支持,为了简洁,本Library就不提供此功能,请开发者自行处理,所需权限:

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

版本会持续迭代,欢迎大家给建议。。。(欢迎Star,欢迎Fork)

Extension points exported contracts — how you extend this code

ImageLoader (Interface)
开放图片加载接口 Create by: chenWei.li Date: 2018/8/30 Time: 下午11:07 Email: lichenwei.me@foxmail.com [2 implementers]
imagepicker/src/main/java/com/lcw/library/imagepicker/utils/ImageLoader.java
MediaLoadCallback (Interface)
图片扫描数据回调接口 Create by: chenWei.li Date: 2018/8/23 Time: 下午9:55 Email: lichenwei.me@foxmail.com [2 implementers]
imagepicker/src/main/java/com/lcw/library/imagepicker/listener/MediaLoadCallback.java
OnImageFolderChangeListener (Interface)
(no doc) [1 implementers]
imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImageFoldersAdapter.java
OnItemClickListener (Interface)
(no doc) [1 implementers]
imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImagePickerAdapter.java

Core symbols most depended-on inside this repo

getInstance
called by 23
imagepicker/src/main/java/com/lcw/library/imagepicker/manager/ConfigManager.java
getInstance
called by 16
imagepicker/src/main/java/com/lcw/library/imagepicker/manager/SelectionManager.java
getPath
called by 10
imagepicker/src/main/java/com/lcw/library/imagepicker/data/MediaFile.java
getDateToken
called by 5
imagepicker/src/main/java/com/lcw/library/imagepicker/data/MediaFile.java
getImageLoader
called by 5
imagepicker/src/main/java/com/lcw/library/imagepicker/manager/ConfigManager.java
getSelectPaths
called by 5
imagepicker/src/main/java/com/lcw/library/imagepicker/manager/SelectionManager.java
getInstance
called by 4
imagepicker/src/main/java/com/lcw/library/imagepicker/utils/DataUtil.java
getMediaFileList
called by 4
imagepicker/src/main/java/com/lcw/library/imagepicker/data/MediaFolder.java

Shape

Method 203
Class 36
Interface 4

Languages

Java100%

Modules by API surface

imagepicker/src/main/java/com/lcw/library/imagepicker/activity/ImagePickerActivity.java28 symbols
imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImagePickerAdapter.java21 symbols
imagepicker/src/main/java/com/lcw/library/imagepicker/manager/ConfigManager.java19 symbols
imagepicker/src/main/java/com/lcw/library/imagepicker/data/MediaFile.java13 symbols
imagepicker/src/main/java/com/lcw/library/imagepicker/data/MediaFolder.java12 symbols
imagepicker/src/main/java/com/lcw/library/imagepicker/activity/ImagePreActivity.java12 symbols
imagepicker/src/main/java/com/lcw/library/imagepicker/ImagePicker.java12 symbols
imagepicker/src/main/java/com/lcw/library/imagepicker/manager/SelectionManager.java11 symbols
imagepicker/src/main/java/com/lcw/library/imagepicker/adapter/ImageFoldersAdapter.java11 symbols
imagepicker/src/main/java/com/lcw/library/imagepicker/loader/AbsMediaScanner.java9 symbols
imagepicker/src/main/java/com/lcw/library/imagepicker/loader/VideoScanner.java8 symbols
imagepicker/src/main/java/com/lcw/library/imagepicker/loader/ImageScanner.java8 symbols

For agents

$ claude mcp add ImagePicker \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact