WebView 判断放大缩小操作
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 判断放大缩小操作的更多相关文章
- WebView无法放大缩小解决方式
先看看我们之前所写的代码 1) 加入权限:AndroidManifest.xml中必须使用了许可"android.permission.INTERNET" 2) 使用了一个WebV ...
- Android 手势滑动,多点触摸放大缩小图片
效果展示: 基本思路: <1>首先写一个图片控制类ImageControl,实现对图片控制的的基本操作,我们的图片控制类ImageControl是继承自ImageView自定义的视图: & ...
- [jQuery]地图浏览:如何实现图片的放大缩小和点击之后的位置居中
HTML代码: <!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis. ...
- js判断页面放大缩小
项目中,经常会碰到页面被放大或者缩小,导致页面显示错误,js可以判断页面放大缩小. // 若返回100则为默认无缩放,如果大于100则是放大,否则缩小 function detectZoom (){ ...
- 猫猫学IOS(二)UI之button操作 点击变换 移动 放大缩小 旋转
不多说,先上图片看效果,猫猫分享.必须精品 原创文章.欢迎转载.转载请注明:翟乃玉的博客 地址:viewmode=contents">http://blog.csdn.net/u013 ...
- AJ学IOS(02)UI之按钮操作 点击变换 移动 放大缩小 旋转
不多说,先上图片看效果,AJ分享,必须精品 这个小程序主要实现点击方向键可以让图标上下左右动还有放大缩小以及旋转的功能,点击图片会显示另一张图片. 点击变换 其实用到了按钮的两个状态,再State C ...
- 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
首先呢,还是一贯作风,我们先来看看众多应用中的示例:(这种效果是很常见的,可以说应用的必须品.) 搜狐客户端 ...
- Android DIY之路 (一) 指定区域多图片合成 放大 缩小 镜像 旋转 等(转)
惯例先看效果图 // 注意做类似这种模板功能时候 方位由后台数据提供,这里我们用假数据 4个点 或者xy 加区域来做示例 //一开始我们公司用的是透明盖住 操作图片 但发现 局限性较大.后来直接限定区 ...
- 手把手教你打造ImageView支持手势放大缩小
写在前面 最近有了新的任务,学习的时间比以前少了不少,Java回炉的文估计是得缓缓了,不过每周一篇尽量保质保量.最近感觉我文写的有点不好,因为我写东西除非必要,不然概念性的东西我基本上都是一笔带过…… ...
随机推荐
- spring中ApplicationListener的用法
1.实现ApplicationListener接口,并重写onApplicationEvent方法 @Component public class RSAKeyInitListener impleme ...
- Qt笔记之Q_DECLARE_METATYPE(Type)
首先看一看QVariant这个类,我们可以把它当做一个万能数据类型,需要的时候能转换为一种特定的类型. 使用canConvert()函数检查是否能转换为你想要的数据类型,结构为:bool QVaria ...
- Problem B: 一切皆对象
Description 一切都是对象 —— Everything is an object. 所以,现在定义一个类Thing,来描述世界上所有有名字的事物.该类只有构造函数.拷贝构造函数和析构函数,并 ...
- python单列模式
单例模式:就是永远用一个对象的实例 初级版 #初级版 class Foo(object): instance=None def __init__(self): pass @classmethod # ...
- 更强大的python正则表达式模块 -- regex
python内置的正则表达库re比较弱,而且似乎在好几年里都没太大的变化. 这里介绍这个python模块regex,实现了更多方便好用的功能. 比如:\p{han} 可以匹配汉字, \p{Latin} ...
- 启动fiddler导致浏览器无法上网的解决方法
1. 开发fiddler,进入Tools->Fiddler Tools,按照如图3部配置,即可实现无法上网的问题. 2. 见图1: 3.见图2: 4.见图3. 4. 完成以上配置后,重启fidd ...
- ubuntu配置neuwork网络
ubuntu 网络配置 检查网络配置命令:ifconfig 一.通过配置文件配置 新手没怎么用过Ubuntu,所以走了不少弯路,网上找了很多方法,大都没对我起到帮助作用,所以把自己的配置方法写一写. ...
- 命令行窗口中使用pip安装第三方库成功之后,在pycharm中仍不能使用
在学习廖老师的Python教程的时候,遇到命令行窗口中使用pip安装第三方库成功之后,在pycharm中仍不能使用的情况, 这种情况可能是由于在本地安装了多个Python版本的缘故(只是可能的情况之一 ...
- javascript 使用数组+循环+条件实现数字转换为汉字的简单方法。
这几天,博主碰到了几道关于数字转汉字的javascript算法题,在网上找了很多的答案,发现都有点复杂,于是我决定自己写一篇关于这种算法题的简单解法,以下是博主自己的见解,有不足的地方请多指教. 接下 ...
- git特殊命令
1.git追踪远程分支,该命令使用Tab不会自动补全 git branch --set-upstream-to=远程分支名(origin/xxx) 2.从远程分支创建本地新分支 git checkou ...