优化头像裁减效果

This commit is contained in:
BA7LZD 2020-05-27 07:02:41 +08:00
parent 3a1c3798a5
commit 8173441a3f

View File

@ -2,22 +2,29 @@ package com.yuxihan.sdu.ui.info;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.bumptech.glide.Glide;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.entity.LocalMedia;
import com.luck.picture.lib.listener.OnResultCallbackListener;
import com.yuxihan.sdu.R;
import com.yuxihan.sdu.comm.BaseActivity;
import com.yuxihan.sdu.comm.Const;
import com.yuxihan.sdu.comm.util.GlideEngine;
import com.yuxihan.sdu.comm.widget.ActionSheetDialog;
public class InfoEditActivity extends BaseActivity {
import java.util.List;
import de.hdodenhof.circleimageview.CircleImageView;
public class InfoEditActivity extends BaseActivity {
private static final String TAG = "InfoEditActivity";
private Context mContext = InfoEditActivity.this;
CircleImageView civ_head;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -26,6 +33,7 @@ public class InfoEditActivity extends BaseActivity {
}
private void initView() {
civ_head = findViewById(R.id.civ_head);
String[] fileFrom = new String[]{"相机", "图库"};
//头像控件点击事件
findViewById(R.id.rl_head_icon).setOnClickListener(new View.OnClickListener() {
@ -73,8 +81,9 @@ public class InfoEditActivity extends BaseActivity {
.maxSelectNum(1)// 最大图片选择数量
.minSelectNum(1)// 最小选择数量
.isCamera(false)// 是否显示拍照按钮
.imageSpanCount(5)// 每行显示个数
.compress(false)// 是否压缩 true or false
.imageSpanCount(4)// 每行显示个数
.isCompress(true)// 是否压缩 true or false
.compressQuality(60)
.maxSelectNum(1)// 最大图片选择数量
.isZoomAnim(true)// 图片列表点击 缩放效果 默认true
.synOrAsy(true)//同步true或异步false 压缩 默认同步
@ -82,7 +91,12 @@ public class InfoEditActivity extends BaseActivity {
//.selectionMedia(picList)// 是否传入已选图片
.minimumCompressSize(100)// 小于100kb的图片不压缩
.loadImageEngine(GlideEngine.createGlideEngine())
.forResult(Const.PIC_OK);//结果回调onActivityResult code
.isEnableCrop(true)//是否开启裁剪
.circleDimmedLayer(true)// 是否开启圆形裁剪
.showCropGrid(false)
.showCropFrame(false)
.withAspectRatio(1,1)
.forResult(new PicResultCallback());//结果回调
}
@ -93,16 +107,82 @@ public class InfoEditActivity extends BaseActivity {
.openCamera(PictureMimeType.ofImage())
.theme(R.style.picture_white_style)// 主题样式设置 具体参考 values/styles
.minSelectNum(1)// 最小选择数量
.compress(false)
.isCompress(true)
.compressQuality(60)
.selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选
.isCamera(false)// 是否显示拍照按钮
.glideOverride(120, 120)// glide 加载宽高越小图片列表越流畅但会影响列表图片浏览的清晰度
//.selectionMedia(picList)// 是否传入已选图片
.imageSpanCount(5)// 每行显示个数
.imageSpanCount(4)// 每行显示个数
.maxSelectNum(1)// 最大图片选择数量
.isZoomAnim(true)// 图片列表点击 缩放效果 默认true
.synOrAsy(true)//同步true或异步false 压缩 默认同步
.minimumCompressSize(100)// 小于100kb的图片不压缩
.forResult(Const.CAMERA_OK);
.isEnableCrop(true)//是否开启裁剪
.circleDimmedLayer(true)// 是否开启圆形裁剪
.showCropGrid(false)
.showCropFrame(false)
.withAspectRatio(1,1)
.forResult(new CameraResultCallback());//结果回调
}
/**
* 图库返回结果回调
*/
private class PicResultCallback implements OnResultCallbackListener<LocalMedia> {
@Override
public void onResult(List<LocalMedia> result) {
for (LocalMedia media : result) {
Log.i(TAG, "PicResultCallback");
Log.i(TAG, "是否压缩:" + media.isCompressed());
Log.i(TAG, "压缩:" + media.getCompressPath());//取这个值
Log.i(TAG, "原图:" + media.getPath());
Log.i(TAG, "是否裁剪:" + media.isCut());
Log.i(TAG, "裁剪:" + media.getCutPath());
Log.i(TAG, "是否开启原图:" + media.isOriginal());
Log.i(TAG, "原图路径:" + media.getOriginalPath());
Log.i(TAG, "Android Q 特有Path:" + media.getAndroidQToPath());
Log.i(TAG, "宽高: " + media.getWidth() + "x" + media.getHeight());
Log.i(TAG, "Size: " + media.getSize());
//TODO:上传 media.getCompressPath()
Glide.with(InfoEditActivity.this).load(media.getCompressPath()).into(civ_head);
}
}
@Override
public void onCancel() {
Log.i(TAG, "PictureSelector Cancel");
}
}
/**
* 相册返回结果回调
*/
private class CameraResultCallback implements OnResultCallbackListener<LocalMedia> {
@Override
public void onResult(List<LocalMedia> result) {
for (LocalMedia media : result) {
Log.i(TAG, "CameraResultCallback");
Log.i(TAG, "是否压缩:" + media.isCompressed());
Log.i(TAG, "压缩:" + media.getCompressPath());
Log.i(TAG, "原图:" + media.getPath());
Log.i(TAG, "是否裁剪:" + media.isCut());
Log.i(TAG, "裁剪:" + media.getCutPath());
Log.i(TAG, "是否开启原图:" + media.isOriginal());
Log.i(TAG, "原图路径:" + media.getOriginalPath());
Log.i(TAG, "Android Q 特有Path:" + media.getAndroidQToPath());
Log.i(TAG, "宽高: " + media.getWidth() + "x" + media.getHeight());
Log.i(TAG, "Size: " + media.getSize());
//TODO:上传 media.getCompressPath()
Glide.with(InfoEditActivity.this).load(media.getCompressPath()).into(civ_head);
}
}
@Override
public void onCancel() {
Log.i(TAG, "PictureSelector Cancel");
}
}
}