android中在两个位图之间淡入淡出的最佳方式

android中在两个位图之间淡入淡出的最佳方式,android,bitmap,transparency,rgb,fade,Android,Bitmap,Transparency,Rgb,Fade,我有两个位图,即bm1和bm2,我想(尽快)创建另一个位图,它是bm1和bm2之间的渐变混合,其中bm1使用weight加权,bm2使用1-weight加权 我目前的执行情况如下: private Bitmap Fade(Bitmap bm1, Bitmap bm2, double weight) { int width = bm1.getWidth(); int height = bm1.getHeight(); if (width != bm2.getWidth()

我有两个位图,即bm1和bm2,我想(尽快)创建另一个位图,它是bm1和bm2之间的渐变混合,其中bm1使用
weight
加权,bm2使用
1-weight
加权

我目前的执行情况如下:

private Bitmap Fade(Bitmap bm1, Bitmap bm2, double weight)
{
    int width = bm1.getWidth();
    int height = bm1.getHeight();

    if (width != bm2.getWidth() || height != bm2.getHeight())
        return null;

    Bitmap bm = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

    for (int y = 0; y < height; y++)
        for (int x = 0; x < width; x++)
        {
            int pix_s = bm1.getPixel(x, y);
            int pix_d = bm2.getPixel(x, y);

            int r_s =  (pix_s >> 16) & 0xFF;
            int g_s = (pix_s >> 8) & 0xFF;
            int b_s = pix_s & 0xFF;

            int r_d =  (pix_d >> 16) & 0xFF;
            int g_d = (pix_d >> 8) & 0xFF;
            int b_d = pix_d & 0xFF;

            int r = (int)((1-weight) * r_s + weight * r_d);
            int g = (int)((1-weight) * g_s + weight * g_d);
            int b = (int)((1-weight) * b_s + weight * b_d);
            int pix = 0xff000000 | (r << 16) | (g << 8) | b;
            bm.setPixel(x, y, pix);
        }
    return bm;  
}
私有位图淡入淡出(位图bm1、位图bm2、双权重)
{
int-width=bm1.getWidth();
int height=bm1.getHeight();
如果(宽度!=bm2.getWidth()|高度!=bm2.getHeight())
返回null;
位图bm=Bitmap.createBitmap(宽度、高度、Bitmap.Config.ARGB_8888);
对于(int y=0;y>16)和0xFF;
int g_s=(pix_s>>8)和0xFF;
int b_s=pix_s&0xFF;
int r_d=(pix_d>>16)和0xFF;
int g_d=(pix_d>>8)和0xFF;
int b_d=pix_d&0xFF;
int r=(int)((1-重量)*r_s+重量*r_d);
int g=(int)((1-重量)*g_s+重量*g_d);
int b=(int)((1-重量)*b_s+重量*b_d);
int pix=0xff000000 |(r它显示如何更改位图的不透明度,它更改RGB颜色的alpha通道。

它向您展示了如何在画布上覆盖两个位图

您是想在图像视图中显示还是出于其他目的?出于其他目的。我不想显示生成的位图。您觉得如何使用alpha并将其覆盖在画布上?您介意给我一个简短的实际示例吗?对不起,我不能给出你可以看到我正在做的一个完整的例子,但看看我提出的解决方案,这就是我解决问题的方法