Я пытаюсь отобразить изображение с холстом, который позволяет масштабировать и панорамировать, но не дает пользователю панорамировать изображение за пределами экрана. Мне удалось остановить панорамирование, но при увеличении изображения оно останавливается перед краем изображения. Мне нужно иметь возможность перемещаться по краю изображения даже в увеличенном масштабе. Любая помощь будет принята с благодарностью.
Мой код, который отображает изображение, останавливает панорамирование за пределами экрана и увеличивает:
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
if (mPosX < displayWidth - mIcon.getIntrinsicWidth()){
mPosX = displayWidth - mIcon.getIntrinsicWidth();}
if (mPosX > 0){
mPosX = 0; }
if (mPosY < displayHeight - mIcon.getIntrinsicHeight()){
mPosY = displayHeight - mIcon.getIntrinsicHeight();}
if (mPosY > 0){
mPosY = 0; }
canvas.translate(mPosX, mPosY);
canvas.scale(mScaleFactor, mScaleFactor);
mIcon.draw(canvas);
canvas.restore();
}
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
mScaleFactor *= detector.getScaleFactor();
// Don't let the object get too small or too large.
mScaleFactor = Math.max(0.42f, Math.min(mScaleFactor, 5.0f));
invalidate();
return true;
}
}