我正在尝试创建一个与图像一起工作的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的工作原理吗?
答案 0 :(得分:1)
查看我对该问题的回答How to maintain multi layers of ImageViews and keep their aspect ratio based on the largest one?,该代码使用的图层可以由您想要的任何矩阵转换