Android Как сделать полноэкранное видео? - PullRequest
0 голосов
/ 29 сентября 2018

Когда я делаю видео на весь экран в WebView, панель инструментов не скрывается.Как я могу это скрыть?Ниже вы можете увидеть коды, которые я использую. Я использую фрагмент и меню ящика навигации.

Когда я делаю видео в полноэкранном режиме в WebView, панель инструментов не скрывается.Как я могу это скрыть?Ниже вы можете увидеть коды, которые я использую. Я использую фрагмент и меню навигационной панели. Полный экран

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 голосов
/ 29 сентября 2018

@ nero Я применил коды, которые вы мне дали.Alt + Enter Но он делает ошибку, как на картинке. Извините за мой плохой английский. введите описание изображения здесь

0 голосов
/ 01 октября 2018

создайте папку 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 do,

 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();
0 голосов
/ 29 сентября 2018

Я бы порекомендовал вам попробовать следующий код и удалить слушателей, которые связаны с загрузкой содержимого вашего 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);
    }
}

И, наконец, примените следующие функции и атрибуты к своему веб-представлению и попробуйте еще раз.Не забудьте применить их в своем методе OnCreate:

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

Дайте мне знать, если это работает, и я могу поблагодарить соответствующего человека за помощь с кодом и классами.

...