Я знаю, что есть масса тем, как реально реализовать масштабирование щипком, но я уже дошел до этого.
Я использую 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();
}