Android: настроить холст для просмотра границ - PullRequest
0 голосов
/ 31 августа 2011

Я создал свой собственный класс с сенсорными событиями для перемещения и увеличения изображения (холста) для галереи. У меня проблема в том, что картинка движется всегда, даже вне экрана. Правым поведением является то, что левая граница рисунка должна находиться на границе левого экрана или слева от нее ... и то же самое с остальными границами ...

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

Есть идеи? вот часть кода:

public class TouchView extends View {
    ...
    @Override
        public void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.save();
        canvas.translate(mPosX, mPosY);
        mScaleFactor = Math.max( mScaleFactor, minScaleFactor);
        canvas.scale(mScaleFactor, mScaleFactor, pivotX, pivotY);
        mIcon.draw(canvas);
        canvas.restore();
    }
    ...
}

Спасибо:)

1 Ответ

1 голос
/ 31 августа 2011
if(imageWidth < screenWidth && imageHeight < screenHeight) {
    imageX = screenWidth / 2 - imageWidth / 2;
    imageY = screenHeight / 2 - imageHeight / 2;
} else {
    if(imageX > 0) imageX = 0;
    if(imageY > 0) imageY = 0;
    if(imageX + imageWidth < screenWidth)
        imageX = screenWidth - imageWidth;
    if(imageY + imageHeight < screenHeight)
        imageY = screenHeight - imageHeight;
}

Было немного сложно понять проблему, но с точки зрения простой арифметики это должно сработать.

...