Проблема с прокручиваемым изображением для Android (избыточная прокрутка) - PullRequest
1 голос
/ 20 сентября 2011

Я получил свое изображение, по крайней мере, SCROLL, но я не хочу, чтобы оно пролистывало само изображение.У меня есть переменные с именами maxLeft, maxRight и т. Д., Которые у меня есть, и которые я сейчас установил на

    ImageView img = (ImageView)findViewById(R.id.mapimg);
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);

    int maxX = (int)????;
    int maxY = (int)????;

    // set scroll limits
    final int maxLeft = (maxX * -1);
    final int maxRight = maxX;
    final int maxTop = (maxY * -1);
    final int maxBottom = maxY;

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

1 Ответ

1 голос
/ 20 сентября 2011

Если я правильно понимаю ваш вопрос, вы хотите расширить ImageView, чтобы добавить прокрутку. Если это так, вы не хотите использовать getWindowmanager (), поскольку он возвращает размеры всего экрана (включая строку заголовка). Скорее, вы хотите расширить ImageView и получить размеры представления из onMeasure. Вы можете проверить мой ответ здесь , где я добавил функцию масштабирования и панорамирование в ImageView.

Я использовал setImageMatrix и postTranslate, чтобы установить матрицу, равную изображению, и переместить ее. Чтобы отслеживать местоположение изображения, я использовал следующее:

float f[] = new float[9];
matrix.getValues(m); //see matrix documentation. inserts matrix values into f.
float x = m[Matrix.MTRANS_X];
float y = m[Matrix.MTRANS_Y];

Float x и y будет отслеживать верхний левый угол изображения. Убедитесь, что следующее событие приведет к прокручиванию изображения за пределы, вы отрегулируете postTranslate так, чтобы оно равнялось границе изображения. Ответ, который я привел выше, должен дать вам хорошее начало, и если вам также нужна функция масштабирования, то вам повезло, потому что вам не нужно выполнять никакой дополнительной работы.

...