如何解决 Android WebView 里放大与手势滑动的冲突问题

如何解决 Android WebView 里放大与手势滑动的冲突问题,第1张

滑动图片的时候ViewPager设置他的onTouch返回true 即requestDisallowInterceptTouchEvent(true)那么滑动图片ViewPager就不能动了 反之同理。

最近遇到关于获取webview加载网页上的点击事件,三种解决方式~~~

一、跟后台协商好,点击该按钮加载特定url,通过webview的代理方法- (BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType 判断加载的url是否是协商好的url;

ps:记得要return NO,否则会加载url

二、通过获取所点击按钮的图片来判断是否点击特定位置

1、给webview的scrollview添加手势

2、实现UIGestureRecognizerDelegate代理方法

document.elementFromPoint 是获取点击坐标的元素

三、通过注入一段JS(需跟web前端协商),返回一段json数据

1、在webview加载完后注入js(具体根据需求定义)

例子:

2、拦截自定义的字段 kqapp://

WebView中的video标签默认就会带控制按键,但是在Android webView播放视频还需要以下几个设置:

需要在AndroidManifest.xml文件中声明需要使用HardwareAccelerate, 可以细化到Activity级别,如果不需要的View可以声明不要用加速,但是需要在代码中做

具体如下:

如果要声明整个应用都要加速:< application ... android:hardwareAccelerated ="true">

如果要在Activity中声明,则:<activity ... android:hardwareAccelerated="true" >Window,getWindow.setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED)

如果application或者activity都申明了要硬件加速,但是为了某些原因(比如省电?),一些View不需要硬件加速的话, view.setLayerType(View.LAYER_TYPE_SOFTWARE, null)

2.需要在AndroidManifest.xml文件中用上<use-sdk></use-sdk>标签,而且如果是空的还不行,必须写上targetSDK或者minSDK,但是我试验过,不管写版本是多少都没有关系。。。理论上说,Android应该是从3.0( API Level 11)开始可以对2D渲染加速,但是我把targetSDK设置为5都可以使用的,但是这个标签不写还不行。

 

一般来说,上面的 *** 作做了,就可以使用video标签播放视屏了,如果要支持全屏,还需要做一点 *** 作: 给webview一个WebChromeClient对象,这个WebChromeClient对象需要实现onShowCustomView和onHideCustomView方法


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/11505397.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存