原文链接:http://blog.csdn.net/yanzi1225627/article/details/29661935

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

第一种思路:

[java] view plain copy print ?
  1. publicstaticBitmapgetTransparentBitmap(BitmapsourceImg,intnumber){
  2. int[]argb=newint[sourceImg.getWidth()*sourceImg.getHeight()];
  3. sourceImg.getPixels(argb,0,sourceImg.getWidth(),0,0,sourceImg
  4. .getWidth(),sourceImg.getHeight());//获得图片的ARGB值
  5. number=number*255/100;
  6. for(inti=0;i<argb.length;i++){
  7. argb[i]=(number<<24)|(argb[i]&0x00FFFFFF);
  8. }
  9. sourceImg=Bitmap.createBitmap(argb,sourceImg.getWidth(),sourceImg
  10. .getHeight(),Config.ARGB_8888);
  11. returnsourceImg;
  12. }

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

第二种思路:

示例代码:

[java] view plain copy print ?
  1. classdrawCanvasextendsView{
  2. publicdrawCanvas(Contextcontext){
  3. super(context);
  4. }
  5. @Override
  6. protectedvoidonDraw(Canvascanvas){
  7. super.onDraw(canvas);
  8. //取得Resource图片的Bitmap
  9. BitmapvBitmap=BitmapFactory.decodeResource(this.getResources()
  10. ,R.drawable.icon
  11. );
  12. //建立Paint物件
  13. PaintvPaint=newPaint();
  14. vPaint.setStyle(Paint.Style.STROKE);//空心
  15. vPaint.setAlpha(75);//
  16. canvas.drawBitmap(vBitmap,50,100,null);//无透明
  17. canvas.drawBitmap(vBitmap,50,200,vPaint);//有透明
  18. }
  19. }

关于canvas.drawBitmap详见 链接

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

更多相关文章

  1. Android中的AOP
  2. mac 系统中Android(安卓)studio的一些快捷键
  3. Android(安卓)招聘
  4. Android快速生成MVP 模式代码
  5. Android(安卓)UI开发第二十篇——仿launcher的左右滑动(用ViewPag
  6. Android(安卓)Toast无延时方法
  7. Android程序中如何执行shell脚本
  8. Android程序有很多Activity,在B中如何关闭整个Android应用程序
  9. 秒懂Android注解处理器(Android(安卓)Annotation Processor)

随机推荐

  1. AutoCompleteTextView的应用
  2. Android dialogUtils 拿来就用
  3. 在 Android(安卓)中调用二进制可执行程序
  4. Android adb常见问题
  5. Android Client 与 C# Server 的Socket通
  6. android 8.1 vts环境和测试
  7. android scrollview 相关
  8. 中国Android大牛
  9. Android实现蒙版弹出框效果
  10. sencha touch中处理Android返回按钮事件