Android 设置图片 Bitmap任意透明度

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

第一种思路:

public static Bitmap getTransparentBitmap(Bitmap sourceImg, int number){
        int[] argb = new int[sourceImg.getWidth() * sourceImg.getHeight()];

        sourceImg.getPixels(argb, 0, sourceImg.getWidth(), 0, 0, sourceImg

                .getWidth(), sourceImg.getHeight());// 获得图片的ARGB值

        number = number * 255 / 100;

        for (int i = 0; i < argb.length; i++) {

            argb[i] = (number << 24) | (argb[i] & 0x00FFFFFF);

        }

        sourceImg = Bitmap.createBitmap(argb, sourceImg.getWidth(), sourceImg

                .getHeight(), Config.ARGB_8888);

        return sourceImg;
    }

上述代码经本人亲测可用,修正了链接 的两个错误。number的范围是0-100,0表示完全透明即完全看不到。可以看到最关键的一步是argb[i] = (number << 24) | (argb[i] & 0x00FFFFFF); 通过(argb[i] & 0x00FFFFFF)将第i点的像素的A通道置为0,然后和(num<<24)进行或操作。移位参见 链接

第二种思路:

示例代码:

    class drawCanvas extends View {
        public drawCanvas(Context context) {
            super(context);
        }

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);

            // 取得Resource 图片的Bitmap
            Bitmap vBitmap = BitmapFactory.decodeResource( this.getResources()
                                                         , R.drawable.icon
                                                         );

            // 建立Paint 物件
            Paint vPaint = new Paint();
            vPaint .setStyle( Paint.Style.STROKE );   //空心
            vPaint .setAlpha( 75 );   // 

            canvas.drawBitmap ( vBitmap , 50, 100, null );  //无透明
            canvas.drawBitmap ( vBitmap , 50, 200, vPaint );  //有透明
        }
    }

关于canvas.drawBitmap详见 链接

两种方法各有用途,哪个方面用哪。

时间: 2024-10-12 04:34:58

Android 设置图片 Bitmap任意透明度的相关文章

Android 设置图片倒影效果

首先,贴出效果图: 1.布局文件main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_p

Android 设置图片透明度

我了解的比较快捷的ImageView设置图片的透明度的方法有: setAlpha(); setImageAlpha(); getDrawable().setAlpha(). 其中setAlpha()已经不提倡使用了.通过看源码,我们发现setImageAlpha()的方法,实际就是setAlpha(),两者完全一样. 关于第三中方式,是先获取drawable对象,在设置该对象的透明度.需要说明的是,如果还有其他ImageView对象使用了相同的图片资源,那么第三中方式会影响所有使用该资源的Ima

Android设置控件的透明度

设置控件如View,Button等的透明度,有这么几种方法. 比如这里设置按钮button1的透明度. 1.可以在后台的Activity中进行设置.在这里设置button1为半透明,则加上button1.getBackground().setAlpha(128).setAlpha()的括号中可以填0--255之间的数字.数字越大,越不透明.但是这么做的话,不能即时的看到预览,因此无法很好地确定透明度.以下的方法均可以看到设置后的效果,因此可以通过看到的预览来调整透明度. 2.还可以在布局中进行设

Android之图片Bitmap的特殊处理

最近在做一个功能开发:当手指触摸屏幕的时候就出现一种特效.这里需要要五颜六色的图片来实现很绚丽效果,今天我来讲讲如何用一个简单图片如图(1)来实现如图(2)的效果! (图1) (图2) 由上面的(图1)可以知道其中的图象实际上是没有颜色的,其实就是白色和透明度来绘制的四个圆的效果图片!怎么才能实现右边图片的五颜六色的圆的图像呢!这里就是设计到了对bitmap图片处理!下面是对bitmap图片改变颜色的处理方法: public static Bitmap change_bitmap_for_cur

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时,颜色不透明.从A

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中实现将普通的矩形图片绘制成圆角矩形.首先看最终效果: 代码清单: package com.example.phototest; import android.os.Bundle; import android.app.Activity; import android.graphics.Bitmap; import android

Android 图片Bitmap,drawable,res资源图片之间转换

一.知识介绍 ①res资源图片是放在项目res文件下的资源图片 ②BitMap位图,一般文件后缀为BMP,需要编码器编码,如RGB565,RGB8888等.一种逐像素的显示对象,其执行效率高,但缺点也很明显,存储效率低. ③Drawable,通用的图形对象,它可以装载常用的图像,GIF,PNG,JPG,也支持BMP,提供一些高级的可视化的对象,如渐变,图形等. 二.项目案例 [步骤] ①将图片放入res/drawable文件夹中,这里面的图片属于res资源图片 ②将图片处理定义成工具类,方便使用

android 背景图片的设置

在java文件中对控件设置背景图片 layout.setBackgroundDrawable(getResources().getDrawable(R.drawable.bgimage)) 在设置中,通过发送广播对整个布局中的背景进行更改. menu_bg1.setOnClickListener(new SendBroadcast()); private class SendBroadcast implements View.OnClickListener { @Override public