kwmax / PhotoPicker

Android 照片选择器

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PhotoPicker

Android 照片选择器

简书:PhotoPicker

各位读者来点Star支持一下吧

参考项目:

PhotoPicker功能介绍

  • 自定义图片加载方式
  • 图片单选、多选
  • 图片预览
  • 自定义主题颜色
  • 集成UCrop裁剪

效果预览

01.png 02.png 03.png 04.png send.gif circleimage.gif lookbigimage.gif

用法

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
        jcenter()
    }
}

在APP目录下的build.gradle中添加依赖

    compile 'com.github.yudu233:PhotoPicker:1.5.0'
    

AndroidManifest.xml 配置

       <activity
                   android:name="com.rain.library.ui.PhotoPickActivity"
                   android:theme="@style/PhoAppTheme.AppTheme"/>

               <activity
                   android:name="com.rain.library.ui.PhotoPreviewActivity"
                   android:theme="@style/PhoAppTheme.AppTheme"/>

               <activity
                   android:name="com.yalantis.ucrop.UCropActivity"
                   android:screenOrientation="portrait"
                   android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>

               <activity
                   android:name=".lookBigImage.ViewBigImageActivity"
                   android:screenOrientation="portrait"
                   android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>

               //适配android7.0
               <provider
                   android:name="android.support.v4.content.FileProvider"
                   android:authorities="@string/file_provider_authorities"
                   android:exported="false"
                   android:grantUriPermissions="true">
                   <meta-data
                       android:name="android.support.FILE_PROVIDER_PATHS"
                       android:resource="@xml/file_provider_paths"/>
               </provider>
                  

照片选择器配置

   new PhotoPickConfig
       .Builder(MainActivity.this)
       .imageLoader(new GlideImageLoader())                //图片加载方式,支持任意第三方图片加载库
       .spanCount(PhotoPickConfig.GRID_SPAN_COUNT)         //相册列表每列个数,默认为3
       .pickMode(PhotoPickConfig.MODE_PICK_SINGLE)         //设置照片选择模式为单选,默认为单选
       .maxPickSize(PhotoPickConfig.DEFAULT_CHOOSE_SIZE)   //多选时可以选择的图片数量,默认为1张
       .showCamera(true)           //是否展示相机icon,默认展示
       .clipPhoto(true)            //是否开启裁剪照片功能,默认关闭
       .clipCircle(false)          //是否裁剪方式为圆形,默认为矩形
       .build();

配置说明

imageLoader(new GlideImageLoader()) 图片加载方式,可以自定义支持Glide、Piscasso、Fresco

spanCount() 设置相册列表每列展示个数,默认为3列

pickMode() 设置照片选择模式(单选、多选),默认为单选 maxPickSize() 多选时可以选择的图片数量,当pickMode为多选时默认为9张,单选默认为1

showCamera() 是否展示相机icon,默认展示,当pickMode为多选时默认不展示

clipPhoto() 是否开启裁剪照片功能,默认关闭,需手动开启

clipCircle() 裁剪方式为是否圆形,默认为矩形,设置圆形适用于设置头像

自定义主题颜色,同步App主题

自定义FileProvider地址

        //自定义FileProvider地址(同一地址一部手机唯一)
        PhotoPick.setAuthority(getString(R.string.file_provider_authorities));
        在Application里初始化PhotoPick
        //默认颜色:橘色android.R.color.holo_red_light
        PhotoPick.init(getApplicationContext());
        //自定义主题颜色
        PhotoPick.init(context, android.R.color.holo_red_light);    
        

Activity 回调

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode != RESULT_OK) return;

        switch (requestCode) {
            case PhotoPickConfig.PICK_SINGLE_REQUEST_CODE:      //单选不裁剪
                String path = data.getStringExtra(PhotoPickConfig.EXTRA_SINGLE_PHOTO);
                Log.e("单选", path);
                mContent.setText(path);
                break;
            case PhotoPickConfig.PICK_MORE_REQUEST_CODE:        //多选
                ArrayList<String> photoLists = data.getStringArrayListExtra(PhotoPickConfig.EXTRA_STRING_ARRAYLIST);
                if (photoLists != null && !photoLists.isEmpty()) {
                    for (int i = 0; i < photoLists.size(); i++) {
                        Log.e("多选", photoLists.get(i) + "========");
                        mContent.setText(builder.append(photoLists.get(i) + "\n"));
                    }
                }
                break;

            case PhotoPickConfig.PICK_CLIP_REQUEST_CODE:    //裁剪
                Uri resultUri = Uri.parse(data.getStringExtra(PhotoPickConfig.EXTRA_CLIP_PHOTO));
                try {
                    InputStream input = getContentResolver().openInputStream(resultUri);
                    int size = input.available();
                    Log.e("裁剪", resultUri.toString() + "========" + FileSizeUtils.FormetFileSize(size));
                    mContent.setText(resultUri.toString() + FileSizeUtils.FormetFileSize(size));
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;
        }
    }
    

使用的第三方库

PhotoView slidinguppanel ucrop

有问题可以添加QQ:19880794

About

Android 照片选择器


Languages

Language:Java 100.0%