最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

b. 如果要在Activity中聲明,則:
復(fù)制代碼 代碼如下:
<activity ... android:hardwareAccelerated="true" >
還可以更細化到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)可以說挺奇怪的是,需要在AndroidManifest.xml文件中用上<use-sdk></use-sdk>標(biāo)簽,而且如果是空的還不行,必須寫上targetSDK或者minSDK,但是我試驗過,不管寫版本是多少都沒有關(guān)系。。。理論上說,Android應(yīng)該是從3.0( API Level 11)開始可以對2D渲染加速,但是我把targetSDK設(shè)置為5都可以使用的,但是這個標(biāo)簽不寫還不行。

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

1)給webview一個WebChromeClient對象,這個WebChromeClient對象需要實現(xiàn)onShowCustomView和onHideCustomView方法,下面是一個實現(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;
   }
}

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

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

上面代碼是片段,很多朋友看了也不能解決問題,完整實例代碼代碼點擊此處本站下載。

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

效果如圖:

全屏前:

全屏后:

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

相關(guān)文章

  • Android 中 Fragment的使用大全

    Android 中 Fragment的使用大全

    通常地 fragment做為宿主activity UI的一部分, 被作為activity整個view hierarchy的一部分被嵌入。本篇文章給大家介紹android fragment使用,需要的朋友一起看看吧
    2015-10-10
  • Android 靜默安裝和智能安裝的實現(xiàn)方法

    Android 靜默安裝和智能安裝的實現(xiàn)方法

    靜默安裝就是無聲無息的在后臺安裝apk,沒有任何界面提示。智能安裝就是有安裝界面,但全部是自動的,不需要用戶去點擊。下面腳本之家小編給大家介紹下Android 靜默安裝和智能安裝的實現(xiàn)方法,感興趣的朋友一起看看吧
    2018-01-01
  • Android學(xué)習(xí)之文件存儲讀取

    Android學(xué)習(xí)之文件存儲讀取

    本節(jié)給大家介紹的是Android數(shù)據(jù)存儲與訪問方式中的一個——文件存儲與讀寫,當(dāng)然除了這種方式外,我們可以存到SharedPreference,數(shù)據(jù)庫, 或者ContentProvider中,當(dāng)然這些后面都會講,嗯,開始本文內(nèi)容~
    2016-07-07
  • Android 實現(xiàn)九宮格抽獎功能

    Android 實現(xiàn)九宮格抽獎功能

    這篇文章主要介紹了Android 實現(xiàn)九宮格抽獎功能,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下
    2021-03-03
  • android自定義彈出框樣式的實現(xiàn)方法

    android自定義彈出框樣式的實現(xiàn)方法

    這篇文章主要為大家詳細介紹了android自定義彈出框樣式的實現(xiàn)方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Android 事件觸發(fā)機制的深入學(xué)習(xí)

    Android 事件觸發(fā)機制的深入學(xué)習(xí)

    這篇文章主要介紹了 Android 事件觸發(fā)機制的深入學(xué)習(xí)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Android多進程間采用AIDL方式進行通信

    Android多進程間采用AIDL方式進行通信

    這篇文章主要為大家詳細介紹了Android多進程間采用AIDL方式進行通信,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • android調(diào)試工具DDMS的使用詳解

    android調(diào)試工具DDMS的使用詳解

    本篇文章對android調(diào)試工具DDMS的使用進行了詳細的分析介紹。需要的朋友參考下
    2013-05-05
  • Android編程程序?qū)崿F(xiàn)一鍵鎖屏的方法講解

    Android編程程序?qū)崿F(xiàn)一鍵鎖屏的方法講解

    今天小編就為大家分享一篇關(guān)于Android編程程序?qū)崿F(xiàn)一鍵鎖屏的方法講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • android中Invalidate和postInvalidate的更新view區(qū)別

    android中Invalidate和postInvalidate的更新view區(qū)別

    Android中實現(xiàn)view的更新有兩組方法,一組是invalidate,另一組是postInvalidate,其中前者是在UI線程自身中使用,而后者在非UI線程中使用,感興趣的朋友可以了解下哦
    2013-01-01

最新評論

南溪县| 蓬溪县| 滨州市| 仁怀市| 台山市| 会昌县| 乌拉特前旗| 康保县| 台东县| 炉霍县| 乌鲁木齐县| 安泽县| 顺义区| 巴彦淖尔市| 兴安县| 新宁县| 浦东新区| 郸城县| 宜城市| 涪陵区| 米泉市| 奉贤区| 谷城县| 临江市| 云南省| 神木县| 依安县| 漳平市| 临高县| 罗平县| 秦皇岛市| 济阳县| 新龙县| 交城县| 龙江县| 明溪县| 开阳县| 封丘县| 洛隆县| 福海县| 兴文县|