如何更改背景图片透明度

来源:互联网 发布:淘宝上有哪些网购美食 编辑:程序博客网 时间:2024/05/02 00:12

       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(bitmapnew Rect(0, 0, bitmap.getWidth(), 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();

    }


1 0
原创粉丝点击