uniapp中小程序如何使用 web-view
木木酱吖
2022-08-17 15:49·字数:123·阅读:1446
首先在项目中新建文件,webView文件名,里面存放 webViewvue 为例,在pagesjosn当中配置路由。
适配安卓10方式:
返回URI即可
手机上加载webview,网页上上传调用原生相机和相册上传
先设置好webview的加载以及websetting,这里就不多说了。
主要是setWebChromeClient方法的实现
这个方法分几个版本的适配30以下的设备,30到41的设备,41到50的设备,以及50以上的设备,每个方法参数不一样适配时请注意。50以下的参数都是 ValueCallback<Uri> ,以上的设备需要 ValueCallback<Uri[]> ,回传数据的时候也是对应的不要弄错了。
最后的效果如下:
做金融类型的应用经常会用到数据的统计报表 诸如折线图 , K线图, 饼状图,柱状图 既能形象的表述数据的分布 , 同时又增加了数据的可读性
实现思路: 百度Echarts支持安卓移动端的运用 , WebView加载html, 嵌套JavaScript代码 , 即可动态实现在线图表的展示功能
下面展示下今天要实现的效果
进入Echarts官网下载页 可以选择自己需要的图表类型 自定义下载js文件 , 精简版,常用版, 完整版 根据需求自定义下载
导入刚下载的图表构建工具 echartsminjs 到安卓项目的 资产目录(assets)下 这里我使用的 完整版
创建 Htm l文件 , 即要展示的网页 , 文件名自定义 这里我是 myecharthtml
我的assets目录结构如下:
接下来就是html文件的代码了 首先我们为ECharts准备一个具备大小(宽高) 的 DOM 并取别名
<div id="main" style="float: left; width: 600px;height:500px; margin-top: 20px"></div>导入图表构建工具
<script src="js/echartsminjs"></script>因为我这里要展示多种类型的图表 所以定义了几个方法 下面以折线图为例
var lineJson;//用于临时存储折线图json对象, 便于追加数据
//创建折线图
function createLineChart(obj){
lineJson=obj;
options = {
title : {
//text: '脉搏值(次/min)',
text: objtitle,
subtext: 'make by sxt',
x:'left'
},
tooltip: {
trigger: 'axis',
formatter: "脉搏频率 : <br/>{b} - {c} 次/min"
},
xAxis: {
id: 'dataX',
type: 'category',
splitLine:{
show:true
},
axisLabel: {
//formatter: '{value} °C'
formatter: '{value}'
},
data: objtimes //动态展示运动时间
},
yAxis: {
type: 'value',
axisLine: {onZero: true},
splitLine:{
show:true
},
axisLabel: {
//formatter: '{value} km'
formatter: '{value}'
},
min:0,
max:150//在此设置范围
},
dataZoom: [
{
id:'dataZoom',
show:false,
type: 'inside',//inside 为拖动效果
//type: 'slider',//slider为手动更新效果
realtime: true,
filterMode: 'filter',
start: 20,
end: 85,
xAxisIndex: 0
}
],
series: [{
id: 'dataY',
name: '脉搏频率(次)/(s)',
type: 'line',
smooth: true,
data: objsteps, //动态展示运动步数数据
lineStyle: {
normal: {
width: 3,
shadowColor: 'rgba(0,0,0,04)',
shadowBlur: 10,
shadowOffsetY: 10
}
},
markPoint : {//标注点
data : [//这种方式内部自动计算最值
{
type :'max' ,
name:'最大值' ,
symbol:'image://' + treeUrl,
symbolSize: [30, 30]
},
{
type : 'min',
name: '最小值',
symbol:'image://' + childUrl,
symbolSize: [30, 30]
}
]
},
markLine : {
data : [ {type : 'average', name: '平均值'} ]
}
}]
};
}
//更新折线图的缩放起始位置
function updateZoomState(start,end){
myChartsetOption({
dataZoom: [{
id: 'dataZoom',
start: start,
end: end
}]
});
}
//获取数组最小值
function getMinValue(obj){
var min = objsteps[0];
for (var i = 1; i < objstepslength; i++){
if (objsteps[i] < min){
min = objsteps[i];
}
}
return min;
}
//获取数组最大值
function getMaxValue(obj){
var max = objsteps[0];
for (var i = 1; i < objstepslength; i++){
if (objsteps[i] > max) {
max = objsteps[i];
}
}
return max;
}
//更新折线图数据 继续在后面追加数据
function updateDataXY(dataX,dataY){
myChartsetOption({
xAxis: {
id: 'dataX',
data:lineJsontimesconcat(dataX)
},
series:[{
id: 'dataY',
data:lineJsonstepsconcat(dataY)
}],
dataZoom: [{
id: 'dataZoom',
start: 60,
end: 100
}]
});
}
展示图表
//显示图表
function createChart(type,json){
if(type=='line'){
createLineChart(json);
}
if(type=='bar'){
createBarChart(json);
}
if(type=='pie'){
createPieChart(json);
}
if(type=='more'){
createMoreChart()
}
// 基于准备好的dom,初始化echarts实例
myChart = echartsinit(documentgetElementById('main'));
//使用指定的配置项和数据显示图表。
myChartsetOption(options);
}
最近遇到关于获取webview加载网页上的点击事件,三种解决方式~~~
一、跟后台协商好,点击该按钮加载特定url,通过webview的代理方法- (BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType 判断加载的url是否是协商好的url;
ps:记得要return NO,否则会加载url
二、通过获取所点击按钮的来判断是否点击特定位置
1、给webview的scrollview添加手势
2、实现UIGestureRecognizerDelegate代理方法
documentelementFromPoint 是获取点击坐标的元素
三、通过注入一段JS(需跟web前端协商),返回一段json数据
1、在webview加载完后注入js(具体根据需求定义)
例子:
2、拦截自定义的字段 kqapp://
简单步骤解答:
新建一个Android工程命名为WebViewCache。
在assets目录下新建一个html文件,命名为indexhtml。
修改mainxml布局文件,一个WebView控件一个Button(点击加载缓存用),代码如下:
修改主核心程序WebViewCacheDemojava,这里我只加载了indexhtml文件。
在AndroidMainifestxml文件中加访问网络的权限。
请求的url记录是保存在webviewCachedb,而url的内容是保存在webviewCache文件夹下。
以上就是关于uniapp中webview快速加载图片全部的内容,包括:uniapp中webview快速加载图片、Android webview调取安卓原生相机和相册上传图片、如何用JavaScript获取WebViewString并用ECharts的库绘制折线图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)