zoukankan      html  css  js  c++  java
  • 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 = 12, MaxFontSize = 50 }, 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(0) - ev.GetX(1), 2)
                                + Math.Pow(ev.GetY(0) - ev.GetY(1), 2)));
    
                            break;
                        }
                    case MotionEventActions.Move:
                        {
                            if (e.Event.PointerCount == 2)
                            {
                                var distance = Math.Abs(Math.Sqrt(Math.Pow(ev.GetX(0) - ev.GetX(1), 2)
                                        + Math.Pow(ev.GetY(0) - ev.GetY(1), 2)));
    
                                p.FontSize += (int)((distance - p.Distance) / 7);
    
                                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) > 7)
                                    fsc(p.FontSize);
    
                                p.Distance = distance;
                            }
    
                            break;
                        }
    
                    case MotionEventActions.Up:
                        {
                            break;
                        }
    
                    case MotionEventActions.Cancel:
                        {
                            break;
                        }
    
                    case MotionEventActions.Pointer2Up:
                        {
                            break;
                        }
                }
            }

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

  • 相关阅读:
    网络安全笔记1-局域网、DOS、用户与组、远程、NTFS、文件共享、DHCP、DNS、WEB、FTP、域、PKI、扫描与爆破
    ASM入网小助手卸载
    列表拖拽排序 ----vue.js
    如何让谷歌索引你的页面
    命令导入大数据库

    大数据-快读
    微服务参考文章
    Java-BigDecimal踩坑记录
    CF1285F Classical?
  • 原文地址:https://www.cnblogs.com/nanfei/p/9214604.html
Copyright © 2011-2022 走看看