Java 在支持多种屏幕尺寸的android系统中,如何在截图后立即添加图标或水印图像

Java 在支持多种屏幕尺寸的android系统中,如何在截图后立即添加图标或水印图像,java,android,Java,Android,请在投票前重新阅读我的问题,我想在拍摄后立即将图标或png图像添加到截图图像中 我不知道这是不是一个好方法,但我尝试了这个方法 private static Bitmap addWaterMark(Bitmap src, Context context, String waterMarkImage) { int w = src.getWidth(); int h = src.getHeight(); Bitmap result = Bitmap.createBitmap(

请在投票前重新阅读我的问题,我想在拍摄后立即将图标或png图像添加到截图图像中

我不知道这是不是一个好方法,但我尝试了这个方法

private static Bitmap addWaterMark(Bitmap src, Context context, String waterMarkImage) {
    int w = src.getWidth();
    int h = src.getHeight();
    Bitmap result = Bitmap.createBitmap(w, h, src.getConfig());
    Canvas canvas = new Canvas(result);
    canvas.drawBitmap(src, 0, 0, null);

    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    DisplayMetrics metrics = new DisplayMetrics();
    display.getMetrics(metrics);
    int width = metrics.widthPixels;
    int height = metrics.heightPixels;
    Log.d(TAG, "Width X Height " + width + " X " + height);

    Point point = new Point();
    display.getSize(point);
    int maxX = point.x;
    int maxY = point.y;
    point.set(maxX, maxY);

    int maxWidth = (70 * width) / 100;
    int maxHeight = (80 * height) / 100;
    Log.d(TAG, "maxWidth X maxHeight " + maxWidth + " X " + maxHeight);

    Bitmap waterMark = null;
    if (waterMarkImage != null) {
        byte[] decodedByte = Base64.decode(waterMarkImage, 0);
        waterMark = BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);
        waterMark = Bitmap.createScaledBitmap(waterMark, 250, 250, true);
    } else {
        waterMark = BitmapFactory.decodeResource(context.getResources(), R.drawable.sharelogo1);
    }
    canvas.drawBitmap(waterMark, maxWidth, maxHeight, null);

    return result;
}

它工作正常,但水印图像的大小和位置没有按我所希望的那样工作(不支持所有屏幕大小或分辨率)

在您的代码片段中更改

waterMark = Bitmap.createScaledBitmap(waterMark, 250, 250, true);

并添加以下方法将dp转换为像素

private float getpixels(float dipValue) {
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, Resources.getSystem().getDisplayMetrics());
    }

无法正常工作
->输出的具体区别是什么?我想在设备的右下角添加一个图标,但它与某些设备中的内容重叠,并且图标大小和位置正在更改。感谢您的回答,我将在检查多个设备和版本后与您联系。
private float getpixels(float dipValue) {
        return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, Resources.getSystem().getDisplayMetrics());
    }