自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android的WebView中H5頁面全屏播放視頻

企業(yè)動態(tài)
如何讓WebView中H5頁面全屏播放視頻。關于這個問題,做一下簡單分析,希望對你有所幫助。

如何讓WebView中H5頁面全屏播放視頻。關于這個問題,做一下簡單分析,希望對你有所幫助。

和往常一樣,我們先來看效果:

[[190652]]

運行效果

其實很簡單,就是配置問題。關鍵地方配好了,基本沒什么問題了。

  • 硬件加速
  • 設置WebView

在清單需要配置的AndroidManifest.xml

  1. <application 
  2.     android:allowBackup="true" 
  3.     android:icon="@mipmap/ic_launcher" 
  4.     android:label="@string/app_name" 
  5.     android:supportsRtl="true" 
  6.     android:theme="@style/AppTheme"
  7.     <activity 
  8.         android:name=".WebViewActivity" 
  9.         android:configChanges="orientation|screenSize|keyboardHidden" 
  10.         android:hardwareAccelerated="true"
  11.         <intent-filter> 
  12.           <action android:name="android.intent.action.MAIN" /> 
  13.           <category android:name="android.intent.category.LAUNCHER" /> 
  14.         </intent-filter> 
  15.     </activity> 
  16. </application> 

這里需要注意的是啟動硬件加速可以 在application 啟動這個硬件加速,也可以在對應的activity啟動

  1. android:hardwareAccelerated="true" 

還有這個

  1. configChanges="orientation|screenSize|keyboardHidden" 

必須是

  1. orientation|screenSize|keyboardHidden 

當然記得加上網(wǎng)絡權限

  1. <uses-permission android:name="android.permission.INTERNET" /> 

下面給出全部源碼

activity_webview.xml

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:id="@+id/mFrameLayout" 
  4.     android:layout_width="match_parent" 
  5.     android:layout_height="match_parent"
  6.  
  7.     <WebView 
  8.         android:id="@+id/mWebView" 
  9.         android:layout_width="match_parent" 
  10.         android:layout_height="match_parent" /> 
  11. </FrameLayout> 

