WebView渲染、进度条、复制粘贴文本等UI效果,缓存,WebView+video H5标签播放视频

> webview 渲染
Android4.4 browser与之前版本最大的不同就是在保持webview控件接口不变的情况下,将内核换成了chromium32。随之,它的硬件加速渲染架构也与之前版本和chromium本身都有一定差别,相当于androidbrowser与chromium的一个融合。
  仅仅是两个用来显示网页的控件不同,会造成什么区别呢?大家知道SurfaceView是一个比较特别的控件。一是,它允许用户自己来控制渲染,而不必受到android view系统的限制;二是,它独立的与surfaceflinger交互,并可以方便的得到交互客户端ANativeWindow。基于这两点,chromium使用SurfaceView后完全能够自由发挥,而与androidView系统隔离开来。所以它的硬件加速绘制完全与系统无关,要说有关系的话,那就是它的绘制结果直接以opengl的形式绘制在ANativeWindow与surfaceflinger关联的共享内存上。
  Chromium31使用了交换缓冲方式渲染,由EGL作为opengl es与系统本地窗口之间的接口,使用openges来直接绘制到系统本地窗口ANativeWindow上。android browser 从总体来看也使用相同的交互缓冲方式渲染,但EGL相关部分由系统来完成。它的chromium核心的作用是完成webview的渲染,使用了FBO扩展机制,来实现渲染到纹理。它没有使用EGL,也没有本地窗口等概念(对于webview来说)。所以两者同样使用了chromium的核心,但chromium核心的功能有所差别,渲染方式也并不相同。

-- Android WebView中下载APP
WebView 跳转第三方app及支持文件(apk)下载- https://www.jianshu.com/p/f3721253f879
Android 通过 WebView 请求下载 APK- https://blog.csdn.net/chu_cheng/article/details/78084728
三种方式让 Android WebView 支持文件下载- https://www.jianshu.com/p/6e38e1ef203a
Android 解决webview中下载第三方APP的问题- https://blog.csdn.net/qq_19404969/article/details/78780418

> 解决WebView与ViewPager滑动冲突
从事件原理彻底解决WebView与ViewPager(水平),ScrolloView(纵向)滑动冲突- https://github.com/youxiaochen/WebViewDemo
监听WebView滚动事件- https://www.jianshu.com/p/d4d02cb9791c
How Rendering Work (in WebKit and Blink)- http://tech.uc.cn/?p=2763

> WebView缓存
Android WebView缓存机制详解:http://blog.csdn.net/t12x3456/article/details/13745553
Fastbook(一个Facebook HTML5应用的克隆)

> WebView+video H5标签播放视频
WebView 支持 Html5 video 进行全屏播放- https://www.jianshu.com/p/2dd60e6bd798
webview 加载h5页面,播放视频+全屏,实现简单封装- https://blog.csdn.net/u010918416/article/details/52705732
webView.getSettings().setMediaPlaybackRequiresUserGesture(false);

> WebView进度条
用户体验超棒的微信WebView进度条- https://github.com/StudyLifeTime/WebViewProgress

> webview 复制粘贴文本
android webview 复制文本-- http://blog.csdn.net/ajun495175289/article/details/9059817
  当使用clipboard framework时,把数据放在一个剪切对象(clip object)里,然后这个对象会放在系统的剪贴板里。android.text.ClipboardManager从API 11开始就废弃了。取而代之的是它的子类:android.content.ClipboardManager (since API Level 11)。
  android 设置webview输入文本框 怎么样支持粘贴?-你可以在androidManifest.xml文件中设置你webview所在的Activity属性  android:windowSoftInputMode="adjustPan" 就可以了,如果不行,把adjustPan换成adjustResize.

Android- WebView 在文本上实现 复制粘贴功能这种支持2.2-4.0.3-- https://github.com/btate/BTAndroidWebViewSelection .
原生里注入js方法,可以获取文字的字符,更加方便的处理~.WebView复制粘贴-- http://pan.baidu.com/s/1slsvNZZ
private class CustomGestureListener extends GestureDetector.SimpleOnGestureListener {
        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            if (mActionMode != null) {
                //update  by sight 2016.5.12
                //mActionMode.finish();
                return true;
            }
            return false;
        }

        @Override
        public void onLongPress(MotionEvent e) {
            super.onLongPress(e);
        }
    }

长按,那些html页面就会弹出黏贴复制,要禁止复制黏贴的出现,其实就是实现webview的setOnLongClickListener方法,如下:
WebView.setOnLongClickListener(new View.OnLongClickListener() {
   @Override
   public boolean onLongClick(View view) {
     return true;
   }
});

关于Android长按出现复制粘贴栏在顶部占位问题解决方法--http://blog.csdn.net/feifei454498130/article/details/47685063
-- WebView长按弹出复制粘贴与禁用webview复制粘贴
禁用webview的长按事件即可.
mWebView.setOnLongClickListener(new View.OnLongClickListener() {    
 @Override    
 public boolean onLongClick(View view) {        
    return true;    
 }});

在android webview中的网页中,怎样禁止输入框粘贴?就是复制的文字无法粘贴到输入框中,这个是htm DOM的事件,和webview没有直接关系,其它浏览器也支持。在input中增加οnpaste="return false"即可。 
<input type="text" οnpaste="return false" />  

-- WebView长按自定义菜单,实现复制分享相关功能

1.可以通过反射调用WebView的一个私有方法
Method m = WebView.class.getMethod("getSelection", null);
2.在Android 4.4中WebView是基于Chromium的,可以直接访问 window.getSelection()
webView.stringByEvaluatingJavaScriptFromString("document.documentElement.style.webkitUserSelect='none';")
webView.stringByEvaluatingJavaScriptFromString("document.documentElement.style.webkitTouchCallout='none';")

Example user selection for android web views- https://github.com/btate/BTAndroidWebViewSelection

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值