Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我创建这个新位图的背景是深灰色?如何将其设置为与布局背景相同的颜色?_Java_Android_Android Activity_Android Image_Android Bitmap - Fatal编程技术网

Java 为什么我创建这个新位图的背景是深灰色?如何将其设置为与布局背景相同的颜色?

Java 为什么我创建这个新位图的背景是深灰色?如何将其设置为与布局背景相同的颜色?,java,android,android-activity,android-image,android-bitmap,Java,Android,Android Activity,Android Image,Android Bitmap,我是Android的新手,我有以下问题 我创建了这个Image: 使用此方法: public static Bitmap createRankingImg(Context context, int difficulty) { // Create a Bitmap image starting from the star.png into the "/res/drawable/" directory: Bitmap myBitmap = BitmapFactory.decode

我是Android的新手,我有以下问题

我创建了这个Image:

使用此方法:

public static Bitmap createRankingImg(Context context, int difficulty) {

    // Create a Bitmap image starting from the star.png into the "/res/drawable/" directory:
    Bitmap myBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.chef_hat_ok_resize);


    // Create a new image bitmap having width to hold 5 star.png image:
    Bitmap tempBitmap = Bitmap.createBitmap(myBitmap.getWidth() * 7, myBitmap.getHeight(), Bitmap.Config.RGB_565);

    Canvas tempCanvas = new Canvas(tempBitmap);

    // Draw the image bitmap into the cavas:
    tempCanvas.drawBitmap(myBitmap, 0, 0, null);        // FROM 0 TO 1
    tempCanvas.drawBitmap(myBitmap, (float) (myBitmap.getWidth() * 1.5), 0, null);       // FROM 1.5 TO 2.5
    tempCanvas.drawBitmap(myBitmap, (float) ( myBitmap.getWidth() * 3), 0, null);        // FROM 3 TO 4
    tempCanvas.drawBitmap(myBitmap, (float) (myBitmap.getWidth() * 4.5), 0, null);       // FROM 4.5 TO 5.5
    tempCanvas.drawBitmap(myBitmap, (float) (myBitmap.getWidth() * 6), 0, null);       // FROM 6 TO 7


    return tempBitmap;

}
它工作得很好。唯一的问题是,在一张chef_hat_ok_resize.png图像和下一张图像之间的空间中,空白区域具有灰色-深色

我希望它有相同的布局背景颜色(白色)

我认为这可能取决于这一行:

Bitmap tempBitmap = Bitmap.createBitmap(myBitmap.getWidth() * 7, myBitmap.getHeight(), Bitmap.Config.RGB_565);
为什么??我错过了什么?如何解决此问题?

方法1 在调用
drawBitmap
之前,插入

tempCanvas.drawColor(Color.WHITE);
您看到的背景色只是黑色,这就是此类型的空新位图将初始化为的颜色(全部为零)

方法2 使用支持透明度的位图配置:

Bitmap tempBitmap = Bitmap.createBitmap(myBitmap.getWidth() * 7, myBitmap.getHeight(), Bitmap.Config.ARGB_8888);
在这种情况下,位图将初始化为透明黑色(再次为全零),并且在未绘制图标的位置,其后面的任何内容都将可见

这两种方法之间的区别在于,透明度需要具有alpha通道的位图。首选哪种方法取决于应用程序的其他细节

例如,
RGB_565
ARGB_8888
更紧凑(但支持透明度的
ARGB_4444
也更紧凑)

使用透明度也会减慢动画的速度,因为部分覆盖的视图需要更频繁地重新绘制。

Method 1 在调用
drawBitmap
之前,插入

tempCanvas.drawColor(Color.WHITE);
您看到的背景色只是黑色,这就是此类型的空新位图将初始化为的颜色(全部为零)

方法2 使用支持透明度的位图配置:

Bitmap tempBitmap = Bitmap.createBitmap(myBitmap.getWidth() * 7, myBitmap.getHeight(), Bitmap.Config.ARGB_8888);
在这种情况下,位图将初始化为透明黑色(再次为全零),并且在未绘制图标的位置,其后面的任何内容都将可见

这两种方法之间的区别在于,透明度需要具有alpha通道的位图。首选哪种方法取决于应用程序的其他细节

例如,
RGB_565
ARGB_8888
更紧凑(但支持透明度的
ARGB_4444
也更紧凑)

使用透明度也会减慢动画的速度,因为部分覆盖的视图需要更频繁地重新绘制