Android 调整位图大小以适合其他位图
我在显示位图时遇到问题。我有一个位图(标记),它是从资源中加载并放置在地图上的,我从服务器下载具有特定尺寸的位图(化身)。然后我把化身放在标记的中心。结果是,在一部手机上,每件事都很好,但在另一部手机上,化身比标记器大Android 调整位图大小以适合其他位图,android,bitmap,Android,Bitmap,我在显示位图时遇到问题。我有一个位图(标记),它是从资源中加载并放置在地图上的,我从服务器下载具有特定尺寸的位图(化身)。然后我把化身放在标记的中心。结果是,在一部手机上,每件事都很好,但在另一部手机上,化身比标记器大 我该怎么办 这样做希望对你有帮助 googleMap.addMarker(new MarkerOptions().title(markerData.get(USER_NAME)) .icon(BitmapDescriptor
我该怎么办 这样做希望对你有帮助
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)))));
Combile图像
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);
}
你需要合并两个位图,然后将单个位图作为标记。你能给我解释一下convertSizeToDeviceDependent(int-value)方法吗?因为Android设备有很多分辨率和屏幕大小。所以,若我直接添加45个硬编码,它将不会在所有设备中提供相同的输出。这就是为什么这个方法将45转换为设备分辨率和屏幕大小。