欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android編程使WebView支持HTML5 Video全屏播放的解決方法

 更新時(shí)間:2015年10月30日 12:26:15   作者:勇往直前的胖子  
這篇文章主要介紹了Android編程使WebView支持HTML5 Video全屏播放的解決方法,較為詳細(xì)的分析了全屏播放所涉及的相關(guān)技巧,并給出了完整代碼下載地址供讀者參考,需要的朋友可以參考下

本文實(shí)例講述了Android編程使WebView支持HTML5 Video全屏播放的解決方法。分享給大家供大家參考,具體如下:

1)需要在AndroidManifest.xml文件中聲明需要使用HardwareAccelerate, 可以細(xì)化到Activity級(jí)別,如果不需要的View可以聲明不要用加速,但是需要在代碼中做,具體如下:

a. 如果要聲明整個(gè)應(yīng)用都要加速:

復(fù)制代碼 代碼如下:
<application ... android:hardwareAccelerated ="true">

b. 如果要在Activity中聲明,則:
復(fù)制代碼 代碼如下:
<activity ... android:hardwareAccelerated="true" >
還可以更細(xì)化到Window, getWindow.setFlags(
         WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

c. 如果application或者activity都申明了要硬件加速,但是為了某些原因(比如省電?),一些View不需要硬件加速的話,

復(fù)制代碼 代碼如下:
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

2)可以說(shuō)挺奇怪的是,需要在AndroidManifest.xml文件中用上<use-sdk></use-sdk>標(biāo)簽,而且如果是空的還不行,必須寫(xiě)上targetSDK或者minSDK,但是我試驗(yàn)過(guò),不管寫(xiě)版本是多少都沒(méi)有關(guān)系。。。理論上說(shuō),Android應(yīng)該是從3.0( API Level 11)開(kāi)始可以對(duì)2D渲染加速,但是我把targetSDK設(shè)置為5都可以使用的,但是這個(gè)標(biāo)簽不寫(xiě)還不行。

一般來(lái)說(shuō),上面的操作做了,就可以使用video標(biāo)簽播放視屏了,如果要支持全屏,還需要做一點(diǎn)操作:

1)給webview一個(gè)WebChromeClient對(duì)象,這個(gè)WebChromeClient對(duì)象需要實(shí)現(xiàn)onShowCustomView和onHideCustomView方法,下面是一個(gè)實(shí)現(xiàn)例子:

@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
   if (myCallback != null) {
      myCallback.onCustomViewHidden();
      myCallback = null ;
      return;
   }
   long id = Thread.currentThread().getId();
   WrtLog. v("WidgetChromeClient", "rong debug in showCustomView Ex: " + id);
   ViewGroup parent = (ViewGroup) mWebView.getParent();
   String s = parent.getClass().getName();
   WrtLog. v("WidgetChromeClient", "rong debug Ex: " + s);
   parent.removeView( mWebView);
   parent.addView(view);
   myView = view;
   myCallback = callback;
   chromeClient = this ;
}
private View myView = null;
private CustomViewCallback myCallback = null;
public void onHideCustomView() {
   long id = Thread.currentThread().getId();
   WrtLog. v("WidgetChromeClient", "rong debug in hideCustom Ex: " + id);
   if (myView != null) {
      if (myCallback != null) {
          myCallback.onCustomViewHidden();
          myCallback = null ;
      }
      ViewGroup parent = (ViewGroup) myView.getParent();
      parent.removeView( myView);
      parent.addView( mWebView);
      myView = null;
   }
}

好吧,這個(gè)寫(xiě)法和網(wǎng)上很多寫(xiě)法不一樣,網(wǎng)上大部分的例子都是onShowCustomView方法接收到的view是一個(gè)VideoView對(duì)象,而這里是一個(gè)找不到的HTML5VideoFullScreen的VideoSurfaceView子類,而且這個(gè)子類還是一個(gè)private的子類,在外面根本沒(méi)有辦法訪問(wèn)到,android.jar中也沒(méi)有HTML5VideoFullScreen這個(gè)類。如果想要在application中訪問(wèn)到這個(gè)類,那么需要把<android-SDK-path>/platforms/<android-version>/data/layoutlib.jar這個(gè)包加到buildpath中,而且從android-14,也就是android4.0以后才這樣,也就是說(shuō),網(wǎng)上說(shuō)的那個(gè)方法在android3.0時(shí)代是可以用的,android4.0以后就不行了,我用的是android4.0.3。

