解决HotClickView开启移动和缩放后热区与背景bitmap显示错位的问题

移动开发 waitig 523℃ 百度已收录 0评论

使用HotClickView时,
同时缩放和移动的话会出现图片中的情况,
问题代码(在HotClickView 的drawPath方法中):

  private void drawPath(Canvas canvas) {

        float scale = getCurrentScale();
        canvas.scale(scale, scale);
        canvas.translate((VIEW_WIDTH / scale - BIT_WIDTH) / 2, (VIEW_HEIGHT / scale - BIT_HEIGHT)
                / 2);


        for (String key : mHotKeys) {
            Paint paint = new Paint();
//          paint.setColor(Color.BLUE);
            paint.setARGB(80, 68, 173, 161);
            paint.setStyle(Style.FILL);

            canvas.drawPath(mCheckAreas.get(key).getCheckArea().getPath(), paint);
        }
        }

绘制热区前,这儿对 canvas进行了缩放和移动,缩放没有问题,移动的代码有问题,没看懂作者的意图。

把这个方法改成:

   private void drawPath(Canvas canvas) {


        canvas.concat(mMatrix);

        for (String key : mHotKeys) {
            Paint paint = new Paint();
//          paint.setColor(Color.BLUE);
            paint.setARGB(80, 68, 173, 161);
            paint.setStyle(Style.FILL);

            canvas.drawPath(mCheckAreas.get(key).getCheckArea().getPath(), paint);
        }
        }

这里把代码:
float scale = getCurrentScale();
canvas.scale(scale, scale);
canvas.translate((VIEW_WIDTH / scale – BIT_WIDTH) / 2, (VIEW_HEIGHT / scale – BIT_HEIGHT)/ 2);

改成了:
canvas.concat(mMatrix);

解决问题。


本文由【waitig】发表在等英博客
本文固定链接:解决HotClickView开启移动和缩放后热区与背景bitmap显示错位的问题
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)