Android ImageView缩放图像和中心

时间:2016-01-16 13:11:36

标签: android matrix imageview

我需要在ImageView中缩放Image,我需要使用矩阵来实现,

所以我这样做;

private void scaleImage(float scaleFactor, float focusX,float focusY) {
    Matrix displayMatrix= new Matrix();
    matrix.postScale(scaleFactor, scaleFactor);
    displayMatrix.set(matrix);
    imageView.setImageMatrix(displayMatrix);
}

问题是无论我无法将图像置于ImageView内部,

我需要将图像放在中心(如果图像小于视图,则留下白边)

我已经好几个小时了,请帮忙。

我已经广泛关注这个https://stackoverflow.com/a/6172226/1815311,,但没有成功。

2 个答案:

答案 0 :(得分:1)

您所要做的就是找到新的x和y坐标放置图像然后平移矩阵,这样图像就会移动到ImageView的中心。您的整个scaleImage方法可能如下所示:

private void scaleImage(float scaleFactor, float focusX, float focusY) {
    Matrix displayMatrix = new Matrix();
    Matrix matrix = imageView.getImageMatrix();

    float x = (imageView.getWidth() - imageView.getDrawable().getIntrinsicWidth() * scaleFactor) / 2;
    float y = (imageView.getHeight() - imageView.getDrawable().getIntrinsicHeight() * scaleFactor) / 2;

    matrix.postScale(scaleFactor, scaleFactor);
    matrix.postTranslate(x, y);

    displayMatrix.set(matrix);
    imageView.setImageMatrix(displayMatrix);
}

答案 1 :(得分:0)

试试我的代码希望能帮到你:

typedef enum cell game_board[BOARDHEIGHT][BOARDWIDTH];