Я знаю, что существует множество тем, посвященных фактическому внедрению масштабирования, но я уже зашел так далеко.
Я использую SimpleScaleGestureListener для обработки сжатия. Мне удалось убедиться, что вы не можете уменьшить масштаб дальше, чем чтобы высота изображения оставалась такой же, как размер экрана (поэтому высота вашего изображения всегда будет не меньше высоты доступного размера экрана).
Тем не менее, я ищу способ автоматически определять, панорамируется ли изображение за пределы этих границ. Так же, как стандартный способ Android для отображения изображения. Поэтому, если я увеличиваю масштаб и перемещаю изображение вверх, а затем уменьшаю масштаб, я хочу, чтобы он определял, когда нижняя часть изображения достигает нижней части экрана, а затем «поворот» масштабирования настраивается соответствующим образом, таким образом никогда не допуская " пробел" над или под самим изображением. Может кто-нибудь помочь мне?
Для справки, вот мои методы onScale и onDraw:
public boolean onScale(ScaleGestureDetector detector){
float minScale = (float) ((float) SCREEN_SIZE.y / (float) DRAWABLE_SIZE.y);
mScaleFactor *= detector.getScaleFactor();
mScaleFactor = Math.max(minScale, Math.min(mScaleFactor, 5.0f));
invalidate();
return true;
}
protected void onDraw(Canvas canvas) {
canvas.save();
canvas.drawColor(Color.DKGRAY);
canvas.translate(mPosX, mPosY);
canvas.scale(mScaleFactor, mScaleFactor, getDrawable().getIntrinsicWidth() / 2,
getDrawable().getIntrinsicHeight() / 2);
this.getDrawable().draw(canvas);
canvas.restore();
}