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

时间: 2024-10-04 09:50:47

Android课程---Android 如何用滑杆(SeekBar)组件设置图片颜色的透明度(转)的相关文章

Android课程---Android设置透明效果的三种方法(转)

1.使用Android系统自带的透明效果资源 <Button  android:background="@android:color/transparent"/> 2.使用ARGB来控制 半透明 <Button  android:background="#e0000000"/> 透明 <Button  android:background="#00000000"/> 颜色和不透明度 (alpha) 值以十六进制

android textview在code(代码)中设置图片 和XML设置图片

给大家提供一些方法,大家可以直接拿去使用,textview在code{代码}中设置上下左右设置图片.有几种方法,这个给大家列举一些. 下面方法建议放在util工具类中,其中的好处就不用我多讲了. ,//资源ID public static void setTextDrawable(Context context, int drawableRes,//资源ID   TextView tvName) {  Drawable drawableTop = context.getResources().g

Android课程---Android Studio安装及使用

2013年Google I/O 大会首次发布了Android Studio IDE(Android平台集成开发环境).它基于Intellij IDEA 开发环境,旨在取代Eclipse和ADT(Android开发者工具)为开发者提供更好的开发工具.既然Google一直在努力推广,相信不久以后就有望赶上Eclipse.                  ----摘要 相比Eclipse,Android Studio IDE有自己优缺点: 优点:对UI界面设计和编写代码有更好地支持,可以方便地调整设

Android课程---Android Studio使用小技巧:提取方法代码片段

这篇文章主要介绍了Android Studio使用小技巧:提取方法代码片段,本文分享了一个快速复制粘贴方法代码片段的小技巧,并用GIF图演示,需要的朋友可以参考下 今天来给大家介绍一个非常有用的Studio Tips,有些时候我们在一个方法内部写了过多的代码,然后想要把一些代码提取出来再放在一个单独的方法里,通常我们的做法是复制粘贴,现在我来教给大家一个非常简洁的方法,先看下gif演示吧:

Android课程---Android Studio的一些小技巧

APK瘦身 在Android Studio中我们可以开启混淆,和自动删除没有Resources文件,来达到给APP瘦身的目的,这对于一些维护很久的老项目比较有用,里面有很多无效的Resource, 删除后生成的APK会小很多 我们只需要在项目的build.gradle中加入 android { buildTypes { release { minifyEnabled true shrinkResources true } } } minifyEnabled 是开启混淆shrinkResource

Android课程---Android ImageView的scaleType属性与adjustViewBounds属性(转)

ImageView的scaleType的属性有好几种,分别是matrix(默认).center.centerCrop.centerInside.fitCenter.fitEnd.fitStart.fitXY android:scaleType="center" 保持原图的大小,显示在ImageView的中心.当原图的size大于ImageView的size,超过部分裁剪处理. android:scaleType="centerCrop" 以填满整个ImageView

Android课程---手机尺寸相关的概念 +尺寸单位+关于颜色

手机的尺寸: 屏幕对角线的长度,单位为英寸(2.54cm) 手机的分辨率: 屏幕能显示的像素的数量, 一般用在长方向上数量*宽方向上数量来表达 手机的像素密度: pixels per inch,也称PPi,即每英寸屏幕能显示的像素数,像素密度越大,显示画面细节就越丰富. 计算:像素密度={1+√[(长度像素数-1)^2+(宽度像素数-1)^2]}/屏幕尺寸 DPI: Dots Per Inch(每英寸所打印的点数或线数)的缩写,用来表示打印机打印分辨率, 但有时也会用dpi来代指ppi 手机的密

Android 设置图片 Bitmap任意透明度

两种思路,第一种思路是通过对Bitmap进行操作,将Bitmap的像素值get到一个int[]数组里,因为在android里Bitmap通常是ARGB8888格式,所以最高位就是A通道的值,对齐进行改变后再新建一个Bitmap即可.第二种思路是通过设置canvas的paint的透明度,然后通过canvas.drawBitmap()来改变View的透明度.具体代码如下: 第一种思路: public static Bitmap getTransparentBitmap(Bitmap sourceIm

Android 三档自定义滑动开关,禁止点击功能的实现,用默认的seekbar组件实现

android三档自定义滑动开关,禁止点击功能的实现,普通开关网上有很多例子,三档滑动开关的则找了整天都没有相关例子,开始用普通开关的源码修改了自己实现了一个类,但效果不如人意,各种边界情况的算法很难考虑周全很难调试出满意的效果. 今 天尝试用系统组件seekbar实现自定义风格的滑动条,但禁止点击和判断滑动不到指定范围返回花了不少时间,网上基本上都说用继承seekbar修改里 面的方法实现,但整了半天也没有一个能够达到效果了,而且感觉太麻烦了,所以自己把默认的实现的几个接口返回的信息详细打印出