我在显示位图时遇到问题。我有一个从资源加载并放置在地图上的位图(标记),我从服务器下载具有特定尺寸的位图(头像)。然后我将头像放在标记的中心。结果是在一部手机上一切正常,但在另一部手机上,头像比标记大。
我应该怎么办?
这样做希望这对你有帮助
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);
}