Android如何制作全屏视频?

时间:2018-09-29 19:17:51

标签: android html5-video fullscreen

当我在WebView中将视频全屏显示时,工具栏未隐藏。我怎么藏起来?在下面可以看到我使用的代码。我正在使用片段和导航抽屉菜单。

当我在WebView中将视频全屏显示时,工具栏未隐藏。我怎么藏起来?在下面可以看到我使用的代码,我正在使用片段和导航抽屉菜单。 Full screen

public class searchWebFragment extends Fragment {


public searchWebFragment() {

}

@Nullable
@Override

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.searchwb, container, false);

    final ProgressBar progressBar = (ProgressBar) v.findViewById(R.id.progressBarHome);
    final WebView webView = (WebView) v.findViewById(R.id.wv_home);
    final EditText araTxt = (EditText)v.findViewById(R.id.araTxt);
    final Button araBtn = (Button)v.findViewById(R.id.araBtn);
    final TextView uyariTxt = (TextView)v.findViewById(R.id.uyariTxt);

    progressBar.setVisibility(View.INVISIBLE);
    webView.setWebViewClient(new WebViewClient() {

        public void onReceivedError(WebView webView, int i, String s, String d1) {
            webView.loadUrl("file:///android_asset/error.html");
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            progressBar.setVisibility(View.VISIBLE);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            progressBar.setVisibility(View.INVISIBLE);
        }
    });
    webView.getSettings().setBuiltInZoomControls(true);

    webView.setDownloadListener(new DownloadListener() {

        @Override
        public void onDownloadStart(String url, String userAgent,
                                    String contentDisposition, String mimetype,
                                    long contentLength) {
            DownloadManager.Request request = new DownloadManager.Request(
                    Uri.parse(url));

            request.allowScanningByMediaScanner();
            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); //Notify client once download is completed!
            request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, url);
            DownloadManager dm = (DownloadManager) getActivity().getSystemService(DOWNLOAD_SERVICE);
            dm.enqueue(request);
            Toast.makeText(getActivity().getApplicationContext(), "Dosya İndiriliyor", //To notify the Client that the file is being downloaded
                    Toast.LENGTH_LONG).show();

        }
    });
    webView.setVisibility(View.INVISIBLE);


    araBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            webView.setVisibility(View.VISIBLE);
            String aranacaksey = araTxt.getText().toString();
            webView.getSettings().setDisplayZoomControls(false);
            webView.getSettings().setAppCacheEnabled(false);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
            String url = "http://www.ifsalar.16mb.com/?s=" + aranacaksey;
            webView.loadUrl(url);
            araTxt.setVisibility(View.INVISIBLE);
            araBtn.setVisibility(View.INVISIBLE);
            uyariTxt.setVisibility(View.INVISIBLE);
        }
    });





    webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
    webView.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View view, int keyCode, KeyEvent keyEvent) {

            if (keyCode == KeyEvent.KEYCODE_BACK) {
                if (webView.canGoBack()) {
                    webView.goBack();
                }
                return true;
            }
            return false;
        }
    });
    return v;
}

}

3 个答案:

答案 0 :(得分:0)

我建议您尝试以下代码并删除与加载WebView内容有关的侦听器。

您需要实现首先在Webview中加载网站的方法。

private void loadWebsite() {
    ConnectivityManager connectivityManager = (ConnectivityManager) getApplication().getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = connectivityManager .getActiveNetworkInfo();
    if (networkInfo != null && networkInfo.isConnectedOrConnecting()) {
        mWebView.loadUrl("yourURL");
    } else {
        mWebView.setVisibility(View.GONE);
    }
}

从这里开始,您需要实现2个不同的类“ Browser_Home”和“ MyChrome”。出于测试目的,只需将其写在searchWebFragment之外,以后就可以将其实现为单独的java文件。仅使用Browser_Home类,全屏按钮将被禁用。添加MyChrome类后,将启用全屏按钮,工具栏应按预期消失。

class Browser_home extends WebViewClient {

    Browser_home() {
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);

    }

    @Override
    public void onPageFinished(WebView view, String url) {
        setTitle(view.getTitle());
        progressBar.setVisibility(View.GONE);
        super.onPageFinished(view, url);

    }
}

private class MyChrome extends WebChromeClient {

    private View mCustomView;
    private WebChromeClient.CustomViewCallback mCustomViewCallback;
    protected FrameLayout mFullscreenContainer;
    private int mOriginalOrientation;
    private int mOriginalSystemUiVisibility;

    MyChrome() {}

    public Bitmap getDefaultVideoPoster()
    {
        if (mCustomView == null) {
            return null;
        }
        return BitmapFactory.decodeResource(getApplicationContext().getResources(), 2130837573);
    }

    public void onHideCustomView()
    {
        ((FrameLayout)getWindow().getDecorView()).removeView(this.mCustomView);
        this.mCustomView = null;
        getWindow().getDecorView().setSystemUiVisibility(this.mOriginalSystemUiVisibility);
        setRequestedOrientation(this.mOriginalOrientation);
        this.mCustomViewCallback.onCustomViewHidden();
        this.mCustomViewCallback = null;
    }

    public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback)
    {
        if (this.mCustomView != null)
        {
            onHideCustomView();
            return;
        }
        this.mCustomView = paramView;
        this.mOriginalSystemUiVisibility = getWindow().getDecorView().getSystemUiVisibility();
        this.mOriginalOrientation = getRequestedOrientation();
        this.mCustomViewCallback = paramCustomViewCallback;
        ((FrameLayout)getWindow().getDecorView()).addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1));
        getWindow().getDecorView().setSystemUiVisibility(3846);
    }
}

最后,将以下功能和属性应用于Webview并再次尝试。记住要在您的OnCreate方法中应用它们:

        mWebView.setWebViewClient(new Browser_home());
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setAllowFileAccess(true);
    webSettings.setAppCacheEnabled(true);
    loadWebsite();

让我知道这是否可行,我可以向相应的人员提供有关代码和类的帮助。

答案 1 :(得分:0)

@nero我应用了您给我的密码。 Alt + Enter但是他在图片中犯了一个错误。对于我的英语不好,我感到抱歉。 enter image description here

答案 2 :(得分:0)

创建一个文件夹row,并将视频复制到资源上的原始文件夹中,然后执行以下步骤,

在您的XML文件上,添加VideoView

   <VideoView
    android:id="@+id/vdoPlayer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentBottom="true"/> 

在您的.java类文件上,

 Uri uri = Uri.parse("android.resource://Your package name Here/" + R.raw.welcome_video);
 vdoPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
     @Override
     public void onPrepared(MediaPlayer mp) {
         mp.setLooping(true);
     }
 });
 vdoPlayer.setVideoURI(uri);
 vdoPlayer.start();