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
- webView截图保存到本地
- Java实现截图并保存到本地
- quick cocos2dx截图保存到本地
- java实现截图并保存到本地
- webview长截图与短截图+滑动控件ScrollView长截图保存在本地
- Untiy保存截图保存到本地文件夹、并下载截图到场景里
- java零碎总结---java实现截图并保存到本地
- js实现通过canvas截图保存到本地
- Android webview长按图片保存到本地
- Android webview长按图片保存到本地
- Android 截图 代码 截屏 保存图片到本地 根据本地图片路径 显示图片
- 安卓adb-截图/录屏命令,保存到SD卡,导出到本地
- 截图并保存到相册
- Silverlight实用窍门系列:40.Silverlight中捕捉视频,截图保存到本地【附带实例源码】
- Android 获取屏幕截图 和保存到本地的sd卡路径下
- Unity中截图只渲染有像素的区域,并且压缩保存到本地
- Unity3D截图并保存本地目录
- android中截图并保存本地
- 第十五周项目3
- 使用ntpdate校正linux系统的时间
- 【推荐】至今看过最优秀的Webpack入门
- Linux下的环境部署和项目发布
- SpringBoot-认识及入门
- webView截图保存到本地
- mybatis **-mapping.xml文件中if test表达式逻辑判断“并且”,不能用&&
- php7的LNMP环境配置
- ObjectBox[十三] 数据调试
- 关于Idea中右边的maven projects窗口找不到了如何调出来
- LWC 63:746. Min Cost Climbing Stairs
- 如何评价Google在Google I/O 2017发布的Android Go项目?
- CSS 潜藏着的BFC
- 开源整理:酷酷的Android Loading动画,让用户摆脱无聊等待