我有一个自定义ImageView
,用于在网页上重新定位图像。在手机屏幕上看到的图像应代表网页上的图像。
我正在使用Matrix.mapPoints(float[] dst, float[] src)
尝试获取在缩放以正确构图图像时图像偏移的程度。我还考虑了缩放图像的程度,以及手机上的图像视图与网页上的图像标签宽度相比的大小。
图像视图类中的UpdateImage()
public void updateImage() {
final float phoneDisplayScale = (float) getWidth() / (float) getDrawable().getIntrinsicWidth();
float[] m = new float[9];
matrix.getValues(m);
float scale = m[Matrix.MSCALE_X];
float[] arr = {0, 0};
matrix.mapPoints(arr, arr);
//holder.rect = {image_x, image_y, imageWidth, imageHeight}
if (holder != null) {
holder.getRect()[0] = arr[0] / phoneDisplayScale;
holder.getRect()[1] = arr[1] / phoneDisplayScale;
holder.getRect()[2] = scale * (getImageWidth() / phoneDisplayScale);
holder.getRect()[3] = scale * (getImageHeight() / phoneDisplayScale);
Log.i(TAG, "doInBackground: " + Arrays.toString(holder.getRect()));
Log.i(TAG, "doInBackground: " + Arrays.toString(holder.getRect()));
Log.i(TAG, "doInBackground: " + Arrays.toString(holder.getRect()));
}
//
//
// Socket io code
//
//
}
这可以在缩放和对齐图像时使用,使图像的左上角位于ImageView
的左上角,但是您永远无法放大图像的右下角。我还注意到,如果我放大到最大值,则map points方法返回图像的宽度和高度(减去值)。
答案 0 :(得分:0)
好吧,我的逻辑有点偏离我已将位置计算更改为以下内容,现在可以正常工作。
holder.getRect()[0] = (arr[0] / scale) * phoneDisplayScale;
holder.getRect()[1] = (arr[1] / scale) * phoneDisplayScale;