Java 在支持多种屏幕尺寸的android系统中,如何在截图后立即添加图标或水印图像
请在投票前重新阅读我的问题,我想在拍摄后立即将图标或png图像添加到截图图像中 我不知道这是不是一个好方法,但我尝试了这个方法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(
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());
}