Как реализовать метод увеличения в представлении?

Я создал приложение-руководство, которое состоит из карты. Эта карта рисуется динамически с использованием данных из базы данных.[Прямоугольные координаты] Чтобы нарисовать карту, я использовал класс View и переопределил метод Ondraw.

Проблема в том, что я не могу найти способ реализовать функцию увеличения. Я уже использовал класс Gesture Detector для обработки методов OnLongPress и OnTouchEvent. Я думал о функции Pinch-to-Zoom-in, но понятия не имел, как это сделать.

С нетерпением ждем отличных идей. Спасибо!

Занятия расширяются

  • Посмотреть
  • GesturDetector

1 ответ

Решение

Можете ли вы дать нам больше информации о том, как вы рисуете эту динамическую карту? Сейчас я сделаю предположение и побегу с ним. Если вы рисуете фигуры на холсте, вы можете указать холст на растровое изображение для рисования на:

Bitmap myDynamicMapBitmap = new Bitmap(MAP_WIDTH, MAP_HEIGHT, Bitmap.Config.ARGB_8888);
mapCanvas.setBitmap(myDynamicMapBitmap);
// Draw your map on the canvas here

Теперь, когда у вас есть растровое представление вашей карты, вы можете использовать этот проект с открытым исходным кодом, который по сути является адаптацией встроенного приложения для создания фотогалереи Android, которое позволяет пользователям перемещать и масштабировать изображения:

ImageViewZoom на GitHub

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

Тогда все, что вам действительно нужно сделать, это:

imageViewZoomInstance.setImageBitmap(myDynamicMapBitmap);

Это представление включает в себя встроенное масштабирование. Возможно, вы захотите объединить его с вашим текущим представлением, которое вы создали.

Другие вопросы по тегам