把View转化成Bitmap的方法

转自:http://blog.csdn.net/chenshijun0101/article/details/38022789

方法一:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.     * 把View绘制到Bitmap上 
  3.     * @param view 需要绘制的View 
  4.     * @param width 该View的宽度 
  5.     * @param height 该View的高度 
  6.     * @return 返回Bitmap对象 
  7.     * add by csj 13-11-6 
  8.     */  
  9.     public Bitmap getViewBitmap(View comBitmap, int width, int height) {  
  10.         Bitmap bitmap = null;  
  11.         if (comBitmap != null) {  
  12.             comBitmap.clearFocus();  
  13.             comBitmap.setPressed(false);  
  14.   
  15.             boolean willNotCache = comBitmap.willNotCacheDrawing();  
  16.             comBitmap.setWillNotCacheDrawing(false);  
  17.   
  18.             // Reset the drawing cache background color to fully transparent  
  19.             // for the duration of this operation  
  20.             int color = comBitmap.getDrawingCacheBackgroundColor();  
  21.             comBitmap.setDrawingCacheBackgroundColor(0);  
  22.             float alpha = comBitmap.getAlpha();  
  23.             comBitmap.setAlpha(1.0f);  
  24.   
  25.             if (color != 0) {  
  26.                 comBitmap.destroyDrawingCache();  
  27.             }  
  28.               
  29.             int widthSpec = View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY);  
  30.             int heightSpec = View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY);  
  31.             comBitmap.measure(widthSpec, heightSpec);  
  32.             comBitmap.layout(00, width, height);  
  33.   
  34.             comBitmap.buildDrawingCache();  
  35.             Bitmap cacheBitmap = comBitmap.getDrawingCache();  
  36.             if (cacheBitmap == null) {  
  37.                 Log.e("view.ProcessImageToBlur""failed getViewBitmap(" + comBitmap + ")",   
  38.                         new RuntimeException());  
  39.                 return null;  
  40.             }  
  41.             bitmap = Bitmap.createBitmap(cacheBitmap);  
  42.             // Restore the view  
  43.             comBitmap.setAlpha(alpha);  
  44.             comBitmap.destroyDrawingCache();  
  45.             comBitmap.setWillNotCacheDrawing(willNotCache);  
  46.             comBitmap.setDrawingCacheBackgroundColor(color);  
  47.         }  
  48.         return bitmap;  
  49.     }  
  50.       

方法二:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. private Bitmap getViewBitmap(View v) {    
  2.         v.clearFocus();    
  3.         v.setPressed(false);    
  4.     
  5.         boolean willNotCache = v.willNotCacheDrawing();    
  6.         v.setWillNotCacheDrawing(false);    
  7.     
  8.         // Reset the drawing cache background color to fully transparent    
  9.         // for the duration of this operation    
  10.         int color = v.getDrawingCacheBackgroundColor();    
  11.         v.setDrawingCacheBackgroundColor(0);    
  12.     
  13.         if (color != 0) {    
  14.             v.destroyDrawingCache();    
  15.         }    
  16.         v.buildDrawingCache();    
  17.         Bitmap cacheBitmap = v.getDrawingCache();    
  18.         if (cacheBitmap == null) {    
  19.             Log.e("Folder""failed getViewBitmap(" + v + ")"new RuntimeException());    
  20.             return null;    
  21.         }    
  22.     
  23.         Bitmap bitmap = Bitmap.createBitmap(cacheBitmap);    
  24.     
  25.         // Restore the view    
  26.         v.destroyDrawingCache();    
  27.         v.setWillNotCacheDrawing(willNotCache);    
  28.         v.setDrawingCacheBackgroundColor(color);    
  29.     
  30.         return bitmap;    
  31.     }  

方法三:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. View view = mLauncher.getDragLayer();  
  2. view.setDrawingCacheEnabled(true);  
  3. Bitmap bitmap = view.getDrawingCache();  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值