0

我在下面有一个 ScaleGestureDetector,我可以在调用 adpater notifyDataSetChanged 后检测到 onScale 事件并实时调整我的视图大小。但是,它很慢,因为我的观点很复杂。有没有办法捕获视图的临时图像,然后调整图像大小以向用户显示效果,最后在 onScaleEnd 触发时更改真正的最终视图数据?

多谢

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.7_r1/android/view/ScaleGestureDetector.java#ScaleGestureDetector.OnScaleGestureListener

4

1 回答 1

0

我通过以下来实现这一点

  1. 保存位图

    this.setDrawingCacheEnabled(true);

    ivSnapShotBitmap = Bitmap.createBitmap(this.getDrawingCache());

    this.setDrawingCacheEnabled(false);

  2. onDraw(画布画布)

    canvas.drawBitmap(ivSnapShotBitmap, 0, 0, null);

    canvas.scale(ivScaleFactor, ivScaleFactor);

    超级.onDraw(画布);

这可以支持类型 10 及以下的 API 级别进行多点触控缩放,因为视图本身不支持 scale(x,y)

其中一个问题是当视图被缩小时。右侧和底部的空白区域将显示原始背景,我仍在寻找修复它的方法。

于 2013-01-01T15:58:52.407 回答