WebViewActivity源碼

  1. public class WebViewActivity extends AppCompatActivity  { 
  2.     private FrameLayout mFrameLayout; 
  3.     private WebView mWebView; 
  4.     private MyWebChromeClient mMyWebChromeClient; 
  5.     private String URL = "http://m.tv.sohu.com/20130704/n380744170.shtml"
  6.     @Override 
  7.     protected void onCreate(Bundle savedInstanceState) { 
  8.         requestWindowFeature(Window.FEATURE_NO_TITLE); 
  9.         super.onCreate(savedInstanceState); 
  10.         setContentView(R.layout.activity_webview); 
  11.         mFrameLayout = (FrameLayout) findViewById(R.id.mFrameLayout); 
  12.         mWebView = (WebView) findViewById(R.id.mWebView); 
  13.         initWebView(); 
  14.         mWebView.loadUrl(URL); 
  15.     } 
  16.     private void initWebView() { 
  17.         WebSettings settings = mWebView.getSettings(); 
  18.         settings.setJavaScriptEnabled(true); 
  19.         settings.setJavaScriptCanOpenWindowsAutomatically(true); 
  20.         settings.setPluginState(WebSettings.PluginState.ON); 
  21.         settings.setAllowFileAccess(true); 
  22.         settings.setLoadWithOverviewMode(true); 
  23.         settings.setUseWideViewPort(true); 
  24.         settings.setCacheMode(WebSettings.LOAD_NO_CACHE); 
  25.         settings.setCacheMode(WebSettings.LOAD_DEFAULT); 
  26.         mMyWebChromeClient = new MyWebChromeClient(); 
  27.         mWebView.setWebChromeClient(mMyWebChromeClient); 
  28.         mWebView.setWebViewClient(new WebViewClient() { 
  29.             public boolean shouldOverrideUrlLoading(WebView view, String url) { 
  30.                 view.loadUrl(url); 
  31.                 return true
  32.             } 
  33.  
  34.             @Override 
  35.             public void onPageFinished(WebView view, String url) { 
  36.                 super.onPageFinished(view, url); 
  37.             } 
  38.         }); 
  39.     } 
  40.  
  41.     private class MyWebChromeClient extends WebChromeClient { 
  42.         private View mCustomView; 
  43.         private CustomViewCallback mCustomViewCallback; 
  44.         @Override 
  45.         public void onShowCustomView(View view, CustomViewCallback callback) { 
  46.             super.onShowCustomView(view, callback); 
  47.             if (mCustomView != null) { 
  48.                 callback.onCustomViewHidden(); 
  49.                 return
  50.             } 
  51.             mCustomView = view
  52.             mFrameLayout.addView(mCustomView); 
  53.             mCustomViewCallback = callback; 
  54.             mWebView.setVisibility(View.GONE); 
  55.             setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
  56.         } 
  57.  
  58.         public void onHideCustomView() { 
  59.             mWebView.setVisibility(View.VISIBLE); 
  60.             if (mCustomView == null) { 
  61.                 return
  62.             } 
  63.             mCustomView.setVisibility(View.GONE); 
  64.             mFrameLayout.removeView(mCustomView); 
  65.             mCustomViewCallback.onCustomViewHidden(); 
  66.             mCustomView = null
  67.             setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
  68.             super.onHideCustomView(); 
  69.         } 
  70.     } 
  71.     @Override 
  72.     public void onConfigurationChanged(Configuration config) { 
  73.         super.onConfigurationChanged(config); 
  74.         switch (config.orientation) { 
  75.             case Configuration.ORIENTATION_LANDSCAPE: 
  76.                 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 
  77.                 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
  78.                 break; 
  79.             case Configuration.ORIENTATION_PORTRAIT: 
  80.                 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
  81.                 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 
  82.                 break; 
  83.         } 
  84.     } 
  85.     @Override 
  86.     public void onPause() { 
  87.         super.onPause(); 
  88.         mWebView.onPause(); 
  89.     } 
  90.  
  91.     @Override 
  92.     public void onResume() { 
  93.         super.onResume(); 
  94.         mWebView.onResume(); 
  95.     } 
  96.  
  97.     @Override 
  98.     public void onBackPressed() { 
  99.         if (mWebView.canGoBack()) { 
  100.             mWebView.goBack(); 
  101.             return
  102.         } 
  103.         super.onBackPressed(); 
  104.     } 
  105.  
  106.     @Override 
  107.     public void onDestroy() { 
  108.         super.onDestroy(); 
  109.         mWebView.destroy(); 
  110.     } 

 【本文為51CTO專欄作者“洪生鵬”的原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2013-08-13 14:08:23

android 4.0WebView

2022-04-28 15:38:42

WebViewJavaUI

2020-12-13 12:14:45

H5開發(fā)H5-Dooring

2023-03-29 09:37:49

視頻播放器應用鴻蒙

2015-07-15 14:38:54

H5移動適配

2024-04-10 08:24:29

2015-07-15 12:30:37

移動端H5高清多屏

2023-08-15 08:34:28

頁面制作工具GitHub

2024-04-11 10:02:06

iOS鍵盤Android

2021-06-08 05:53:31

H5 頁面項目劉海屏適配

2023-05-29 18:33:30

得物H5容器

2025-03-28 08:55:00

H5頁面APPiOS

2020-06-04 16:57:07

移動開發(fā)互聯(lián)網(wǎng)實踐

2022-06-27 09:48:15

H5移動互聯(lián)網(wǎng)頁面性能

2018-08-01 15:49:51

AndroidH5通信

2019-12-05 16:10:37

云計算行業(yè)科技

2017-08-16 10:57:25

H5HTML開發(fā)

2023-08-14 23:45:55

2022-03-28 07:52:31

H5小游戲開發(fā)教程頁面基礎布局

2019-07-18 10:32:32

focusouIOS前端
點贊
收藏

51CTO技術棧公眾號