Как реализовать метод увеличения в представлении?
Я создал приложение-руководство, которое состоит из карты. Эта карта рисуется динамически с использованием данных из базы данных.[Прямоугольные координаты] Чтобы нарисовать карту, я использовал класс 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, которое позволяет пользователям перемещать и масштабировать изображения:
Я использовал этот проект ранее для приложения, и он работает очень хорошо. Вам может понадобиться настроить его, чтобы получить желаемое поведение (например, отключение панорамирования, поскольку вы не сказали, что хотите этого).
Тогда все, что вам действительно нужно сделать, это:
imageViewZoomInstance.setImageBitmap(myDynamicMapBitmap);
Это представление включает в себя встроенное масштабирование. Возможно, вы захотите объединить его с вашим текущим представлением, которое вы создали.