Files
assistant-android/app/src/main/java/com/gh/common/view/CropImageCustom.java
2018-08-10 15:44:06 +08:00

96 lines
2.8 KiB
Java

package com.gh.common.view;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import com.lightgame.utils.Utils;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
public class CropImageCustom extends RelativeLayout {
private CropImageZoomView mZoomImageView;
private CropImageBorderView mClipImageView;
private int mHorizontalPadding = 20;
public CropImageCustom(Context context, AttributeSet attrs) {
super(context, attrs);
mZoomImageView = new CropImageZoomView(context);
mClipImageView = new CropImageBorderView(context);
android.view.ViewGroup.LayoutParams lp = new LayoutParams(
android.view.ViewGroup.LayoutParams.MATCH_PARENT,
android.view.ViewGroup.LayoutParams.MATCH_PARENT);
this.addView(mZoomImageView, lp);
this.addView(mClipImageView, lp);
// 计算padding的px
mHorizontalPadding = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, mHorizontalPadding, getResources()
.getDisplayMetrics());
mZoomImageView.setHorizontalPadding(mHorizontalPadding);
mClipImageView.setHorizontalPadding(mHorizontalPadding);
}
/**
* 对外公布设置边距的方法,单位为dp
*
* @param mHorizontalPadding
*/
public void setHorizontalPadding(int mHorizontalPadding) {
this.mHorizontalPadding = mHorizontalPadding;
}
/**
* 裁切图片
*
* @return
*/
public Bitmap clip() {
return mZoomImageView.clip();
}
public boolean savePicture(String path) {
float limitSize = 900;
int quality = 90;
Bitmap bitmap = mZoomImageView.clip();
File file = new File(path);
if (bitmap.getHeight() > limitSize || bitmap.getWidth() > limitSize) {
Matrix matrix = new Matrix();
matrix.setScale(limitSize / bitmap.getWidth(), limitSize / bitmap.getHeight());
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
}
try {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
bitmap.compress(Bitmap.CompressFormat.WEBP, quality, bos);
bos.flush();
bos.close();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
public ImageView getCropImageZoomView() {
return mZoomImageView;
}
public void setBitmap(Bitmap bitmap) {
mZoomImageView.setImageBitmap(bitmap);
}
}