栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android(安卓) 选择或者拍摄图片,可设置图片数量(kotlin)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android(安卓) 选择或者拍摄图片,可设置图片数量(kotlin)

格式
    • 配置权限
    • 导入依赖
    • 选择图片

你好!

配置权限
  
 
导入依赖
  //图片选择
  implementation 'io.github.lucksiege:pictureselector:v2.7.3-rc08'
  //图片载入
  implementation 'com.github.bumptech.glide:glide:4.12.0'

选择图片
private fun checkPic() {
	//maxSelectNum()选择图片的数量
    PictureSelector.create(this)
      .openGallery(PictureMimeType.ofImage())
      .imageEngine(GlideEngine.createGlideEngine())
      .maxSelectNum(1)
      .forResult(PictureConfig.CHOOSE_REQUEST);
  }

然后会在onActivityResult()中有回调

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (resultCode == RESULT_OK) {
      when (requestCode) {
        PictureConfig.CHOOSE_REQUEST -> {
          var result = PictureSelector.obtainMultipleResult(data) as ArrayList
          if (result.size <= 0) {
            return
          }
          Glide.with(this).load(result[0].path).into(ciImag)

          Log.e(
            "cxx",
            "result:"+
            result.size.toString()+
            "--mUpdateUserMsgImgHeadCir:"+
            result[0].path
          )
        }
      }
    }
  }

GlideEngine.java

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.target.BitmapImageViewTarget;
import com.bumptech.glide.request.target.ImageViewTarget;
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;
import com.script.androiddemoapplication.R;


public class GlideEngine implements ImageEngine {

  
  @Override
  public void loadImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
    if (!ImageLoaderUtils.assertValidRequest(context)) {
      return;
    }
    Glide.with(context)
      .load(url)
      .into(imageView);
  }

  
  @Override
  public void loadImage(@NonNull Context context, @NonNull String url,
                        @NonNull ImageView imageView,
                        SubsamplingScaleImageView longImageView, onImageCompleteCallback callback) {
    if (!ImageLoaderUtils.assertValidRequest(context)) {
      return;
    }
    Glide.with(context)
      .asBitmap()
      .load(url)
      .into(new ImageViewTarget(imageView) {
        @Override
        public void onLoadStarted(@Nullable Drawable placeholder) {
          super.onLoadStarted(placeholder);
          if (callback != null) {
            callback.onShowLoading();
          }
        }

        @Override
        public void onLoadFailed(@Nullable Drawable errorDrawable) {
          super.onLoadFailed(errorDrawable);
          if (callback != null) {
            callback.onHideLoading();
          }
        }

        @Override
        protected void setResource(@Nullable Bitmap resource) {
          if (callback != null) {
            callback.onHideLoading();
          }
          if (resource != null) {
            boolean eqLongImage = MediaUtils.isLongImg(resource.getWidth(),
              resource.getHeight());
            longImageView.setVisibility(eqLongImage ? View.VISIBLE : View.GONE);
            imageView.setVisibility(eqLongImage ? View.GONE : View.VISIBLE);
            if (eqLongImage) {
              // 加载长图
              longImageView.setQuickScaleEnabled(true);
              longImageView.setZoomEnabled(true);
              longImageView.setDoubleTapZoomDuration(100);
              longImageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP);
              longImageView.setDoubleTapZoomDpi(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER);
              longImageView.setImage(ImageSource.cachedBitmap(resource),
                new ImageViewState(0, new PointF(0, 0), 0));
            } else {
              // 普通图片
              imageView.setImageBitmap(resource);
            }
          }
        }
      });
  }

  
  @Override
  public void loadImage(@NonNull Context context, @NonNull String url,
                        @NonNull ImageView imageView,
                        SubsamplingScaleImageView longImageView) {
    if (!ImageLoaderUtils.assertValidRequest(context)) {
      return;
    }
    Glide.with(context)
      .asBitmap()
      .load(url)
      .into(new ImageViewTarget(imageView) {
        @Override
        protected void setResource(@Nullable Bitmap resource) {
          if (resource != null) {
            boolean eqLongImage = MediaUtils.isLongImg(resource.getWidth(),
              resource.getHeight());
            longImageView.setVisibility(eqLongImage ? View.VISIBLE : View.GONE);
            imageView.setVisibility(eqLongImage ? View.GONE : View.VISIBLE);
            if (eqLongImage) {
              // 加载长图
              longImageView.setQuickScaleEnabled(true);
              longImageView.setZoomEnabled(true);
              longImageView.setDoubleTapZoomDuration(100);
              longImageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP);
              longImageView.setDoubleTapZoomDpi(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER);
              longImageView.setImage(ImageSource.cachedBitmap(resource),
                new ImageViewState(0, new PointF(0, 0), 0));
            } else {
              // 普通图片
              imageView.setImageBitmap(resource);
            }
          }
        }
      });
  }

  
  @Override
  public void loadFolderImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
    if (!ImageLoaderUtils.assertValidRequest(context)) {
      return;
    }
    Glide.with(context)
      .asBitmap()
      .load(url)
      .override(180, 180)
      .centerCrop()
      .sizeMultiplier(0.5f)
      .placeholder(R.drawable.picture_image_placeholder)
      .into(new BitmapImageViewTarget(imageView) {
        @Override
        protected void setResource(Bitmap resource) {
          RoundedBitmapDrawable circularBitmapDrawable =
            RoundedBitmapDrawableFactory.
              create(context.getResources(), resource);
          circularBitmapDrawable.setCornerRadius(8);
          imageView.setImageDrawable(circularBitmapDrawable);
        }
      });
  }


  
  @Override
  public void loadAsGifImage(@NonNull Context context, @NonNull String url,
                             @NonNull ImageView imageView) {
    if (!ImageLoaderUtils.assertValidRequest(context)) {
      return;
    }
    Glide.with(context)
      .asGif()
      .load(url)
      .into(imageView);
  }

  
  @Override
  public void loadGridImage(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView) {
    if (!ImageLoaderUtils.assertValidRequest(context)) {
      return;
    }
    Glide.with(context)
      .load(url)
      .override(200, 200)
      .centerCrop()
      .placeholder(R.drawable.picture_image_placeholder)
      .into(imageView);
  }


  private GlideEngine() {
  }

  private static GlideEngine instance;

  public static GlideEngine createGlideEngine() {
    if (null == instance) {
      synchronized (GlideEngine.class) {
        if (null == instance) {
          instance = new GlideEngine();
        }
      }
    }
    return instance;
  }
}

ImageLoaderUtils.java

import android.app.Activity;
import android.content.Context;
import android.content.ContextWrapper;


public class ImageLoaderUtils {

  public static boolean assertValidRequest(Context context) {
    if (context instanceof Activity) {
      Activity activity = (Activity) context;
      return !isDestroy(activity);
    } else if (context instanceof ContextWrapper){
      ContextWrapper contextWrapper = (ContextWrapper) context;
      if (contextWrapper.getbaseContext() instanceof Activity){
        Activity activity = (Activity) contextWrapper.getbaseContext();
        return !isDestroy(activity);
      }
    }
    return true;
  }

  private static boolean isDestroy(Activity activity) {
    if (activity == null) {
      return true;
    }
    return activity.isFinishing() || activity.isDestroyed();
  }

}

我是入梦,谢谢你的观看我的博客,觉着好用的话,麻烦帮忙点个赞呗,谢谢啦~ 如果有什么错误,请随时联系我噢~QQ:897589417

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396935.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号