這面我就不說(shuō)屏幕截圖了坝橡, 直接進(jìn)入任意布局獲取截圖。
因?yàn)槲疫@面用到了友盟分享布局截圖 所以我就分享給大家了 锣杂,
????番宁。。柒竞。播聪。布隔。衅檀。
總體來(lái)說(shuō) 主要還是得到布局的bitmap位圖,接下來(lái)你可以存入本地霎俩、
也可以借助友盟分享 分享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 重新繪制下
之前我沒(méi)有重新繪制分享出去的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();//釋放緩存占用的資源
我用了上個(gè)方法有時(shí)候獲取的bitmap 為空蹬叭。
其次:
然后我就簡(jiǎn)單粗暴
view.setDrawingCacheEnabled(true);//設(shè)置能否緩存圖片信息(drawing cache)
view.buildDrawingCache();//如果能夠緩存圖片状知,則創(chuàng)建圖片緩存
Bitmap bitmap = ?view.getDrawingCache();//如果圖片已經(jīng)緩存饥悴,返回一個(gè)bitmap*/
其實(shí)這樣也可以拿到bitmap位圖,但是在我截圖之前賦值TextView起宽,有的TextView不顯示文字 济榨;
所以我又想到了第三種方法 對(duì)measur()這個(gè)方法搞一搞
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()里面是有兩個(gè)參數(shù)的
分別是我們自己.makeMeasureSpec()這個(gè)方法自己制造的
CommonTool.getScreenHeight(IApplication.getInstance())
這個(gè)是我自己封裝的拿取屏幕尺寸。
最后:
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 重新繪制下
之前我沒(méi)有重新繪制分享出去的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 這個(gè)時(shí)候 就是我們最終的想要的結(jié)果了牺勾,去處理這個(gè)newBitmap。
最后bitmap 也需要釋放掉啊翻具。