我正在尝试创建一个适用于图像(移动、缩放、旋转)的 android 应用程序(最小 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 的工作原理?