我创建了自定义视图,您可以在其中触摸和缩放它。大部分工作都是在这篇文章的帮助下创建的
接下来我观察到,如果我想放大图像,它总是放大到左上角。这是我的onDraw()方法:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
canvas.translate(mPosX, mPosY);
canvas.scale(mScaleFactor, mScaleFactor);
// actual drawing
canvas.getClipBounds(mRect);
canvas.restore();
}
Run Code Online (Sandbox Code Playgroud)
所以这是正常行为,因为canvas.scale(px, py);我希望从我的视图缩放到中心点(稍后我将采用focalX,focalY坐标,但现在只是到中心)。我决定更换
canvas.scale(mScaleFactor, mScaleFactor);到
canvas.scale(mScaleFactor, mScaleFactor, getWidth()/2-mPosX, getHeight()/2-mPosY);
现在它在图像中间完美缩放。但它以某种方式影响我的 mPosX、mPosY 坐标。我附上一张图片以便更好地理解。

左上角相当于mPosX=0,mPosY=0,就可以了。
接下来,如果我缩小,接下来会发生:

现在它决定左上角等于mPosX=0,mPosY=0(左上角)。但按照我的逻辑,它应该类似于(mPosX=100,mPosY=130)或类似的东西。
所以我的问题是我正在从实际的内容视图中滑出。我应该怎么做才能防止这种行为?