【发布时间】:2013-01-01 23:58:52
【问题描述】:
我在下面有一个 ScaleGestureDetector,我可以在调用 adpater notifyDataSetChanged 后检测到 onScale 事件并实时调整我的视图大小。 但是,它很慢,因为我的观点很复杂。 有什么方法可以捕获视图的临时图像,然后调整图像大小以向用户显示效果,最后在 onScaleEnd 触发时更改真正的最终视图数据?
非常感谢
【问题讨论】:
我在下面有一个 ScaleGestureDetector,我可以在调用 adpater notifyDataSetChanged 后检测到 onScale 事件并实时调整我的视图大小。 但是,它很慢,因为我的观点很复杂。 有什么方法可以捕获视图的临时图像,然后调整图像大小以向用户显示效果,最后在 onScaleEnd 触发时更改真正的最终视图数据?
非常感谢
【问题讨论】:
我通过以下方式实现了这一点
保存位图
this.setDrawingCacheEnabled(true);
ivSnapShotBitmap = Bitmap.createBitmap(this.getDrawingCache());
this.setDrawingCacheEnabled(false);
onDraw(Canvas 画布)
canvas.drawBitmap(ivSnapShotBitmap, 0, 0, null);
canvas.scale(ivScaleFactor, ivScaleFactor);
super.onDraw(canvas);
这可以支持 API 级别 10 及以下的多点触控缩放,因为视图本身不支持 scale(x,y)
其中一个问题是视图被缩小时。右侧和底部的空白区域将显示原始背景,我仍在寻找解决方法。
【讨论】: