Android 本地图片相册选择

编程入门 行业动态 更新时间:2024-10-27 00:24:14

Android 本地图片<a href=https://www.elefans.com/category/jswz/34/1767345.html style=相册选择"/>

Android 本地图片相册选择

    // PictureSelector 基础 (必须)implementation 'io.github.lucksiege:pictureselector:v3.10.1'//图片压缩implementation 'com.github.nanchen2251:CompressHelper:1.0.5'

涉及到了 图片压缩 文件压缩 还有文件选择适配

package com.as.zqfjavasample.wxui;import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;import androidx.annotation.NonNull;
import androidx.annotation.Nullable;import com.as.zqfjavasample.R;
import com.as.zqfjavasample.base.base_ui.activity.BaseActivity;
import com.as.zqfjavasample.base.glide_utils.GlideEngine;
import com.as.zqfjavasample.base.http.BeanCallback_NoDialog;
import com.as.zqfjavasample.databinding.ActivityWxShowDetailBinding;
import com.blankj.utilcode.constant.PermissionConstants;
import com.blankj.utilcode.util.BarUtils;
import com.blankj.utilcode.util.PermissionUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.engine.UriToFileTransformEngine;
import com.luck.picture.lib.entity.LocalMedia;
import com.luck.picture.lib.interfaces.OnKeyValueResultCallbackListener;
import com.luck.picture.lib.utils.SandboxTransformUtils;
import com.luliang.shapeutils.DevShapeUtils;
import com.luliang.shapeutils.shape.DevShape;
import com.lzy.okgo.OkGo;
import com.nanchen.compresshelper.CompressHelper;import org.json.JSONObject;import java.io.File;
import java.util.ArrayList;
import java.util.List;import okhttp3.Response;public class WxShowDetailActivity extends BaseActivity<ActivityWxShowDetailBinding> {private static final int REQUEST_CODE_CHOOSE2 = 200;private static final int REQUEST_CODE_CHOOSE = 100;private String path;private String path1;private int type;
//    private File file0;
//    private File file1;@Overrideprotected int getLayoutId() {return R.layout.activity_wx_show_detail;}@Overrideprotected void getBundleExtras(Bundle extras) {type = extras.getInt("type");}@Overrideprotected void initBar() {super.initBar();BarUtils.setStatusBarLightMode(this, true);BarUtils.setStatusBarColor(this, Color.parseColor("#00aaff"));}@Overrideprotected void initView() {DevShapeUtils.shape(DevShape.RECTANGLE).radius(12).solid("#00aaff").into(mViewBinding.tvSave);List<String> names = new ArrayList<String>() {{add("领悟学堂");add("吉祥物");add("直播");}};mViewBinding.tvName.setText(names.get(type - 1));}@Overrideprotected void initData() {mViewBinding.ivUpload.setOnClickListener(new View.OnClickListener() {@SuppressLint("WrongConstant")@Overridepublic void onClick(View v) {PermissionUtils.permission(PermissionConstants.STORAGE).callback(new PermissionUtils.SimpleCallback() {@Overridepublic void onGranted() {PictureSelector.create(WxShowDetailActivity.this).openGallery(SelectMimeType.ofImage()).setMaxSelectNum(1).setImageEngine(GlideEngine.createGlideEngine()).setSandboxFileEngine(new UriToFileTransformEngine() {@Overridepublic void onUriToFileAsyncTransform(Context context, String srcPath, String mineType, OnKeyValueResultCallbackListener call) {if (call != null) {String sandboxPath = SandboxTransformUtils.copyPathToSandbox(context, srcPath, mineType);call.onCallback(srcPath,sandboxPath);}}}).forResult(REQUEST_CODE_CHOOSE);}@Overridepublic void onDenied() {}}).request();}});mViewBinding.ivUploadShare.setOnClickListener(new View.OnClickListener() {@SuppressLint("WrongConstant")@Overridepublic void onClick(View v) {PermissionUtils.permission(PermissionConstants.STORAGE).callback(new PermissionUtils.SimpleCallback() {@Overridepublic void onGranted() {PictureSelector.create(WxShowDetailActivity.this).openGallery(SelectMimeType.ofImage()).setMaxSelectNum(1).setImageEngine(com.as.zqfjavasample.base.glide_utils.GlideEngine.createGlideEngine()).setSandboxFileEngine(new UriToFileTransformEngine() {@Overridepublic void onUriToFileAsyncTransform(Context context, String srcPath, String mineType, OnKeyValueResultCallbackListener call) {if (call != null) {String sandboxPath = SandboxTransformUtils.copyPathToSandbox(context, srcPath, mineType);call.onCallback(srcPath,sandboxPath);}}}).forResult(REQUEST_CODE_CHOOSE2);}@Overridepublic void onDenied() {}}).request();}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (resultCode == -1 && data != null) {switch (requestCode) {case REQUEST_CODE_CHOOSE:List<LocalMedia> selectList = PictureSelector.obtainSelectorList(data);if (selectList.size() > 0) {LocalMedia localMedia = selectList.get(selectList.size() - 1);path = localMedia.getSandboxPath();Glide.with(WxShowDetailActivity.this).asBitmap().load(path).into(new SimpleTarget<Bitmap>() {@Overridepublic void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {//将要保存图片的路径
//                                        file0 = new File(""+System.currentTimeMillis());
//                                        try {
//                                            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file0));
//                                            resource.compress(Bitmap.CompressFormat.JPEG, 100, bos);
//                                            bos.flush();
//                                            bos.close();
//                                        } catch (IOException e) {
//                                            e.printStackTrace();
//                                        }int dimension = (int) getResources().getDimension(R.dimen.dp180);int intrinsicWidth = resource.getWidth();int intrinsicHeight = resource.getHeight();mViewBinding.ivUpload.getLayoutParams().width = dimension;mViewBinding.ivUpload.getLayoutParams().height = dimension * intrinsicHeight / intrinsicWidth;mViewBinding.ivUpload.setImageBitmap(resource);}});}break;case REQUEST_CODE_CHOOSE2:List<LocalMedia> selectList2 = PictureSelector.obtainSelectorList(data);if (selectList2.size() > 0) {LocalMedia localMedia = selectList2.get(selectList2.size() - 1);path1 = localMedia.getSandboxPath();System.out.println(" xxxx  :"+path1);Glide.with(WxShowDetailActivity.this).asBitmap().load(path1).into(new SimpleTarget<Bitmap>() {@Overridepublic void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {int dimension = (int) getResources().getDimension(R.dimen.dp180);int intrinsicWidth = resource.getWidth();int intrinsicHeight = resource.getHeight();mViewBinding.ivUploadShare.getLayoutParams().width = dimension;mViewBinding.ivUploadShare.getLayoutParams().height = dimension * intrinsicHeight / intrinsicWidth;mViewBinding.ivUploadShare.setImageBitmap(resource);}});}break;}}}@Overrideprotected void initListener() {mViewBinding.ivback.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});mViewBinding.tvSave.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String strJieshao = mViewBinding.editJieshao.getText().toString();
//                if(TextUtils.isEmpty(strJieshao)){
//                    ToastUtils.showShort("请输入文字介绍");
//                    return;
//                }if (TextUtils.isEmpty(path)) {ToastUtils.showShort("请上传图片");return;}String strUrl = mViewBinding.editUrl.getText().toString();if (TextUtils.isEmpty(strUrl)) {ToastUtils.showShort("请输入跳转链接");return;}String strTitle = mViewBinding.editTitle.getText().toString();if (TextUtils.isEmpty(strTitle)) {ToastUtils.showShort("请输入分享标题");return;}String strDesc = mViewBinding.editDesc.getText().toString();if (TextUtils.isEmpty(strDesc)) {ToastUtils.showShort("请输入内容描述");return;}if (TextUtils.isEmpty(path1)) {ToastUtils.showShort("请上传分享图片");return;}System.out.println(" path " + path);System.out.println(" path1 " + path1);ArrayList<File> list = new ArrayList<>();list.add(CompressHelper.getDefault(WxShowDetailActivity.this).compressToFile(new File(path)));ArrayList<File> list1 = new ArrayList<>();list1.add(CompressHelper.getDefault(WxShowDetailActivity.this).compressToFile(new File(path1)));System.out.println(" type " + type);System.out.println(" desc " + strJieshao);System.out.println(" image " + list.get(0));System.out.println(" f_title " + strTitle);System.out.println(" f_content " + strDesc);System.out.println(" f_img " + list1.get(0));System.out.println(" link " + strUrl);OkGo.<Object>post("").params("type", type).params("desc", strJieshao).addFileParams("image", list).params("f_title", strTitle).params("f_content", strDesc).addFileParams("f_img", list1).params("link", strUrl).tag(this).execute(new BeanCallback_NoDialog<Object>() {@Overridepublic Object convertResponse(Response response) throws Throwable {String string = response.body().string();System.out.println(" string  : " + string);JSONObject jsonObject = new JSONObject(string);int code = jsonObject.getInt("code");if (code == 200) {runOnUiThread(new Runnable() {@Overridepublic void run() {WxShowDetailActivity.this.finish();}});} else {String message = jsonObject.getString("message");ToastUtils.showShort(message + "");}return super.convertResponse(response);}});}});}
}

更多推荐

Android 本地图片相册选择

本文发布于:2023-07-01 07:47:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/972826.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:相册   图片   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!