using Android.App;
using Android.Widget;
using Android.OS;
using Android.Content;
using Android.Runtime;
using Android.Net;
using Microsoft.International.Converters.PinYinConverter;
using System;
using System.Text;
using Android.Webkit;
using Android.Views;
using System.Collections.Generic; namespace android_filepiker_demo_test
{
[Activity(Label = "android_filepiker_demo_test", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
public class WebViewTouchParameter
{
public double Distance { get; set; }
public int FontSize { get; set; }
public int MinFontSize { get; set; }
public int MaxFontSize { get; set; }
} public delegate void FontSizeChanged(int fontSize); protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main); var button1 = FindViewById<Button>(Resource.Id.button1);
button1.Click += Button1_Click; var web1 = FindViewById<WebView>(Resource.Id.web1);
web1.Touch += Web1_Touch;
web1.LoadData("<html><body style='font-size:12px;'><h1>abcde</h1></body></html>", "text/html", "utf-8");
} private void Web1_Touch(object sender, Android.Views.View.TouchEventArgs e)
{
WebViewTouchHandler(e, new WebViewTouchParameter { MinFontSize = , MaxFontSize = }, delegate(int fontSize)
{
var web1 = FindViewById<WebView>(Resource.Id.web1);
web1.LoadDataWithBaseURL(null, "<html><body style='font-size:" + fontSize + "px;'><h1>" + fontSize + "px,abcde</h1></body></html>", "text/html", "utf-8", null);
});
}
private void Button1_Click(object sender, System.EventArgs e)
{ }
}
}
private void WebViewTouchHandler(Android.Views.View.TouchEventArgs e, WebViewTouchParameter p, FontSizeChanged fsc)
{
var ev = e.Event;
var action = ev.Action; switch (action)
{
case MotionEventActions.Pointer2Down:
{
System.Diagnostics.Debug.Print("Pointer2Down"); p.Distance = Math.Abs(Math.Sqrt(Math.Pow(ev.GetX() - ev.GetX(), )
+ Math.Pow(ev.GetY() - ev.GetY(), ))); break;
}
case MotionEventActions.Move:
{
if (e.Event.PointerCount == )
{
var distance = Math.Abs(Math.Sqrt(Math.Pow(ev.GetX() - ev.GetX(), )
+ Math.Pow(ev.GetY() - ev.GetY(), ))); p.FontSize += (int)((distance - p.Distance) / ); if (p.FontSize > p.MaxFontSize)
p.FontSize = p.MaxFontSize; if (p.FontSize < p.MinFontSize)
p.FontSize = p.MinFontSize; if (fsc != null && Math.Abs(distance - p.Distance) > )
fsc(p.FontSize); p.Distance = distance;
} break;
} case MotionEventActions.Up:
{
break;
} case MotionEventActions.Cancel:
{
break;
} case MotionEventActions.Pointer2Up:
{
break;
}
}
}

此代码经过测试,可以稳定实现放大缩小。代码衔接调用处参数可能需要调试,最新优化调试后,我只更新了最后一段核心代码段。

