我需要改变我缩放和移动我的imageview到使用矩阵,而不是调用canvas.scale(,,,,)
,但我无法弄清楚正确的呼叫来做到这一点。使用ImageView变换矩阵,而不是canvas.scale(浮动,浮动,浮动,浮动)
我这在我的ScaleListener
监听器类的onScale
方法
public boolean onScale(ScaleGestureDetector detector) {
...//determining zoom level and pivot points offset
child.zoom(scaleFactor, zoomCenter[0], zoomCenter[1]);
}
我在孩子的ImageView onDraw
方法有:
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.scale(mScaleFactor, mScaleFactor, mPosX, mPosY);
...
//do all the drawing here
}
public void zoom(float scaleFactor, float zoomCenterX, float zoomCenterY) {
mScaleFactor = scaleFactor;
mPosX = zoomCenterX;
mPosY = zoomCenterY;
//redraw and remeasure the mapview after zooming in
invalidate();
}
我想在onScale
这样的事情方法:
public boolean onScale(ScaleGestureDetector detector) {
...//calculating scale and offsets
Matrix m = child.getImageMatrix();
m.reset();
m.postScale(scaleFactor, scaleFactor);
m.postTranslate(zoomCenter[0], zoomCenter[1]);
child.setScaleType(ScaleType.MATRIX);
child.setImageMatrix(m);
child.invalidate();
return true;
}
但是这似乎没有做任何事情......我在这里错过了什么吗?我尝试使用child.getMatrix()
代替,但通过IllegalStateException表示矩阵不能修改。任何帮助将是伟大的!
谢谢!你节省了我几个小时的时间! – Tomasz