成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

企業動態
如何讓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 

當然記得加上網絡權限

  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專欄作者“洪生鵬”的原創稿件,轉載請聯系原作者】

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

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

2022-04-28 15:38:42

WebViewJavaUI

2013-08-13 14:08:23

android 4.0WebView

2020-12-13 12:14:45

H5開發H5-Dooring

2023-03-29 09:37:49

視頻播放器應用鴻蒙

2015-07-15 12:30:37

移動端H5高清多屏

2015-07-15 14:38:54

H5移動適配

2024-04-10 08:24:29

2023-08-15 08:34:28

頁面制作工具GitHub

2021-06-08 05:53:31

H5 頁面項目劉海屏適配

2024-04-11 10:02:06

iOS鍵盤Android

2023-05-29 18:33:30

得物H5容器

2025-03-28 08:55:00

H5頁面APPiOS

2022-06-27 09:48:15

H5移動互聯網頁面性能

2020-06-04 16:57:07

移動開發互聯網實踐

2018-02-06 16:21:13

H5首屏探討

2014-09-26 11:29:23

微信瀏覽

2022-03-28 07:52:31

H5小游戲開發教程頁面基礎布局

2018-08-01 15:49:51

AndroidH5通信

2019-12-05 16:10:37

云計算行業科技

2017-08-16 10:57:25

H5HTML開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩毛片免费看 | 国产精品成av人在线视午夜片 | 久久aⅴ乱码一区二区三区 91综合网 | 久久久精品一区二区三区四季av | 日韩精品在线一区 | 日韩视频精品 | 久久精品91久久久久久再现 | 日韩免费一区二区 | 国产高清免费视频 | 国产精品美女久久久免费 | 秋霞性生活| 日韩一区二区免费视频 | 欧美xxxx性xxxxx高清 | 久久一区二区视频 | 不卡av电影在线播放 | 国产一区二区在线观看视频 | 日韩av免费在线观看 | 亚洲精品在线免费 | 国产精品视频在 | 精品麻豆剧传媒av国产九九九 | 国产99久久| 亚洲日本欧美日韩高观看 | 在线免费毛片 | 综合久久久久 | 精品国产一区二区在线 | 国产一区二区影院 | 国产一级黄色网 | www.久久| 国产精品一区二区三 | 91视频日本 | 欧美二区三区 | 久久久久久免费毛片精品 | 亚洲91视频 | 国产精品美女久久久久久不卡 | 色综合久久天天综合网 | 毛片a区 | 国产精品久久久一区二区三区 | 欧美中文字幕 | 成人伊人| 国产欧美性成人精品午夜 | 伊人网站视频 |