Масштабирование в android - держите изображение в поле зрения

Я знаю, что есть масса тем, как реально реализовать масштабирование щипком, но я уже дошел до этого.

Я использую 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();
}
5
задан Dynde 27 September 2011 в 11:14
поделиться