java - 为什么全屏按钮没有出现在 webview Activity 中

标签 java android webview android-mediaplayer

我在我的fragment中启用了VideoEnabledWebView,但在观看视频时,webview上没有出现全屏按钮,是什么原因?

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false);

    String url = "http://youtube.com";

    myWebView = (VideoEnabledWebView) rootView.findViewById(R.id.webViewTop);
    myWebView.setWebChromeClient(new WebChromeClient());
    myWebView.getSettings().setJavaScriptEnabled(true);
    progress = (ProgressBar) rootView.findViewById(R.id.progressBar3);
    View nonVideoLayout = rootView.findViewById(R.id.nonVideoLayout);
    ViewGroup videoLayout = (ViewGroup)rootView.findViewById(R.id.videoLayout);
    setHasOptionsMenu(true);
    webChromeClient = new VideoEnabledWebChromeClient(nonVideoLayout, videoLayout, myWebView);

    myWebView.loadUrl(url);

webChromeClient.setOnToggledFullscreen(new VideoEnabledWebChromeClient.ToggledFullscreenCallback()
             {
                @Override
                public void toggledFullscreen(boolean fullscreen)
                {

                    if (fullscreen)
                    {
                        WindowManager.LayoutParams attrs = getActivity().getWindow().getAttributes();
                        attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
                        attrs.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
                        getActivity().getWindow().setAttributes(attrs);
                        if (android.os.Build.VERSION.SDK_INT >= 14)
                        {
                            //noinspection all
                            getActivity().getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
                        }
                    }
                    else
                    {
                        WindowManager.LayoutParams attrs = getActivity().getWindow().getAttributes();
                        attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
                        attrs.flags &= ~WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
                        getActivity().getWindow().setAttributes(attrs);
                        if (android.os.Build.VERSION.SDK_INT >= 14)
                        {
                            //noinspection all
                            getActivity().getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
                        }
                    }

                }

            });

    myWebView.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView View, String url) {
            View.loadUrl(url);
            TopRatedFragment.this.progress.setProgress(0);

            return true;
        }
    });
    myWebView.setOnKeyListener(new android.view.View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                WebView webView = (WebView) v;

                switch (keyCode) {
                    case KeyEvent.KEYCODE_BACK:
                        if (webView.canGoBack()) {
                            webView.goBack();
                            return true;
                        }
                        break;
                }
            }

            return false;
        }
    });
   return rootView;

    }
    }

这是我的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">

<RelativeLayout
    android:id="@+id/nonVideoLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <ProgressBar
        android:id="@+id/progressBar3"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="3dip"
        android:max="100"
        android:progressDrawable="@drawable/greenprogress"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        />
    <com.taadu.slidechat.adaptor.VideoEnabledWebView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webViewTop"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@id/progressBar3"/>

   </RelativeLayout>
    <RelativeLayout
        android:id="@+id/videoLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </RelativeLayout>
   </RelativeLayout>

搜索了几个小时,仍然找不到与启用全屏按钮相关的任何内容,

请帮忙。

更新

添加此库https://github.com/delight-im/Android-AdvancedWebView会在视频上带来全屏按钮,但单击全屏按钮后,它会全部挂起。

最佳答案

已修复

我没有调用 videoenabledchromeclient,这就是它没有进入全屏模式的原因。这是固定代码;

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false);

    String url = "http://youtube.com";
    //layout
    myWebView = new VideoEnabledWebView(getActivity());
    myWebView = (VideoEnabledWebView) rootView.findViewById(R.id.webViewTop);
    mSwipeRefreshLayout = (SwipeRefreshLayout) rootView.findViewById(R.id.swiperefresh);
    progress = (ProgressBar) rootView.findViewById(R.id.progressBar3);
    View nonVideoLayout = rootView.findViewById(R.id.nonVideoLayout);
    ViewGroup videoLayout = (ViewGroup)rootView.findViewById(R.id.videoLayout);
    View loadingView = getActivity().getLayoutInflater().inflate(R.layout.view_loading_video, null);
webChromeClient = new VideoEnabledWebChromeClient(nonVideoLayout,  videoLayout, loadingView, myWebView)
    {
 public void onProgressChanged(WebView view, int newProgress) {

         progress.setProgress(newProgress);
         progress.setVisibility(View.VISIBLE);
          setRefreshActionButtonState(true);


          if (newProgress == 100) {
           progress.setVisibility(View.GONE);
           setRefreshActionButtonState(false);
              mSwipeRefreshLayout.setRefreshing(false);


             }
           }
         };

webChromeClient.setOnToggledFullscreen(new VideoEnabledWebChromeClient.ToggledFullscreenCallback()
    {
        @Override
        public void toggledFullscreen(boolean fullscreen)
        {
            // Your code to handle the full-screen change, for example showing and hiding the title bar. Example:
            if (fullscreen)
            {

                WindowManager.LayoutParams attrs = getActivity().getWindow().getAttributes();
                attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
                attrs.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
                getActivity().getWindow().setAttributes(attrs);
                if (android.os.Build.VERSION.SDK_INT >= 14)
                {
                    //noinspection all
                    getActivity().getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
                }
            }
            else
            {
                WindowManager.LayoutParams attrs = getActivity().getWindow().getAttributes();
                attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
                attrs.flags &= ~WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
                getActivity().getWindow().setAttributes(attrs);
                if (android.os.Build.VERSION.SDK_INT >= 14)
                {
                    //noinspection all
                    getActivity().getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
                }
            }

        }
    });
    myWebView.setWebChromeClient(webChromeClient);

  return rootview;}

关于java - 为什么全屏按钮没有出现在 webview Activity 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37446428/

相关文章:

javascript - Cocoa WebView 中的 HTML5 canvas 绘图比 Safari 慢

java - 蓝牙连接失败 “java.io.IOException: read failed, socket might closed or timeout, read ret: -1”

android - 使用离线 Google map 创建导航

java - C# 通用通配符

java - 机器人类java,输入字符串问题

java - 非法参数异常 : no view found for id 0x7f07004e android

android - 首次启动应用程序时 WebView 无法登录

javascript - Android webview 延迟渲染

java - OpenID Connect 的 Spring Security 5 XML 配置

Java随机种子