使用背景

有些情况下我们安卓要展示一些svg格式的文件,例如要展示一些各种场景下图纸的svg格式文件(这里不是通过android studio进行导入),通常这些文件我们存放到android project下的assets文件夹中,在比如我们需要从后台下载svg格式的图片保存到本地然后在进行展示加载,这时候我们可以通过android WebView控件进行加载文件。

webView 加载项目assets中的svg文件

android 页面的xml布局就不多说了,就是一个webView控件,下面我们看一下代码,需要对webView进行设置一些相关的属性,然后在进行加载assets中的svg文件。

//设置webView
WebSettings webSettings=binding.wbViewOne.getSettings();
webSettings.setLoadWithOverviewMode(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
binding.wbViewOne.getSettings().setBuiltInZoomControls(true);// 会出现放大缩小的按钮
binding.wbViewOne.getSettings().setSupportZoom(true);
binding.wbViewOne.getSettings().setSupportMultipleWindows(true);
binding.wbViewOne.setInitialScale(75);

//加载assets中的svg
binding.wbViewOne.loadUrl("file:///android_asset/bixin.svg");

webView 加载手机存储中的svg文件

我们为了方便演示就把文件放到手机储存中的项目包名路径下,因为放到对应的软件包名下面,这里可以直接进行文件的访问权限,其实加载手机存储中的svg文件和加载assets中的文件webView的配置差不多,但是我们要注意因为webView要访问我们内部存储中的文件,我们要在WebSetting中添加允许读取本地文件的代码 webSettingsTwo.setAllowFileAccess(true);这样才能访问到文件。

//设置WebSettings
WebSettings webSettingsTwo=binding.wbViewTwo.getSettings();
webSettingsTwo.setLoadWithOverviewMode(true);
webSettingsTwo.setJavaScriptEnabled(true);
webSettingsTwo.setUseWideViewPort(true);
//允许读取本地文件
webSettingsTwo.setAllowFileAccess(true);
binding.wbViewTwo.getSettings().setBuiltInZoomControls(true);// 会出现放大缩小的按钮
binding.wbViewTwo.getSettings().setSupportZoom(true);
binding.wbViewTwo.getSettings().setSupportMultipleWindows(true);
binding.wbViewTwo.setInitialScale(75);
//加载手机存储本地的svg
binding.wbViewTwo.loadUrl("file://"+ getExternalFilesDir(null) + "/newSvg.svg");

我们来看一下2种情况下运行效果图,这里的素材是来着iconfont上的资源,另外如果要是仅仅为了单纯引入一些素材图标svg的话我们可以直接使用android studio进行导入到drawable中使用ImageView进行直接展示.

Android WebView加载SVG格式文件_webview

使用背景

有些情况下我们安卓要展示一些svg格式的文件,例如要展示一些各种场景下图纸的svg格式文件(这里不是通过android studio进行导入),通常这些文件我们存放到android project下的assets文件夹中,在比如我们需要从后台下载svg格式的图片保存到本地然后在进行展示加载,这时候我们可以通过android WebView控件进行加载文件。

webView 加载项目assets中的svg文件

android 页面的xml布局就不多说了,就是一个webView控件,下面我们看一下代码,需要对webView进行设置一些相关的属性,然后在进行加载assets中的svg文件。

//设置webView
WebSettings webSettings=binding.wbViewOne.getSettings();
webSettings.setLoadWithOverviewMode(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
binding.wbViewOne.getSettings().setBuiltInZoomControls(true);// 会出现放大缩小的按钮
binding.wbViewOne.getSettings().setSupportZoom(true);
binding.wbViewOne.getSettings().setSupportMultipleWindows(true);
binding.wbViewOne.setInitialScale(75);

//加载assets中的svg
binding.wbViewOne.loadUrl("file:///android_asset/bixin.svg");

webView 加载手机存储中的svg文件

我们为了方便演示就把文件放到手机储存中的项目包名路径下,因为放到对应的软件包名下面,这里可以直接进行文件的访问权限,其实加载手机存储中的svg文件和加载assets中的文件webView的配置差不多,但是我们要注意因为webView要访问我们内部存储中的文件,我们要在WebSetting中添加允许读取本地文件的代码 webSettingsTwo.setAllowFileAccess(true);这样才能访问到文件。

//设置WebSettings
WebSettings webSettingsTwo=binding.wbViewTwo.getSettings();
webSettingsTwo.setLoadWithOverviewMode(true);
webSettingsTwo.setJavaScriptEnabled(true);
webSettingsTwo.setUseWideViewPort(true);
//允许读取本地文件
webSettingsTwo.setAllowFileAccess(true);
binding.wbViewTwo.getSettings().setBuiltInZoomControls(true);// 会出现放大缩小的按钮
binding.wbViewTwo.getSettings().setSupportZoom(true);
binding.wbViewTwo.getSettings().setSupportMultipleWindows(true);
binding.wbViewTwo.setInitialScale(75);
//加载手机存储本地的svg
binding.wbViewTwo.loadUrl("file://"+ getExternalFilesDir(null) + "/newSvg.svg");

我们来看一下2种情况下运行效果图,这里的素材是来着iconfont上的资源,另外如果要是仅仅为了单纯引入一些素材图标svg的话我们可以直接使用android studio进行导入到drawable中使用ImageView进行直接展示,可以看我写的上一篇文章。

Android WebView加载SVG格式文件_webview_02