好用的本地图片选择工具:PictureSelector

PictureSelector是一个方便的本地图片和视频选择库,提供了预览、相机调用等功能,简化了开发者的工作。使用步骤包括导入项目、配置清单文件、创建file_paths XML、编写图片加载引擎代码等。它支持选择图片/视频、单独拍照/录制视频,还有预览、缓存清理等实用功能。在实际应用中,需要注意如华为Android 7.0设备上可能出现的拍照后图片缺失问题。
摘要由CSDN通过智能技术生成

简介:
PictureSelector是一个帮助快速选择本地图片/视频的工具,具有预览,调用相机等功能,帮助开发者省去了大量麻烦事,实现快速获取本地图片/视频;
pictureSelector使用效果图

1.导入项目

ependencies {
   
	implementation "com.github.LuckSiege.PictureSelector:picture_library:v2.5.9"
}
android {
   
	//解决PictureSelector包冲突问题,有冲突问题时再加上
    configurations {
   
        all*.exclude group: 'com.google.guava', module: 'listenablefuture'
    }
}
allprojects {
   
   repositories {
   
      jcenter()
      maven {
    url 'https://jitpack.io' }
   }
}

2.清单文件中添加打开相机的代码

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <!--        用于打开相机-->
        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}.fileProvider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
        </provider>

3.需要在res中新建一个xml包,新建文件file_paths;

<?xml version="1.0" encoding="utf-8"?>
<paths>

    <external-path
        name="files_root"
        path="Android/data/com.chat.usercenter/" />

    <external-path
        name="external_storage_root"
        path="." />
</paths>

4.编写图片加载引擎代码:

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.PointF;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.graphics.drawable.RoundedBitmapDrawable;
import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.BitmapImageViewTarget;
import com.bumptech.glide.request.target.ImageViewTarget;
import com.chat.base.R;
import com.luck.picture.lib.engine.ImageEngine;
import com.luck.picture.lib.listener.OnImageCompleteCallback;
import com.luck.picture.lib.tools.MediaUtils;
import com.luck.picture.lib.widget.longimage.ImageSource;
import com.luck.picture.lib.widget.longimage.ImageViewState;
import com.luck.picture.lib.widget.longimage.SubsamplingScaleImageView;


public class GlideEngine implements ImageEngine {
   

    /**
     * 加载图片
     *
     * @param context
     * @param url
     * @param imageView
     */
    @Override
    public void loadImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
   
        Glide.with(context)
                .load(url)
                .into(imageView);
    }

    /**
     * 加载网络图片适配长图方案
     * # 注意:此方法只有加载网络图片才会回调
     *
     * @param context
     * @param url
     * @param imageView
     * @param longImageView
     * @param callback      网络图片加载回调监听 {link after version 2.5.1 Please use the #OnImageCompleteCallback#}
     */
    @Override
    public void loadImage(@NonNull Context context, @NonNull String url,
                          @NonNull ImageView imageView,
                          SubsamplingScaleImageView longImageView, OnImageCompleteCallback callback) {
   
        Glide.with(context)
                .asBitmap()
                .load(url)
                .into(new ImageViewTarget<Bitmap>(imageView) {
   
                    @Override
                    public void onLoadStarted(@Nullable Drawable placeholder) {
   
                        super.onLoadStarted(placeholder);
                        if (callback != null) {
   
                            callback.onShowLoading();
                        }
                    }

                    @Override
    
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值