基於android 實現擷取 內容超過螢幕大小的長圖
阿新 • • 發佈:2019-02-08
任何事都要去試試,只停留在想象的層面,那也等於waste of time,不要想當然
先看需求:
當內容已經超出了手機可顯示的範圍時,要擷取這些所有的內容,從而生成所謂的”長截圖”.
沒什麼難點,利用了webview的特點,和scrollview 的view的繪製,生成bitmap。
主要程式碼:
//這是scrollview的
public static Bitmap getBitmapByView(ScrollView scrollView) {
int h = 0;
Bitmap bitmap = null;
for (int i = 0 ; i < scrollView.getChildCount(); i++) {
h += scrollView.getChildAt(i).getHeight();
scrollView.getChildAt(i).setBackgroundColor(
Color.parseColor("#ffffff"));
}
bitmap = Bitmap.createBitmap(scrollView.getWidth(), h,
Bitmap.Config.RGB_565);
final Canvas canvas = new Canvas(bitmap);
scrollView.draw(canvas);
return bitmap;
}
/**
* mScrollView
*
* @param context
* @param scrollView
*/
public static void scrollviewContent2Png(Context context,
ScrollView scrollView) {
Bitmap bmp = null ;
bmp = getBitmapByView(scrollView);
saveBitmapToCamera(context, bmp, null);
}
//這是webview的,利用了webview的api
private static Bitmap captureWebView(WebView webView) {
Picture snapShot = webView.capturePicture();
Bitmap bmp = Bitmap.createBitmap(snapShot.getWidth(),
snapShot.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
snapShot.draw(canvas);
return bmp;
}
簡單吧?….
程式碼粗略,只實現了功能部分,在圖片生成的時候,未使用執行緒,如果還有其他比較好的方案,可以相互交流下:
具體demo下載
http://download.csdn.net/detail/jarlen/8910051
或者github
https://github.com/jarlen/content2picture