Android surface view 的一些使用

来源:互联网 发布:ppt素材图片数据 编辑:程序博客网 时间:2024/06/05 03:52

 任务: 显示有两个view主成,下层为ImageView 来显示图片,上层为一普通view显示若干关键点。通过手指滑动,拖某个关键点在屏幕上移动。在平板上,发现刷新成了问题,关键点的移动明显慢。

 

思路:用surfaceiew 来替代上次的普通view,在OnTouch 函数中直接刷屏,而不是依靠invalidate。

 

困难 1: 因为要显示下层的imageview,如何设置surfaceview的透明?

                 解决:

                             setZOrderOnTop(true);
                             mHolder.setFormat(PixelFormat.TRANSPARENT);

 

困难 2: 透明的surfaceview,如果清屏。

            常用的函数:canvas.drawColor(Color.TRANSPARENT); 是没有效果的。

              经过研究,发现应该使用: canvas.drawColor(Color.TRANSPARENT,Mode.CLEAR);

             前者采用的默认模式是: srcover 。[Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc],这个在透明度0的情况下,当然不行了。

 

结果: 关键点移动明显快,优化效果明显。