使用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);
解决问题。