国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

WebView 實現全屏播放視頻的示例代碼

2019-10-21 21:38:12
字體:
來源:轉載
供稿:網友

最近要支持一個視頻挑戰的活動,要求 WebView 能全屏播放視頻,現在把 Android 端實現的方法分享給大家。

要實現全屏需要給 WebView 設置 WebChromeClient 并覆寫 onShowCustomView 和 onHideCustomView() 兩方法:

webView.setWebChromeClient(new WebChromeClient() {  @Override  public void onShowCustomView(View view, CustomViewCallback callback) {    // 此處的 view 就是全屏的視頻播放界面,需要把它添加到我們的界面上  }  @Override  public void onHideCustomView() {    // 退出全屏播放,我們要把之前添加到界面上的視頻播放界面移除  }});

為了實現全屏的效果,需要將視頻界面添加我們界面的最上層,有兩種方式,一種是添加到 ContentView 中,核心代碼如下:

contentParentView = findViewById(android.R.id.content);webView.setWebChromeClient(new WebChromeClient() {  @Override  public void onShowCustomView(View view, CustomViewCallback callback) {    contentParentView.addView(view);  }  @Override  public void onHideCustomView() {    contentParentView.removeView(fullScreenView);  }});

另一種是添加到 WindowManager 中,完整代碼如下:

public class WebActivity extends AppCompatActivity {  ...  private WindowManager windowManager;  private View fullScreenView = null;  @Override  protected void onResume() {    super.onResume();    // 如果之前處于全屏狀態,重新進入后需要再次調用全屏    if (fullScreenView != null) fullScreen(fullScreenView);  }  @Override  public void onBackPressed() {    // 全屏狀態點擊返回退出全屏    if (fullScreenView != null) {      windowManager.removeViewImmediate(fullScreenView);      fullScreenView = null;    } else {      super.onBackPressed();    }  }  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_webview);    windowManager = getWindowManager();    webView.setWebChromeClient(new WebChromeClient() {      @Override      public void onShowCustomView(View view, CustomViewCallback callback) {        // 此處的 view 就是全屏的視頻播放界面,需要把它添加到我們的界面上        windowManager.addView(view, new WindowManager.LayoutParams(WindowManager.LayoutParams.TYPE_APPLICATION));        // 去除狀態欄和導航按鈕        fullScreen(view);        fullScreenView = view;      }      @Override      public void onHideCustomView() {        // 退出全屏播放,我們要把之前添加到界面上的視頻播放界面移除        windowManager.removeViewImmediate(fullScreenView);        fullScreenView = null;      }    });  }  private void fullScreen(View view) {    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {      view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE          | View.SYSTEM_UI_FLAG_FULLSCREEN          | View.SYSTEM_UI_FLAG_LAYOUT_STABLE          | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY          | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION          | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);    } else {      view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE          | View.SYSTEM_UI_FLAG_FULLSCREEN          | View.SYSTEM_UI_FLAG_LAYOUT_STABLE          | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION          | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);    }  }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平潭县| 乌鲁木齐市| 航空| 涟水县| 盐边县| 历史| 邓州市| 宝兴县| 乃东县| 建水县| 平谷区| 隆化县| 淮南市| 南和县| 琼结县| 杭锦旗| 县级市| 海口市| 临清市| 抚顺县| 南宁市| 兴安县| 高陵县| 兴山县| 邵东县| 辛集市| 横峰县| 崇州市| 石屏县| 壤塘县| 曲麻莱县| 方正县| 太康县| 济源市| 新密市| 隆子县| 乌兰察布市| 会理县| 秦安县| 定襄县| 宜兴市|