這面我就不說屏幕截圖了, 直接進入任意布局獲取截圖。
因為我這面用到了友盟分享布局截圖 所以我就分享給大家了 ,
????。。。。。。
總體來說 主要還是得到布局的bitmap位圖,接下來你可以存入本地、
也可以借助友盟分享 分享bitmap, 既然你拿到bitmap也就可以隨心所欲了。
首先:
view.setDrawingCacheEnabled(true);//設(shè)置能否緩存圖片信息
view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.buildDrawingCache();
Bitmap bitmap = view.getDrawingCache();
拿到bitmap 重新繪制下
之前我沒有重新繪制分享出去的bitmap,分享出去的bitmap背景應(yīng)該是黑色的或者是透明
然后我就用Canvas 重新繪制
Bitmap newBitmap = Bitmap.createBitmap(bitmap);
Canvas c =new Canvas(newBitmap);
c.drawColor(Color.WHITE);
/** 如果不設(shè)置canvas畫布為白色,則生成透明 */
view.draw(c);
view.setDrawingCacheEnabled(false);//設(shè)置能否緩存圖片信息
view.destroyDrawingCache();//釋放緩存占用的資源
我用了上個方法有時候獲取的bitmap 為空。
其次:
然后我就簡單粗暴
view.setDrawingCacheEnabled(true);//設(shè)置能否緩存圖片信息(drawing cache)
view.buildDrawingCache();//如果能夠緩存圖片,則創(chuàng)建圖片緩存
Bitmap bitmap = ?view.getDrawingCache();//如果圖片已經(jīng)緩存,返回一個bitmap*/
其實這樣也可以拿到bitmap位圖,但是在我截圖之前賦值TextView,有的TextView不顯示文字 ;
所以我又想到了第三種方法 對measur()這個方法搞一搞
view.measure(View.MeasureSpec.makeMeasureSpec(CommonTool.getScreenWidth(IApplication.getInstance()), View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(CommonTool.getScreenHeight(IApplication.getInstance()), View.MeasureSpec.EXACTLY));
view.layout(0,0,view.getMeasuredWidth(),
view.getMeasuredHeight());
這樣就好了 ,measure()里面是有兩個參數(shù)的
分別是我們自己.makeMeasureSpec()這個方法自己制造的
CommonTool.getScreenHeight(IApplication.getInstance())
這個是我自己封裝的拿取屏幕尺寸。
最后:
view.setDrawingCacheEnabled(true);//設(shè)置能否緩存圖片信息
view.measure(View.MeasureSpec.makeMeasureSpec(CommonTool.getScreenWidth(IApplication.getInstance()), View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(CommonTool.getScreenHeight(IApplication.getInstance()), View.MeasureSpec.EXACTLY));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.buildDrawingCache();
Bitmap bitmap = view.getDrawingCache();
拿到bitmap 重新繪制下
之前我沒有重新繪制分享出去的bitmap,分享出去的bitmap背景應(yīng)該是黑色的或者是透明。
然后我用Canvas 重新繪制,
Bitmap newBitmap = Bitmap.createBitmap(bitmap);
Canvas c =new Canvas(newBitmap);
c.drawColor(Color.WHITE);
/** 如果不設(shè)置canvas畫布為白色,則生成透明 */
view.draw(c);
view.setDrawingCacheEnabled(false);//設(shè)置能否緩存圖片信息
view.destroyDrawingCache();//釋放緩存占用的資源
newBitmap 這個時候 就是我們最終的想要的結(jié)果了,去處理這個newBitmap。
最后bitmap 也需要釋放掉啊。