android - 安卓webview无法全屏播放iframe腾讯、优酷视频

 手机用户2602885151 发布于 2022-11-01 06:11

先上代码吧

public class MainActivity extends AppCompatActivity {

    static final String iframeStr = "";
    private WebView videoWebView;
    private FrameLayout fullScreenView;
    private View customView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        fullScreenView = (FrameLayout) findViewById(R.id.video_fullscreen);
        videoWebView = (WebView) findViewById(R.id.webView);
        WebSettings settings = videoWebView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setDatabaseEnabled(true);
        settings.setAppCacheEnabled(true);
        settings.setCacheMode(WebSettings.LOAD_DEFAULT);
        settings.setPluginState(WebSettings.PluginState.ON);
        settings.setAllowFileAccess(true);
        settings.setLoadWithOverviewMode(true);
        settings.setDomStorageEnabled(true);
        settings.setUseWideViewPort(true);

        videoWebView.setWebChromeClient(new MyWebChromeClient());
        videoWebView.setWebViewClient(new MyWebViewClient());

        videoWebView.loadData(iframeStr,"text/html","utf-8");
    }

    class MyWebViewClient extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }
    }

    class MyWebChromeClient extends WebChromeClient{

        private CustomViewCallback customViewCallback;
        @Override
        public void onShowCustomView(View view, CustomViewCallback callback) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            videoWebView.setVisibility(View.INVISIBLE);
            // 如果一个视图已经存在,那么立刻终止并新建一个
            if (customView != null) {
                callback.onCustomViewHidden();
                return;
            }
            fullScreenView.addView(view);
            customView = view;
            customViewCallback = callback;
            fullScreenView.setVisibility(View.VISIBLE);
        }

        @Override
        public void onHideCustomView() {
            if (customView == null)// 不是全屏播放状态
                return;
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            customView.setVisibility(View.GONE);
            fullScreenView.removeView(customView);
            customView = null;
            fullScreenView.setVisibility(View.GONE);
            customViewCallback.onCustomViewHidden();
            videoWebView.setVisibility(View.VISIBLE);
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
        videoWebView.resumeTimers();
    }

    @Override
    protected void onPause() {
        super.onPause();
        videoWebView.pauseTimers();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        videoWebView.destroy();
    }
}

就是用一个webview显示一个视频(不是一个视频网页,只是一个视频),然后我使用的是iframe的链接(就是腾讯视频分享那里的通用代码)。我参照了网上很多关于全屏显示的问题,基本代码都是这样,但是并没有用,感觉没有调用到那两个函数。还有是不是跟链接里限定了大小有关系。这样的话,需要修改什么才能全屏呢?

1 个回答
  • 楼主有找到解决方法吗

    2022-11-12 01:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有