reformat code & optimize import & rearrange code
This commit is contained in:
@ -1,15 +1,21 @@
|
||||
package com.gh.common.view;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.*;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.support.v7.widget.AppCompatImageView;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.*;
|
||||
import android.view.GestureDetector;
|
||||
import android.view.GestureDetector.SimpleOnGestureListener;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.ScaleGestureDetector;
|
||||
import android.view.ScaleGestureDetector.OnScaleGestureListener;
|
||||
import android.view.View;
|
||||
import android.view.View.OnTouchListener;
|
||||
import android.widget.ImageView;
|
||||
import android.view.ViewTreeObserver;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class CropImageZoomView extends AppCompatImageView implements
|
||||
@ -88,6 +94,16 @@ public class CropImageZoomView extends AppCompatImageView implements
|
||||
this.setOnTouchListener(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得当前的缩放比例
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public final float getScale() {
|
||||
mScaleMatrix.getValues(matrixValues);
|
||||
return matrixValues[Matrix.MSCALE_X];
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScale(ScaleGestureDetector detector) {
|
||||
float scale = getScale();
|
||||
@ -122,6 +138,47 @@ public class CropImageZoomView extends AppCompatImageView implements
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScaleBegin(ScaleGestureDetector detector) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScaleEnd(ScaleGestureDetector detector) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 边界检测
|
||||
*/
|
||||
private void checkBorder() {
|
||||
|
||||
RectF rect = getMatrixRectF();
|
||||
float deltaX = 0;
|
||||
float deltaY = 0;
|
||||
|
||||
int width = getWidth();
|
||||
int height = getHeight();
|
||||
// 如果宽或高大于屏幕,则控制范围 ; 这里的0.001是因为精度丢失会产生问题,但是误差一般很小,所以我们直接加了一个0.01
|
||||
if (rect.width() + 0.01 >= width - 2 * mHorizontalPadding) {
|
||||
if (rect.left > mHorizontalPadding) {
|
||||
deltaX = -rect.left + mHorizontalPadding;
|
||||
}
|
||||
if (rect.right < width - mHorizontalPadding) {
|
||||
deltaX = width - mHorizontalPadding - rect.right;
|
||||
}
|
||||
}
|
||||
if (rect.height() + 0.01 >= height - 2 * mVerticalPadding) {
|
||||
if (rect.top > mVerticalPadding) {
|
||||
deltaY = -rect.top + mVerticalPadding;
|
||||
}
|
||||
if (rect.bottom < height - mVerticalPadding) {
|
||||
deltaY = height - mVerticalPadding - rect.bottom;
|
||||
}
|
||||
}
|
||||
mScaleMatrix.postTranslate(deltaX, deltaY);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据当前图片的Matrix获得图片的范围
|
||||
*
|
||||
@ -138,15 +195,6 @@ public class CropImageZoomView extends AppCompatImageView implements
|
||||
return rect;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScaleBegin(ScaleGestureDetector detector) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScaleEnd(ScaleGestureDetector detector) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
|
||||
@ -214,13 +262,14 @@ public class CropImageZoomView extends AppCompatImageView implements
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得当前的缩放比例
|
||||
* 是否是拖动行为
|
||||
*
|
||||
* @param dx
|
||||
* @param dy
|
||||
* @return
|
||||
*/
|
||||
public final float getScale() {
|
||||
mScaleMatrix.getValues(matrixValues);
|
||||
return matrixValues[Matrix.MSCALE_X];
|
||||
private boolean isCanDrag(float dx, float dy) {
|
||||
return Math.sqrt((dx * dx) + (dy * dy)) >= mTouchSlop;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -295,49 +344,6 @@ public class CropImageZoomView extends AppCompatImageView implements
|
||||
getWidth() - 2 * mHorizontalPadding);
|
||||
}
|
||||
|
||||
/**
|
||||
* 边界检测
|
||||
*/
|
||||
private void checkBorder() {
|
||||
|
||||
RectF rect = getMatrixRectF();
|
||||
float deltaX = 0;
|
||||
float deltaY = 0;
|
||||
|
||||
int width = getWidth();
|
||||
int height = getHeight();
|
||||
// 如果宽或高大于屏幕,则控制范围 ; 这里的0.001是因为精度丢失会产生问题,但是误差一般很小,所以我们直接加了一个0.01
|
||||
if (rect.width() + 0.01 >= width - 2 * mHorizontalPadding) {
|
||||
if (rect.left > mHorizontalPadding) {
|
||||
deltaX = -rect.left + mHorizontalPadding;
|
||||
}
|
||||
if (rect.right < width - mHorizontalPadding) {
|
||||
deltaX = width - mHorizontalPadding - rect.right;
|
||||
}
|
||||
}
|
||||
if (rect.height() + 0.01 >= height - 2 * mVerticalPadding) {
|
||||
if (rect.top > mVerticalPadding) {
|
||||
deltaY = -rect.top + mVerticalPadding;
|
||||
}
|
||||
if (rect.bottom < height - mVerticalPadding) {
|
||||
deltaY = height - mVerticalPadding - rect.bottom;
|
||||
}
|
||||
}
|
||||
mScaleMatrix.postTranslate(deltaX, deltaY);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否是拖动行为
|
||||
*
|
||||
* @param dx
|
||||
* @param dy
|
||||
* @return
|
||||
*/
|
||||
private boolean isCanDrag(float dx, float dy) {
|
||||
return Math.sqrt((dx * dx) + (dy * dy)) >= mTouchSlop;
|
||||
}
|
||||
|
||||
public void setHorizontalPadding(int mHorizontalPadding) {
|
||||
this.mHorizontalPadding = mHorizontalPadding;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user