Java 如何在整个屏幕的画布上绘制位图?

Java 如何在整个屏幕的画布上绘制位图?,java,android,canvas,bitmap,Java,Android,Canvas,Bitmap,在我的应用程序中,我需要在整个屏幕上绘制位图。由于某些原因,当我绘制位图时,只有部分位图加载到屏幕的一部分。换句话说,屏幕上并没有显示整个画面。下面是我绘制位图时的一段代码: byte[]byteArray=getIntent().getByteArrayExtra("image"); Bitmap tmp=BitmapFactory.decodeByteArray(byteArray,0,byteArray.length); operation = Bitmap.createBitmap(t

在我的应用程序中,我需要在整个屏幕上绘制位图。由于某些原因,当我绘制位图时,只有部分位图加载到屏幕的一部分。换句话说,屏幕上并没有显示整个画面。下面是我绘制位图时的一段代码:

byte[]byteArray=getIntent().getByteArrayExtra("image");
Bitmap tmp=BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);

operation = Bitmap.createBitmap(tmp.getWidth(), tmp.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(operation);
Paint paint = new Paint();
tmp.setDensity(c.getDensity());

c.drawBitmap(tmp, 0f, 0f, paint);
tmp.recycle();
以及:


为此,您需要获得设备的宽度和高度,然后将图像缩放到该尺寸,并将其显示在画布上

下面是对代码的修改

//add this code before your code
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

//your code with modification
byte[]byteArray=getIntent().getByteArrayExtra("image");
Bitmap tmp=BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
operation = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(operation);
Paint paint = new Paint();
tmp.setDensity(c.getDensity());
c.drawBitmap(tmp, 0f, 0f, paint);
tmp.recycle();

现在,它将填充整个屏幕,确保将画布应用到整个屏幕中

我知道已经有一段时间了,但我真的需要解决一个问题。由于某种原因,当我发送位图操作并显示它时,它只显示图片的左上角。你试过这个代码吗?您在xml文件中为画布提供了什么宽度和高度参数?我在代码中发现了问题,我必须将tmp设置为相同的大小,唯一的问题是我的图片的按钮部分被切断(在我的Moto G2上),请评论这行
tmp.setDensity(c.getDensity())并重试。
//add this code before your code
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

//your code with modification
byte[]byteArray=getIntent().getByteArrayExtra("image");
Bitmap tmp=BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
operation = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(operation);
Paint paint = new Paint();
tmp.setDensity(c.getDensity());
c.drawBitmap(tmp, 0f, 0f, paint);
tmp.recycle();