调整位图大小以适应其他位图

时间:2013-09-27 12:35:53

标签: android bitmap

显示位图时遇到问题。我有一个从资源加载并放在地图上的位图(标记),我从具有特定尺寸的服务器下载位图(头像)。然后我将化身放在标记的中心。结果是,在一部手机上,每件事情都可以正常工作,但在其他手机上,头像比标记更大。

我该怎么办?

1 个答案:

答案 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);
    }