其實(shí)不管是什么版本,這個(gè)段代碼的大概意思就是,在onShowCustomView方法中,將獲取到的view放到當(dāng)前Activity的最上方,在onHideCustomView中,將之前的view隱藏或者刪除,將原來(lái)被覆蓋的webview放回來(lái),并結(jié)束播放,否在會(huì)報(bào)MediaPlayer IllegalStatusException, 而且還是Native method,根本沒(méi)法調(diào)試了。

上面代碼是片段,很多朋友看了也不能解決問(wèn)題,完整實(shí)例代碼代碼點(diǎn)擊此處本站下載。

可以下載下來(lái),用eclipse導(dǎo)入工程,把樣例視頻放到sdcard根部目錄下,從系統(tǒng)角度看就是/mnt/sdcard即可。

效果如圖:

全屏前:

全屏后:

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android?搜索框架使用詳解

    Android?搜索框架使用詳解

    這篇文章主要為大家介紹了Android?搜索框架使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Android 接收微信、QQ其他應(yīng)用打開(kāi)第三方分享功能

    Android 接收微信、QQ其他應(yīng)用打開(kāi)第三方分享功能

    這篇文章主要介紹了Android 接收微信、QQ其他應(yīng)用打開(kāi),第三方分享 ,思路很簡(jiǎn)單通過(guò)在AndroidManifest.xml注冊(cè)ACTION事件,在用于接收分享的Activity里面加接收代碼,感興趣的朋友可以一起學(xué)習(xí)下
    2022-11-11
  • Android結(jié)合kotlin使用coroutine的方法實(shí)例

    Android結(jié)合kotlin使用coroutine的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Android結(jié)合kotlin使用coroutine的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • RecyclerView 源碼淺析測(cè)量 布局 繪制 預(yù)布局

    RecyclerView 源碼淺析測(cè)量 布局 繪制 預(yù)布局

    這篇文章主要介紹了RecyclerView 源碼淺析測(cè)量 布局 繪制 預(yù)布局,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Android使用自定義View實(shí)現(xiàn)餅狀圖的實(shí)例代碼

    Android使用自定義View實(shí)現(xiàn)餅狀圖的實(shí)例代碼

    這篇文章主要介紹了Android使用自定義View實(shí)現(xiàn)餅狀圖的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Android app開(kāi)發(fā)中Retrofit框架的初步上手使用

    Android app開(kāi)發(fā)中Retrofit框架的初步上手使用

    這篇文章主要介紹了Android app開(kāi)發(fā)中Retrofit框架的初步上手使用,Retrofit 2.0發(fā)布以來(lái)獲得了巨大的人氣增長(zhǎng),并且經(jīng)常被開(kāi)發(fā)者們拿來(lái)與Volley比較,需要的朋友可以參考下
    2016-02-02
  • 關(guān)于WebView 重定向行為導(dǎo)致的多次加載的問(wèn)題

    關(guān)于WebView 重定向行為導(dǎo)致的多次加載的問(wèn)題

    這篇文章主要介紹了關(guān)于WebView 重定向行為導(dǎo)致的多次加載的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • Android指紋識(shí)別功能

    Android指紋識(shí)別功能

    這篇文章主要為大家詳細(xì)介紹了Android指紋識(shí)別功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • AndroidStudio Gradle第三依賴統(tǒng)一管理的實(shí)現(xiàn)方法

    AndroidStudio Gradle第三依賴統(tǒng)一管理的實(shí)現(xiàn)方法

    這篇文章主要介紹了AndroidStudio Gradle第三依賴統(tǒng)一管理的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-09-09
  • Kotlin協(xié)程之Flow觸發(fā)與消費(fèi)示例解析

    Kotlin協(xié)程之Flow觸發(fā)與消費(fèi)示例解析

    Kotlin協(xié)程中,當(dāng)需要消費(fèi)流時(shí),會(huì)調(diào)用collect方法,觸發(fā)流的消費(fèi),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-09-09

最新評(píng)論