【问题标题】:Video on full screen in WebView在 WebView 中全屏显示视频
【发布时间】:2017-07-01 18:39:47
【问题描述】:

有人可以帮帮我吗?我想要一种简单的方法,只需轻按两次视频或在视频播放器中使用全屏模式图标,即可在我的 WebView 中播放的视频上启用全屏。

这里有什么:

package com.orb.tvdroid;

import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

/**
 * Created by Igor Lima on 29/06/2017.
 */
public class TVDroid extends AppCompatActivity {

    WebView TVDroid;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.tv_droid);

        final Activity activity = this;

        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setIcon(R.mipmap.ic_launcher);
        getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#007f00")));

        Toast.makeText(getApplicationContext(), "Espere o carregamento da página completar.", Toast.LENGTH_LONG).show();

        Toast.makeText(getApplicationContext(), "Em seguida, escolha um dos canais disponíveis para começar a transmissão.", Toast.LENGTH_LONG).show();

        final String link = this.getIntent().getStringExtra("Link");

        TVDroid = (WebView) findViewById(R.id.TVdroid);
        this.registerForContextMenu(TVDroid);
        WebSettings webSettings = TVDroid.getSettings();
        webSettings.setJavaScriptEnabled(true);

        TVDroid.setWebChromeClient(new WebChromeClient() {

            public void onProgressChanged(WebView view, int progresso) {
                activity.setTitle("TVDroid... " + progresso + "%");
                activity.setProgress(progresso * 100);
                if (progresso == 100)
                    activity.setTitle("TVDroid");
            }
        });

        TVDroid.setWebViewClient(new WebViewClient() {

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return true;
            }
        });



        TVDroid.loadUrl(link);
    }
}

我已经在这里研究了许多解决方案,但其中许多似乎对于我想做的事情来说有点太多了。我不想要完整的视频播放器功能,我想要的只是能够双击视频播放器并在我的应用程序上将其设置为全屏。

提前致谢。

刚刚做了,感谢 Vishal 的想法,这是最终的 onCreate:

    WebView TVDroid;
    ProgressDialog carregando;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_fullscreen);

        this.setTitle("TVDroid");

        carregando = new ProgressDialog(TVDroid.this);
        carregando.show();

        mVisible = true;
        mControlsView = findViewById(R.id.fullscreen_content_controls);
        mContentView = findViewById(R.id.fullscreen_content);

        mContentView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                toggle();
            }
        });

        final Activity activity = this;

        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setIcon(R.mipmap.ic_launcher);
        getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#007f00")));

        Toast.makeText(getApplicationContext(), "Espere o carregamento da página completar.", Toast.LENGTH_LONG).show();

        Toast.makeText(getApplicationContext(), "Em seguida, escolha um dos canais disponíveis para começar a transmissão.", Toast.LENGTH_LONG).show();

        final String link = this.getIntent().getStringExtra("Link");

        TVDroid = (WebView) findViewById(R.id.TVdroid);
        TVDroid.getSettings().setJavaScriptEnabled(true);
        TVDroid.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url) {
                TVDroid.loadUrl("javascript:(function() { " +
                        "var head = document.getElementsByTagName('header')[0];"
                        + "head.parentNode.removeChild(head);" +
                        "})()");
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return true;
            }
        });

        TVDroid.setWebChromeClient(new WebChromeClient() {

            public void onProgressChanged(WebView view, int progresso) {
                carregando.setMessage("Carregando página: " + progresso + "%");
                activity.setProgress(progresso * 100);
                if (progresso == 100)

                    carregando.dismiss();
            }
        });

        TVDroid.loadUrl(link);
    }

【问题讨论】:

    标签: android video webview fullscreen


    【解决方案1】:

    试试这个 -

    创建一个新的 FullscreenActivity -

    File -> New -> Activity -> FullscreenActivity
    

    将您的TVDroid 活动代码复制到FullscreenActivity。

    【讨论】:

    • 我不想要全屏活动,只是希望视频在双击时全屏显示这是视频在我的应用程序中的显示方式imgur.com/a/HFbje
    • 你试过了吗?功能与您的需要相同,唯一的区别是单击/多次单击,您可以相应更改
    • 我试过你的方法,比我的好,虽然我尝试双击视频全屏,但它不起作用,我必须旋转我的手机才能制作视频更大,但不是全屏:/ 抱歉,距离我上一个 Android 应用程序已经有一段时间了,我现在很笨,哈哈:P
    • 这就是使用您的方法播放视频imgur.com/a/k5itX 的方式(比我拥有的更好),但是我正在播放视频的站点的标题正在像您一样剪切播放器的一部分可以看到:/这就是为什么我希望视频能够像在他们的网站上一样全屏显示。
    • 我解决了你的方法,现在我想如果我能够在我的 WebView 加载页面时删除页面的标题,我可以做到。我正在使用 onPageFinished 方法,但我不知道用 javascript 删除它的 html 内容。
    猜你喜欢
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多