显示位图时遇到问题。我有一个从资源加载并放在地图上的位图(标记),我从具有特定尺寸的服务器下载位图(头像)。然后我将化身放在标记的中心。结果是,在一部手机上,每件事情都可以正常工作,但在其他手机上,头像比标记更大。
我该怎么办?
答案 0 :(得分:0)
这样做希望这可以帮助你
googleMap.addMarker(new MarkerOptions().title(markerData.get(USER_NAME))
.icon(BitmapDescriptorFactory.fromBitmap(combineImages(BitmapFactory.decodeResource(getResources(), R.drawable.your_pin_marker_from_resorece), bitmapAvatar)))
.position(new LatLng(Double.parseDouble(markerData.get(USER_LAT)), Double.parseDouble(markerData.get(USER_LONG)))));
合并图片
public Bitmap combineImages(Bitmap frame, Bitmap image) {
Bitmap bitmapCreate = null;
Bitmap bitmapScale = null;
bitmapScale = Bitmap.createScaledBitmap(image, convertSizeToDeviceDependent(45), convertSizeToDeviceDependent(40), true);
bitmapCreate = Bitmap.createBitmap(frame.getWidth(), frame.getHeight(), Bitmap.Config.ARGB_8888);
Canvas comboImage = new Canvas(bitmapCreate);
comboImage.drawBitmap(bitmapScale, convertSizeToDeviceDependent(7), convertSizeToDeviceDependent(7), null);
comboImage.drawBitmap(frame, 0, 0, null);
if (frame != null) {
try {
bitmapScale.recycle();
frame.recycle();
image.recycle();
bitmapScale = null;
frame = null;
image = null;
} catch (Throwable e) {
}
}
return bitmapCreate;
}
public int convertSizeToDeviceDependent(int value) {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
return ((dm.densityDpi * value) / 160);
}