WebView 判断放大缩小操作的更多相关文章

  1. WebView无法放大缩小解决方式

    先看看我们之前所写的代码 1) 加入权限:AndroidManifest.xml中必须使用了许可"android.permission.INTERNET" 2) 使用了一个WebV ...

  2. Android 手势滑动,多点触摸放大缩小图片

    效果展示: 基本思路: <1>首先写一个图片控制类ImageControl,实现对图片控制的的基本操作,我们的图片控制类ImageControl是继承自ImageView自定义的视图: & ...

  3. [jQuery]地图浏览:如何实现图片的放大缩小和点击之后的位置居中

    HTML代码: <!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis. ...

  4. js判断页面放大缩小

    项目中,经常会碰到页面被放大或者缩小,导致页面显示错误,js可以判断页面放大缩小. // 若返回100则为默认无缩放,如果大于100则是放大,否则缩小 function detectZoom (){ ...

  5. 猫猫学IOS(二)UI之button操作 点击变换 移动 放大缩小 旋转

    不多说,先上图片看效果,猫猫分享.必须精品 原创文章.欢迎转载.转载请注明:翟乃玉的博客 地址:viewmode=contents">http://blog.csdn.net/u013 ...

  6. AJ学IOS(02)UI之按钮操作 点击变换 移动 放大缩小 旋转

    不多说,先上图片看效果,AJ分享,必须精品 这个小程序主要实现点击方向键可以让图标上下左右动还有放大缩小以及旋转的功能,点击图片会显示另一张图片. 点击变换 其实用到了按钮的两个状态,再State C ...

  7. 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果

    首先呢,还是一贯作风,我们先来看看众多应用中的示例:(这种效果是很常见的,可以说应用的必须品.)                搜狐客户端                               ...

  8. Android DIY之路 (一) 指定区域多图片合成 放大 缩小 镜像 旋转 等(转)

    惯例先看效果图 // 注意做类似这种模板功能时候 方位由后台数据提供,这里我们用假数据 4个点 或者xy 加区域来做示例 //一开始我们公司用的是透明盖住 操作图片 但发现 局限性较大.后来直接限定区 ...

  9. 手把手教你打造ImageView支持手势放大缩小

    写在前面 最近有了新的任务,学习的时间比以前少了不少,Java回炉的文估计是得缓缓了,不过每周一篇尽量保质保量.最近感觉我文写的有点不好,因为我写东西除非必要,不然概念性的东西我基本上都是一笔带过…… ...

随机推荐

  1. ubuntu Error fetching https://gems.ruby-china.org/: Errno::ECONNREFUSED: Connection refused

    排除网络原因的前提下 是 权限问题  用 sudo 来 执行命令即可  sudo  gem sources -a https://gems.ruby-china.org/

  2. FINS/TCP_OMRON(1)

    使用FINS/ TCP与欧姆龙PLC沟通 可参考下列教学 using System.Net; using System.Net.Sockets; 上面必须使用; IPAddress ipAddr = ...

  3. 关于Unity3D使用时Scene视图清楚,Game视图不清楚的问题

    1.自己不知道什么时候,将LowResolutioinAspectRatios给勾上了, 2.同样的Scale值大于1的时候也会造成模糊,但这个好像比1好发现一点

  4. Python第六章(北理国家精品课 嵩天等)

    一 1.集合类型定义及其操作: 集合用{}表示,元素用逗号分隔,无序,唯一 集合操作符: |:并 -:减 &:交 ^ :补 <= <:判断子集关系 >= >:判断包含关 ...

  5. OpenGL之纹理贴图(Texture)

    学习自: https://learnopengl-cn.github.io/01%20Getting%20started/06%20Textures/ 先上一波效果图: 实际上就是:画了一个矩形,然后 ...

  6. 日积月累---JVM01

    Java体系结构包括四个独立但相关的技术: Java程序设计语言 Java class文件格式 Java应用编程接口 Java虚拟机 用Java编程语言编写源代码,把它编译成Java class文件, ...

  7. VBA在WORD应用中如何将格式应用于选定内容

    下列示例使用 Selection 属性将字符和段落格式应用于选定文本.使用 Font 属性获得字体格式的属性和方法,使用 ParagraphFormat 属性获得段落格式的属性和方法. Sub For ...

  8. 2017年4月28日16:40:40 log

    //TODO order  CreateOrderServiceHandler  generateManagementCustomer 子活动名称和uid

  9. FCC JS基础算法题(5):Return Largest Numbers in Arrays(找出多个数组中的最大数)

    题目描述: 找出多个数组中的最大数右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组.提示:你可以用for循环来迭代数组,并通过arr[i]的方式来访问数组 ...

  10. wpf binging (六)多绑定

    场景 比如我用四个textbox 需要每个控件都输入正确的数据以后 下方的 button才变成可用状态 需要把四个textbox的值转换成 true或者false 效果