【问题标题】:How to implement a zoom in method in a View?如何在视图中实现放大方法?
【发布时间】:2012-11-08 17:25:45
【问题描述】:

我创建了一个包含地图的指导应用程序。该地图是使用数据库中的数据动态绘制的。[矩形坐标] 为了绘制地图,我使用了 View 类并覆盖了 Ondraw 方法。

问题是我找不到实现放大功能的方法。我已经使用 Gesture Detector 类来处理 OnLongPress 和 OnTouchEvent 方法。我正在考虑使用捏合放大功能,但不知道该怎么做。

期待一些伟大的想法。谢谢!

类扩展

  • 查看
  • 手势检测器

【问题讨论】:

  • 您以错误的方式使用 SurfaceView。 SurfaceView 将在单独的线程中计算,并使用 lockCanvas() 和 unlockCanvasAndPost(Canvas) 方法。
  • 另外,还有一个类:SimpleOnScaleGestureListener 用于捏合手势
  • 好吧..我切换到视图类..thanx :)

标签: android surfaceview ondraw gesturedetector


【解决方案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 on GitHub

我之前曾将该项目用于一个应用程序,并且效果非常好。您可能需要对其进行一些调整以获得您想要的行为(例如禁用平移,因为您没有说您想要这样做)。

那么你真正要做的就是:

imageViewZoomInstance.setImageBitmap(myDynamicMapBitmap);

该视图包括内置的捏缩放。您可能希望将其与您创建的当前视图合并。

【讨论】:

  • thanx Much.. 我会这样尝试!
猜你喜欢
  • 2016-01-11
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多