zoukankan      html  css  js  c++  java
  • Android课程---Android 如何用滑杆(SeekBar)组件设置图片颜色的透明度(转)

    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.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();
    
        }

    运行本例,将滑杆移动到靠左和靠右的位置,将会看到如下面两个图的效果:

                                                                                                                            本文转自:http://blog.csdn.net/pku_android/article/details/7625850

  • 相关阅读:
    linux下使用hash_map及STL总结
    编写Linux系统下Daemon程序的方法步骤
    c语言版网络爬虫spiderq
    利用unordered_map代替hash_map My Study
    Mike Wallace of '60 Minutes' to retire
    让Redis使用TCMalloc,实现高性能NOSql服务器
    守护进程的单实例实现_非宁静无以致远_百度空间
    sscanf,sscanf_s及其相关用法 小 楼 一 夜 听 春 雨 博客园
    实现个hash_map容器类玩玩 苍梧 博客园
    [Linux初级]Linux下动态库的生成及链接方法
  • 原文地址:https://www.cnblogs.com/0927wyj/p/5351464.html
Copyright © 2011-2022 走看看