日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 长截屏实现,Android实现截屏与截长图功能

發布時間:2023/12/10 Android 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 长截屏实现,Android实现截屏与截长图功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例為大家分享了Android實現截屏與截長圖功能展示的具體代碼,供大家參考,具體內容如下

Demo在GitHub的地址:ScreenShoot

在Android開發中,有時候會遇到需要截屏分享到朋友圈或者QQ,截屏有截取當前屏幕,也有需要截取不僅一個屏幕,可能會很長。

截取當前屏幕并保存到內存卡的方法:

// 獲取指定Activity的截屏,保存到png文件

public static Bitmap takeScreenShot(Activity activity) {

// View是你需要截圖的View

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

view.setDrawingCacheEnabled(true);

view.buildDrawingCache();

Bitmap b1 = view.getDrawingCache();

// 獲取狀態欄高度

Rect frame = new Rect();

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

int statusBarHeight = frame.top;

System.out.println(statusBarHeight);

// 獲取屏幕長和高

int width = activity.getWindowManager().getDefaultDisplay().getWidth();

int height = activity.getWindowManager().getDefaultDisplay()

.getHeight();

// 去掉標題欄

// Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455);

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

- statusBarHeight);

view.destroyDrawingCache();

return b;

}

// 保存到sdcard

public static void savePic(Bitmap b, String strFileName) {

FileOutputStream fos = null;

try {

fos = new FileOutputStream(strFileName);

if (null != fos) {

b.compress(Bitmap.CompressFormat.PNG, 90, fos);

fos.flush();

fos.close();

}

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

// 程序入口 截取當前屏幕

public static void shootLoacleView(Activity a,String picpath) {

ScreenShot.savePic(ScreenShot.takeScreenShot(a), picpath);

}

當視圖超過一個屏幕的時候,可能是listview,也可能是Scrollview,這時候,其實截圖就是對listview或者Scrollview進行截圖:

/**

* 截取scrollview的屏幕

* **/

public static Bitmap getScrollViewBitmap(ScrollView scrollView,String picpath) {

int h = 0;

Bitmap bitmap;

// 獲取listView實際高度

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

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

}

Log.d(TAG, "實際高度:" + h);

Log.d(TAG, " 高度:" + scrollView.getHeight());

// 創建對應大小的bitmap

bitmap = Bitmap.createBitmap(scrollView.getWidth(), h,

Bitmap.Config.ARGB_8888);

final Canvas canvas = new Canvas(bitmap);

scrollView.draw(canvas);

// 測試輸出

FileOutputStream out = null;

try {

out = new FileOutputStream(picpath);

} catch (FileNotFoundException e) {

e.printStackTrace();

}

try {

if (null != out) {

bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);

out.flush();

out.close();

}

} catch (IOException e) {

}

return bitmap;

}

private static String TAG = "Listview and ScrollView item 截圖:";

/**

* 截圖listview

* **/

public static Bitmap getListViewBitmap(ListView listView,String picpath) {

int h = 0;

Bitmap bitmap;

// 獲取listView實際高度

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

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

}

Log.d(TAG, "實際高度:" + h);

Log.d(TAG, "list 高度:" + listView.getHeight());

// 創建對應大小的bitmap

bitmap = Bitmap.createBitmap(listView.getWidth(), h,

Bitmap.Config.ARGB_8888);

final Canvas canvas = new Canvas(bitmap);

listView.draw(canvas);

// 測試輸出

FileOutputStream out = null;

try {

out = new FileOutputStream(picpath);

} catch (FileNotFoundException e) {

e.printStackTrace();

}

try {

if (null != out) {

bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);

out.flush();

out.close();

}

} catch (IOException e) {

}

return bitmap;

}

// 程序入口 截取ScrollView

public static void shootScrollView(ScrollView scrollView,String picpath) {

ScreenShot.savePic(getScrollViewBitmap(scrollView, picpath), picpath);

}

// 程序入口 截取ListView

public static void shootListView(ListView listView,String picpath) {

ScreenShot.savePic(getListViewBitmap(listView,picpath), picpath);

}

截長圖的效果圖:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持找一找教程網。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。