日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

android截全屏方法,Android实现全屏截图或长截屏功能

發(fā)布時(shí)間:2024/3/24 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android截全屏方法,Android实现全屏截图或长截屏功能 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文實(shí)例為大家分享了Android實(shí)現(xiàn)全屏截圖或長截屏功能的具體代碼,供大家參考,具體內(nèi)容如下

全屏截圖:

/**

* 傳入的activity是要截屏的activity

*/

public static Bitmap getViewBitmap(Activity activity) {

// View是你需要截圖的View

View view = activity.getWindow().getDecorView();

//這兩句必須寫,否則getDrawingCache報(bào)空指針

view.setDrawingCacheEnabled(true);

view.buildDrawingCache();

Bitmap b1 = view.getDrawingCache();

// 獲取狀態(tài)欄高度

Rect frame = new Rect();

activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);

int statusBarHeight = frame.top;

// 獲取屏幕長和高

int width = activity.getResources().getDisplayMetrics().widthPixels;

int height = activity.getResources().getDisplayMetrics().heightPixels;

// 去掉標(biāo)題欄

Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight);

view.destroyDrawingCache();

return b;

}

ScrollView或者ListView或者LinearLayout等ViewGroup的長截圖:

public static Bitmap getViewGroupBitmap(ViewGroup viewGroup) {

//viewGroup的總高度

int h = 0;

Bitmap bitmap;

// 適用于ListView或RecyclerView等求高度

for (int i = 0; i < viewGroup.getChildCount(); i++) {

h += viewGroup.getChildAt(i).getHeight();

}

// 若viewGroup是ScrollView,那么他的直接子元素有id的話,如下所示:

// h = mLinearLayout.getHeight();

}

// 創(chuàng)建對應(yīng)大小的bitmap(重點(diǎn))

bitmap = Bitmap.createBitmap(scrollView.getWidth(), h, Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bitmap);

scrollView.draw(canvas);

return bitmap;

}

總結(jié):

1. 布局為ScrollView,ListView,RecyclerView等能滑動(dòng)的,用for循環(huán)遍歷子元素求實(shí)際高度。

ps:ScrollView由于只能有一個(gè)直接子元素,那么我們可以直接用他的子元素來求高度。

2. 布局為LinearLayout等ViewGroup,直接.getHeight()獲取

注意:

1. getHeight(),getWidth()不能直接在avtivity生命周期中調(diào)用,因?yàn)閍ctivity尚未生成完畢之前,控件的長寬尚未測量,故所得皆為0

2. 用該方式實(shí)現(xiàn)長截屏需要注意背景色的問題,如果你的截圖背景色出了問題,仔細(xì)檢查XML文件,看看該背景色是否設(shè)置在你截屏的控件中

補(bǔ)充:

對于混合布局比如說:根RelativeLayout布局中有ViewGroup+RelativeLayout等子布局,可以分別測量他們的高度并生成bitmap對象,然后拼接在一起即可。

/**

* 上下拼接兩個(gè)Bitmap,

* drawBitmap的參數(shù):1.需要畫的bitmap

* 2.裁剪矩形,bitmap會(huì)被該矩形裁剪

* 3.放置在canvas的位置矩形,bitmap會(huì)被放置在該矩形的位置上

* 4.畫筆

*/

public static Bitmap mergeBitmap_TB_My(Bitmap topBitmap, Bitmap bottomBitmap) {

int width = topBitmap.getWidth();

int height = topBitmap.getHeight() + bottomBitmap.getHeight();

Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bitmap);

Rect rectTop = new Rect(0, 0, width, topBitmap.getHeight());

Rect rectBottomRes = new Rect(0, 0, width, bottomBitmap.getHeight());

RectF rectBottomDes = new RectF(0, topBitmap.getHeight(), width, height);

canvas.drawBitmap(topBitmap, rectTop, rectTop, null);

canvas.drawBitmap(bottomBitmap, rectBottomRes, rectBottomDes, null);

return bitmap;

}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

總結(jié)

以上是生活随笔為你收集整理的android截全屏方法,Android实现全屏截图或长截屏功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。