Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.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
Android 从资源中绘制位图,而不是从其他资源中绘制位图_Android_Bitmap_Draw_Android Canvas - Fatal编程技术网

Android 从资源中绘制位图,而不是从其他资源中绘制位图

Android 从资源中绘制位图,而不是从其他资源中绘制位图,android,bitmap,draw,android-canvas,Android,Bitmap,Draw,Android Canvas,我有两个位图,背景和前景。如何在不使用其他画布的情况下在背景上绘制位图前景 解决方案: 1) 首先使用附加选项ARGB_8888从资源创建位图 BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.ARGB_8888; 2) 声明位图 Bitmap background = BitmapFactory.decodeResource(getR

我有两个位图,背景和前景。如何在不使用其他画布的情况下在背景上绘制位图前景

解决方案:

1) 首先使用附加选项ARGB_8888从资源创建位图

BitmapFactory.Options options = new BitmapFactory.Options();  
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
2) 声明位图

Bitmap background = BitmapFactory.decodeResource(getResources(), R.drawable.background, options);  
Bitmap foreground = BitmapFactory.decodeResource(getResources(), R.drawable.foreground, options);
3) 函数的作用是:绘制图形

protected void onDraw(Canvas canvas)    
{  
    canvas.drawColor(Color.White);

    Paint paint = new Paint();
    canvas.drawBitmap(background, 0, 0, paint);
    paint.setXfermode( new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));
    canvas.drawBitmap(foreground, 0, 0, paint); 
}
正如Soxxeh所说,这是一个非常好的信息来源:

试试这个:

canvas.drawBitmap(backgroundImageBitmap, 0.0f, 0.0f, null);
canvas.drawBitmap(foregroundImageBitmap, 0.0f, 0.0f, null);

第二幅图像(前景图像)必须具有Alpha特性,否则您无法看穿它。

如果使用ImageView,您可以将第一幅位图设置为背景,将第二幅位图设置为图像源

<ImageView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/background"
    android:src="@drawable/foreground"/>


如何在Android中设置前景位图的这些Alpha方面?创建位图时,为其提供一个RGBA_8888参数,然后将其作为正常绘制(不要设置背景色)。看见也可能会给您一些想法。为什么要提供
null
而不是绘制实例?@IgorGanapolsky绘制位图时不需要指定绘制。这是一个可选参数。如果不使用ImageView怎么办?-在FrameLayout上,可以通过setForeground()指定前景您还可以使用LayerDrawable将多个Drawable放置在彼此的顶部。-那么这个解决方案有效吗?或者你是在问问题?