webView截图保存到本地

来源:互联网 发布:淘宝会员名怎么改 编辑:程序博客网 时间:2024/05/21 01:54
package com.ebestmobile.app.longfigureinterception;import android.content.Context;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Paint;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Toast;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class MainActivity extends AppCompatActivity {    private Toolbar toolbar;    private WebView webView;    private Bitmap bitmap;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        toolbar = (Toolbar)findViewById(R.id.toolbar);        webView = (WebView) findViewById(R.id.webView);        setSupportActionBar(toolbar);        setWebView();    }    //设置webView    private void setWebView(){        webView.loadUrl("http://www.sina.com.cn/");        WebSettings webSettings = webView.getSettings();        //如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript        webSettings.setJavaScriptEnabled(true);        //设置自适应屏幕,两者合用        webSettings.setUseWideViewPort(true); //将图片调整到适合webview的大小        webSettings.setLoadWithOverviewMode(true); // 缩放至屏幕的大小        //缩放操作        webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。        webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放        webSettings.setDisplayZoomControls(false); //隐藏原生的缩放控件        //其他细节操作        webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //关闭webview中缓存        webSettings.setAllowFileAccess(true); //设置可以访问文件        webSettings.setJavaScriptCanOpenWindowsAutomatically(true); //支持通过JS打开新窗口        webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片        webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式        webView.setWebViewClient(new WebViewClient(){            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                view.loadUrl(url);                return super.shouldOverrideUrlLoading(view, url);            }        });    }    //截图    private Bitmap captureScreenforRecord(){        webView.measure(View.MeasureSpec.makeMeasureSpec(                View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED),                View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));        webView.layout(0, 0, webView.getMeasuredWidth(),                webView.getMeasuredHeight());        webView.setDrawingCacheEnabled(true);        webView.buildDrawingCache();        Bitmap bm = Bitmap.createBitmap(webView.getMeasuredWidth(),                webView.getMeasuredHeight(), Bitmap.Config.RGB_565);        Canvas bigcanvas = new Canvas(bm);        Paint paint = new Paint();        int iHeight = bm.getHeight();        bigcanvas.drawBitmap(bm, 0, iHeight, paint);        webView.draw(bigcanvas);        return  bm;    }    /**     * 保存图片到手机上,并通知图库更新     * @param context     * @param bmp     * @return     */    public  String saveImageToGallery(Context context, Bitmap bmp) {        // 首先保存图片        File appDir = new File(Environment.getExternalStorageDirectory(), "LongImage");        if (!appDir.exists()) {            appDir.mkdir();        }        String fileName = System.currentTimeMillis() + ".png";        File file = new File(appDir, fileName);        try {            FileOutputStream fos = new FileOutputStream(file);            bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);            fos.flush();            fos.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        // 最后通知图库更新        String path = Environment.getExternalStorageDirectory() + "/ LongImage /"                + fileName;        context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + path)));        return Environment.getExternalStorageDirectory() + "/ LongImage/" + fileName;    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.menu_item,menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()){            case R.id.setting:                //截图                bitmap = captureScreenforRecord();                if (bitmap!=null){                    //保存图片                    String path = saveImageToGallery(this,bitmap);                    Toast.makeText(this, "图片截取成功,保存路径为:"+path, Toast.LENGTH_SHORT).show();                }                break;//            case R.id.share://                //保存图片//                String path = saveImageToGallery(this,bitmap);//                Toast.makeText(this, "图片保存成功"+path, Toast.LENGTH_SHORT).show();//                break;            default:                break;        }        return super.onOptionsItemSelected(item);    }}
阅读全文
0 0
原创粉丝点击