2012-08-28 120 views
1

可能重复:
Set alpha of Bitmap image!如何动态地更改位图的不透明度的Android

我想改变位图的透明度上的搜索条的进度而变化。我正在使用下面的代码。

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; 




        } 
       }); 

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

+0

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

+0

尝试先搜索http://stackoverflow.com/search?q=[android]+bitmap+opacity – Merlin

回答

2

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

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

其中alpha是不透明,所以你可以使用你的阿尔法值陆侃..

这里APLHA,红,绿&蓝色必须是0到255

你的情况

你必须通过每次相同的RGB只是改变阿尔法值

4

使用BitmapDrawable而不是直接与Bitmap一起使用。

这是很容易改变的不透明度:

BitmapDrawable bmpDrawable = new BitmapDrawable(getResources(), bitmap); 
bmpDrawable.setAlpha(150); 
+0

我需要得到的最终结果为位图 –

+0

在这种情况下,您可以创建一个新的位图,并绘制BitmapDrawable位图。 – Dalmas

+0

我试过这段代码。但它一次又一次地返回相同的位图。我认为它只适用于不透明度的静态变化而不是动态变化。 –

相关问题