1

可能重复:
设置位图图像的 alpha!

我想在改变搜索栏的进度时改变位图的不透明度。我正在使用下面的代码。

opacityseekbar.setMax(255);
opacityseekbar.setProgress(255);
opacityseekbar.setOnSeekBarChangeListener( new OnSeekBarChangeListener()
                {

                    public void onStopTrackingTouch(SeekBar arg0) {
                        // TODO Auto-generated method stub


                    }

                    public void onStartTrackingTouch(SeekBar arg0) {
                        // TODO Auto-generated method stub

                    }

                    public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
                        // TODO Auto-generated method stub
                        Log.e("Progress Value", "Progress number" + arg1);


                        Bitmap mutableBitmap = theTattoo.isMutable()? theTattoo: theTattoo.copy(Bitmap.Config.ARGB_8888, true);
                        Canvas canvas = new Canvas(mutableBitmap);
                        int colour = ((opacityseekbar.getProgress() << 24) & 0xFF000000);
                        canvas.drawColor(colour, Mode.DST_IN);

                        theTattoo=mutableBitmap;




                    }
                });

但是,当我尝试这样做时。与搜索栏相比,它可以非常快速地改变不透明度。此外,即使我们增加搜索栏,它也总是会降低不透明度。我在做什么错?请分享您的建议。

4

2 回答 2

4

使用 aBitmapDrawable而不是Bitmap直接使用 a。

更改不透明度要容易得多:

BitmapDrawable bmpDrawable = new BitmapDrawable(getResources(), bitmap);
bmpDrawable.setAlpha(150);
于 2012-08-28T12:11:10.677 回答
2

您可以使用 Color.argb .. 这是示例代码。

canvas.drawColor(Color.argb(alpha, red, green, blue));

其中 alpha 是不透明度,因此您可以在 alpha 中使用您的 progess 值。

这里 aplha, red, green & blue 必须是 0 到 255

在您的情况下,您必须每次通过相同的 RGB 只需更改 Alpha 值

于 2012-09-05T10:52:06.360 回答