android 如何設定圖片顏色的透明度
作者:田仁智
Android系統支援的顏色是由4個值組成的,前3個為RGB,也就是我們常說的三原色(紅、綠、藍),最後一個值是A,也就是Alpha。這4個值都在0~255之間。顏色值越小,表示該顏色越淡,顏色值越大,表示該顏色越深。如果RGB都是0,就是黑色,如果都為255,就是白色。Alpha也需要在0~255之間變化。Alpha的值越小,顏色就越透明,Alpha的值越大,顏色就不透明。當Alpha的值為0時,顏色完全透明,完全透明的點陣圖或者圖形從View上消失。當Alpha的值為255時,顏色不透明。從Alpha的特性可知,設定顏色的透明度實際上就是設定Alpha值。
設定顏色的透明度可以通過Paint類的setAlpha方法來完成。因為做專案中,很多時候不需要讓照片完全透明的,所以試驗做了一個可以調節圖片透明度的程式。
本例子通過一個滑桿(SeekBar)元件改變點陣圖中顏色的Alpha值(透明度)。顯示點陣圖的MyView類的程式碼如下:
private class MyView extends View
{
private Bitmap bitmap;
public MyView(Context context)
{
super(context);
InputStream is =getResources().openRawResource(R.drawable.image);
bitmap = BitmapFactory.decodeStream(is);
setBackgroundColor(Color.WHITE);
}
@Override
protected void onDraw(Canvas canvas)
{
Paint paint = new Paint();
paint.setAlpha(alpha);
canvas.drawBitmap(bitmap, new Rect(0, 0, bitmap
.getHeight()), new Rect(10, 10, 310, 235), paint);
}
}
上面程式碼中的drawBitMap方法的第2個引數表示原點陣圖的複製區域,在本例中表示覆制整個原點陣圖。第3個引數表示繪製的目標區域。
SeekBar元件的onProgressChanged時間方法的程式碼如下:
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser)
{
alpha = progress;
setTitle("alpha:" + progress);
myView.invalidate();
}
執行本例,將滑桿移動到靠左和靠右的位置,將會看到如下面兩個圖的效果: