1. 程式人生 > >基於android 實現擷取 內容超過螢幕大小的長圖

基於android 實現擷取 內容超過螢幕大小的長圖

任何事都要去試試,只停留在想象的層面,那也等於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