关闭全屏视图后的Android WebView Video,webview自动滚动

Posted

技术标签:

【中文标题】关闭全屏视图后的Android WebView Video,webview自动滚动【英文标题】:Android WebView Video after closing fullscreen view, webview auto scrolls 【发布时间】:2017-05-10 23:01:42 【问题描述】:

我正在使用WebView 来显示包含文本和视频内容的网页。

它按预期正确加载和显示视频。

但是当我进入全屏视频视图时(我实现了给定here 的全屏视频视图),然后返回到WebViewWebView 一定程度的自动滚动。

我该如何解决这个问题?

请提出一些想法/链接。

【问题讨论】:

请显示xml代码! 您使用的是哪个目标 SDK?我在 SDK 24 (android N) 上测试了您指出的示例,但看不到自动滚动问题。 请提供一些你的xml的代码。您在哪里创建 webview 我没有找到问题,如果你想恢复你的滚动然后你可以查看这个链接***.com/questions/40020820/… 我通过在使用 javascript 进入全屏之前存储网页的滚动位置然后在从全屏滚动页面到存储的位置之后存储网页的滚动位置来做到这一点(存储滚动位置和滚动到存储的位置都在使用JavaScript)。 【参考方案1】:

我已经在使用兼容的 ScrollChangedListener。所以我决定在 onHideCustomView 之后的一段时间内将视图滚动回这个监听器。

网页浏览:

public interface OnScrollChangedListener 
    void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY);


    public void SafeScrollTo(int x, int y) 
        OnScrollChangedListener mScrollChanged = mOnScrollChangeListener;
        mOnScrollChangeListener =null;
        scrollTo(x, y);
        mOnScrollChangeListener =mScrollChanged;
    

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) 
        super.onScrollChanged(l, t, oldl, oldt);
        if(mOnScrollChangeListener !=null)
            mOnScrollChangeListener.onScrollChange(this,l,t,oldl,oldt);
    

    public void setOnScrollChangedListener(OnScrollChangedListener onSrollChangedListener) 
        mOnScrollChangeListener =onSrollChangedListener;
    

    OnScrollChangedListener mOnScrollChangeListener;

活动:

mWebview.setOnScrollChangedListener((v, x, y, oldx, oldy) -> 
                ArticleWebView webview = (ArticleWebView) v;
                if(CustomViewHideTime>0 && System.currentTimeMillis()-CustomViewHideTime<350)
                    webview.SafeScrollTo(oldx, oldy);
                    return;
                );

WebChrome客户端:

        @Override
        public void onHideCustomView() 
            CustomViewHideTime = System.currentTimeMillis();
            //todo delay and set CustomViewHideTime to 0
        

这可以正常工作。

【讨论】:

这个解决方案有一个问题,就是 CustomViewHideTime 必须声明为 final 才能在 onHideCustomeView 中使用。你是怎么解决的?

以上是关于关闭全屏视图后的Android WebView Video,webview自动滚动的主要内容,如果未能解决你的问题,请参考以下文章

带有嵌入式 youtube 视频的 Android WebView,全屏按钮冻结视频

为啥我的全屏 webview 在打开后会立即关闭?

android webview怎样点击按钮全屏播放

在android webview中制作嵌入视频全屏

Android WebView 中的 Flash — 如何自动设置全屏?

Android Studio,在新活动中显示完整的 WebView