我写了改变位图缩放的类。我基于MotionEvent和矩阵类。我想读取比例并通过计算它来显示真实尺寸。我在不同的设备上测试它,问题是,每个设备上的最小缩放是不同的。
private void zoom(View view, MotionEvent event) {
final float newDistance = spacing(event);
if (newDistance > 10f) {
matrix.set(savedMatrix);
float scale = newDistance / oldDistance;
final float[] values = new float[9];
matrix.getValues(values);
final float currentScaleX = values[Matrix.MSCALE_X];
if (scale * currentScaleX > MAX_ZOOM)
scale = MAX_ZOOM / currentScaleX;
else if (scale * currentScaleX < MIN_ZOOM)
scale = MIN_ZOOM / currentScaleX;
final float height = Math.round(imageHeight / (metrics.density * currentScaleX * scale));
if (height >= (IMAGE_HEIGHT*NUMBER_TO_CHANGE_ZOOM) ) {
scale = imageHeight / (IMAGE_HEIGHT*NUMBER_TO_CHANGE_ZOOM * metrics.density) / currentScaleX;
}
zoom = currentScaleX * scale;
readScaleOfImage();
matrix.postScale(scale, scale, mid.x, mid.y);
check(view, event);
}
}
此方法按矩阵更改图像缩放。
这是间距mehtod,计数缩放,我不知道,它是如何工作的。
private float spacing(MotionEvent event) {
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return (float) Math.sqrt(x * x + y * y);
}
任何人都可以帮忙知道如何缩小变焦值吗?