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

在HotClickView的使用过程中,发现同时进行缩放和平移操作时出现图片显示异常。通过调整代码实现方式,用canvas.concat(mMatrix)替代了原有的scale和translate操作,成功解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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);

解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值