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. c++ 指针与const的三种组合

    三种形式 const int a=1; int b=2: 1 const int * ptr1=&a; 2  int * const ptr2 = b; 3 const int * const ...

  2. tar: Exiting with failure status due to previous errors

    发生在tar压缩或者解压缩的过程中,原因是压缩包在建立的时候是用了sudo的,所以你解压的时候也要加上sudo,问题就很好解决了的

  3. .net webService保存全局变量中

    遇到坑,然后找到解决方案,我就习惯做个记录. 情景:通过webservice调用一个第三方的库,在初始化第三方库的时候需要花费较长时间 目的:希望通过初始化一次,缓存下来,下次直接调用,而不必每次初始 ...

  4. Beta冲刺四

    1.团队TSP 团队任务 预估时间 实际时间 完成日期 对数据库的最终完善 120 150 12.2 对学生注册功能的完善--新增触发器 150 140 11.29 对教师注册功能的完善 150 13 ...

  5. Can peel peel solve pesticide problem

    Can peel peel solve pesticide problem? Middle peasants medicinal modern agriculture more and more, t ...

  6. java虚拟机——监控工具

    本篇记录本人在学习JDK监控工具的一些笔记.JDK是1.8 JPS:查看java的进程命令 左边的数字是进程ID,对应的是进程的名称. jstat:查看运行时状态信息. 1.-class:监控类装载, ...

  7. sdl2在vs2012上的配置

    网上关于sdl2的配置教程很多,我尽量将我遇到的问题分享给大家. 首先,打开VS2012: 2.点击新建项目:选择空项目,确定即可 (文件名,保存位置,解决方案名称,可以随便填,(我取名为sdlpla ...

  8. 使用VBA轻松实现汉字与拼音的转换

    Function pinyin(p As String) As String i = Asc(p) Select Case i Case -20319 To -20318: pinyin = &quo ...

  9. Sharepoint 2016 配置FBA(四)添加用户到Membership数据库

    现在还不能用FBA登录,因为数据库还没有用户. 有一些方法来管理membership数据库,有可以用IIS来管理.推荐使用 SharePoint 2016 FBA Pack(https://share ...

  10. Tensorflow系列——Saver的用法

    摘抄自:https://blog.csdn.net/u011500062/article/details/51728830/ 1.实例 import tensorflow as tf import n ...