輕松獲取布局截圖 或友盟分享截圖

這面我就不說屏幕截圖了, 直接進入任意布局獲取截圖。

因為我這面用到了友盟分享布局截圖 所以我就分享給大家了 ,

????。。。。。。

總體來說 主要還是得到布局的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 也需要釋放掉啊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容