2016-04-01 39 views
0

画像を保存するときに何か間違っている必要があります。私はそれをJPEGとして保存すると、それは空白の黒い画像です。Android Webview、画像ファイルとして保存しようとすると空白の画像しか保存されていないようです

約1秒後にアプリケーションでwebviewが読み込まれます。

..... 
     webView = (WebView)findViewById(R.id.webview_1); 

     webView.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onPageFinished(WebView view, String url) { 
       //Bitmap b = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); 
       Bitmap b = getBitmapFromWebView(webView); 
       Canvas c = new Canvas(b); 
       view.draw(c); 

       try { 
        FileOutputStream fos = openFileOutput("test.png", Context.MODE_APPEND); 
        //fos = new FileOutputStream("/sdcard/" + "page.jpg"); 
        if (fos != null) { 
         b.compress(Bitmap.CompressFormat.PNG, 90, fos); 
         fos.close(); 
        } 
       } 
       catch(Exception e) { 
        System.out.println("-----error--"+e); 
       } 
      } 
     }); 

     WebSettings webSettings = webView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     webSettings.setLoadWithOverviewMode(true); 
     webSettings.setUseWideViewPort(true); 
     webView.addJavascriptInterface(new WebAppInterface(this), "Android"); 
     webView.loadUrl("file:///android_asset/World_display.html"); 



.... 
    public Bitmap getBitmapFromWebView(WebView wv) { 
     webView.setDrawingCacheEnabled(true); 
     webView.buildDrawingCache(true); 
     Bitmap bitmap = Bitmap.createBitmap(wv.getDrawingCache()); 
     webView.setDrawingCacheEnabled(false); 
     return bitmap; 
    } 

答えて

0

結局のところ、WebViewのはいつかonPageFinished後まで表示されません。 webviewがまだレンダリングされていないので、このコードはすべて私のonCreateにあります。 onCreate外の別の方法として、これをやってしまった

public Bitmap getBitmapFromWebView(View v) { 
    webView.setDrawingCacheEnabled(true); 
    webView.buildDrawingCache(true); 
    Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache()); 
    try { 
     FileOutputStream fos = openFileOutput("test.png", Context.MODE_PRIVATE); 
     //fos = new FileOutputStream("/sdcard/" + "page.jpg"); 
     if (fos != null) { 
      bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos); 
      fos.close(); 
     } 
    } catch (Exception e) { 
     System.out.println("-----error--" + e); 
    } 
    return bitmap; 
} 

とのonclickのonCreateで「送信」ボタンの中からこのメソッドを呼び出します。

0

これを試してください:

public static Bitmap getBitmapfromView(View v) { 
    Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(), 
      Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(bitmap); 
    v.draw(canvas); 
    return bitmap; 
} 
関連する問題