我正在尝试扩展一些View来显示图像并允许通过手势缩放它。
我想将其转换为某种地图,只需在其上添加小图标即可。为此,我需要在每次绘制时调整图标位图的大小(或者可能是错误的)。
目前我是这样的:
private void resizeBitmaps() {
final float density = getResources().getDisplayMetrics().densityDpi;
for (Bitmap b : activeBitmaps) {
final float w = (density / 420f) * b.getWidth() * getScale();
final float h = (density / 420f) * b.getHeight() * getScale();
final Bitmap result = Bitmap.createScaledBitmap(b, (int) w, (int) h, true);
if (result != null) {
resizedBitmaps.put(b, result);
}
}
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
...
resizeBitmaps();
for (MapIcon i : activeIconList) {
final Bitmap b = resizedBitmaps.get(i.getResource());
// Center bitmaps;
if (b != null) {
final PointF p = new PointF();
sourceToViewCoord(i.getLocation(), p);
final float vX = p.x - b.getWidth() / 2;
final float vY = p.y - b.getHeight() / 2;
canvas.drawBitmap(b, vX, vY, paint);
}
}
}
我当然知道这是一个不好的解决方案。当缩放比例太大时,它开始滞后。我试图在多个线程中执行相同的操作,但是又遇到了另一个问题。
请帮我修复。