不同的缩放,为每个Android设备

时间:2015-08-13 13:50:58

标签: java android matrix zoom

我写了改变位图缩放的类。我基于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);
}

任何人都可以帮忙知道如何缩小变焦值吗?

0 个答案:

没有答案