把网站改成APP吧-Xamarin WebView
时间:2022-04-29
本文章向大家介绍把网站改成APP吧-Xamarin WebView,主要内容包括使用WebView构建基础框架、部署,测试,发布、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
搭建好Xamarin环境,先来小试牛刀,使用Xamarin的webView来访问网页,从而实现伪WebApp的效果(网站本身移动设备兼容WebView调用)。主要是通过WebApp来访问页面,同时通过
重写页面加载方法
来防止调用系统浏览器来实现。
使用WebView构建基础框架
首先创建一个项目,并打开Resources - layout -Main.axml
文件,从工具箱中添加一个WebView.
从左侧工具栏中找到WebView并拖到我们的界面中,并放大到覆盖整个页面,位置如图:
注意:在左下角的Source
中查看源代码
<android.webkit.WebView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/webView1" />
其中width="match_parent"
和height="wrap_content"
默认自适应屏幕尺寸。
添加好WebView,编写根目录的MainActivity.cs
文件,在OneCreate()
方法中获取WebView进行基础设置。
//获取WebView对象
var webView = FindViewById<WebView>(Resource.Id.webView1);
//申明WebView的配置
WebSettings settings = webView.Settings;
//允许执行JS
settings.JavaScriptEnabled = true;
//设置可以通过js打开窗口
settings.JavaScriptCanOpenWindowsAutomatically = true;
//创建webView客户端类
var webc = new MyCommWebClient();
//设置WebVIew客户端
webView.SetWebViewClient(webc);
//加载的Url
webView.LoadUrl("https://ns96.com");
上述代码中的MyCommWebClient()
方法的意义在于,阻止系统调用原生浏览器访问新页面,方法内容如下。
class MyCommWebClient : WebViewClient
{
//重写加载方法
public override bool ShouldOverrideUrlLoading(WebView view, string url)
{
//使用文本空间加载
view.LoadUrl(url);
return true;
}
}
代码截图:
调试运行后结果如下图
部署,测试,发布
部署测试参考Xamarin官方文档 部署、测试和指标
程序发布参考Xamarin官方文档 发布应用程序
- Asp.Net无刷新分页( jquery.pagination.js)
- 为什么网站需要用CDN来加速?
- Jmeter常用获取数据的几种方式
- [Silverlight 4 RC]RichTextBox概览
- WCF后续之旅(4):WCF Extension Point 概览
- Asp.Net无刷新上传并裁剪头像
- 用泛型的IEqualityComparer<T>接口去重复项
- python与office(一)
- Asp.net 后台添加CSS、JS、Meta标签(帮助类)
- 分享一下cookies操作(增、删、改、查)小经验
- [Silverlight 4 RC]WebBrowserBrush概览
- 一个例子理解C#位移
- WCF后续之旅(3): WCF Service Mode Layer 的中枢—Dispatcher
- silverlight 2 Random 随机数解决方案
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ReplicaSet && DaemonSet 资源对象
- 批量执行crontab指定条目的注释和解注释
- Rancher集群部署后需要做的几件事
- Ingress(Nginx)日志持久化与可视化(多图预警)
- .Net在Windows上使用Jenkins做CI/CD的那些事
- 【STM32H7】第9章 RL-TCPnet调试方法(Event Recorder和串口两种)
- 【STM32F429】第9章 RL-TCPnet调试方法(Event Recorder和串口两种)
- 【STM32F407】第9章 RL-TCPnet V7.X调试方法(Event Recorder和串口两种)
- CentOS7的udev的绑定规则
- 案例:记录一则强制开库遭遇ORA-16433的处理过程
- mybatis升级为mybatis-plus踩到的坑
- Treepath
- linux 远程ssh免密登录
- npm 安装 electron taobao镜像 404错误 自用 实践笔记
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(二):部署