• 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;
                        }
                }
            }

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

  • 相关阅读:
    事件对象
    事件方法on()
    each()遍历
    链接式操作
    理解选取更新范围
    net3.5 无网络环境安装
    visual studio 2017 报错 无法下载安装文件。请检查Internet连接,然后重试
    删除数据恢复数据语句 Oracle
    sqlserver还原数据库(mdf与ldf文件如何还原到SQLserver数据库)
    sqlserver2012卸载
  • 原文地址:https://www.cnblogs.com/nanfei/p/9214604.html
Copyright © 2020-2023  润新知