我需要理解为什么setImageMatrix不起作用

时间:2013-09-18 19:19:41

标签: android graphics

我正在尝试创建一个与图像一起工作的Android应用程序(min SDK 14,目标SDK 18)(移动,缩放,旋转)。 我做了移动部分。 但是我无法使用Matrix进行缩放和旋转工作。

根据我所读到的,这里是我用于构建图像视图并使用Matrix进行缩放和旋转的代码。

public MyImage(Context context) {
    super(context);
    init();
}

public MyImage(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public MyImage(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
}

private void init() {
    setScaleType(ScaleType.MATRIX);
}

public void rotate(float angle) {
    Matrix m = new Matrix();
    m.postRotate(angle);

    setImageMatrix(m);

    invalidate();
}

public void scale(float scaleFactor) {
    Matrix m = new Matrix();
    m.postScale(scaleFactor, scaleFactor);

    setImageMatrix(m);

    invalidate();
}

我试过使用Matrix的set *函数但是没有用。 我曾尝试在每次旋转和缩放功能中而不是在init中设置缩放类型,但这不起作用。 我曾尝试过getImageMatrix,而不是每次创建一个新的Matrix(即创建一个标识矩阵),但这不起作用。

我知道旋转和缩放功能是通过调试器调用的。

显然我错过了一些东西。 我正在努力理解我所缺少的东西。

以上代码是否有效? 我误解了Matrix的工作原理吗?

1 个答案:

答案 0 :(得分:1)

查看我对该问题的回答How to maintain multi layers of ImageViews and keep their aspect ratio based on the largest one?,该代码使用的图层可以由您想要的任何矩阵转换