91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中如何使用WebView實現全屏切換播放網頁視頻功能

發布時間:2021-09-27 13:42:51 來源:億速云 閱讀:216 作者:小新 欄目:編程語言

這篇文章主要介紹Android中如何使用WebView實現全屏切換播放網頁視頻功能,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

首先寫布局文件activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:id="@+id/container"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:orientation="vertical">  <FrameLayout    android:id="@+id/video_view"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:visibility="gone"    ></FrameLayout>  <Button    android:id="@+id/video_landport"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="全屏不顯示該按扭,點擊切換橫屏"    android:gravity="center"    />  <WebView    android:id="@+id/video_webview"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    />  </LinearLayout>

  原理:實現全屏的時候把webview里的視頻放到一個View(布局里的video_view控件)里面,然后把webview隱藏掉!這樣就實現了全屏播放的!

現在具體來看看怎么實現的:

先放代碼MainActivity.java:

public class MainActivity extends Activity {   private FrameLayout videoview;// 全屏時視頻加載view  private Button videolandport;  private WebView videowebview;  private Boolean islandport = true;//true表示此時是豎屏,false表示此時橫屏。  private View xCustomView;  private xWebChromeClient xwebchromeclient;  private String url = "http://look.appjx.cn/mobile_api.php?mod=news&id=12604";  private WebChromeClient.CustomViewCallback   xCustomViewCallback;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉應用標題    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,        WindowManager.LayoutParams.FLAG_FULLSCREEN);    setContentView(R.layout.activity_main);    initwidget();    initListener();    videowebview.loadUrl(url);  }  private void initListener() {    // TODO Auto-generated method stub    videolandport.setOnClickListener(new Listener());  }  private void initwidget() {    // TODO Auto-generated method stub    videoview = (FrameLayout) findViewById(R.id.video_view);    videolandport = (Button) findViewById(R.id.video_landport);    videowebview = (WebView) findViewById(R.id.video_webview);    WebSettings ws = videowebview.getSettings();    /**     * setAllowFileAccess 啟用或禁止WebView訪問文件數據 setBlockNetworkImage 是否顯示網絡圖像     * setBuiltInZoomControls 設置是否支持縮放 setCacheMode 設置緩沖的模式     * setDefaultFontSize 設置默認的字體大小 setDefaultTextEncodingName 設置在解碼時使用的默認編碼     * setFixedFontFamily 設置固定使用的字體 setJavaSciptEnabled 設置是否支持Javascript     * setLayoutAlgorithm 設置布局方式 setLightTouchEnabled 設置用鼠標激活被選項     * setSupportZoom 設置是否支持變焦     * */    ws.setBuiltInZoomControls(true);// 隱藏縮放按鈕    ws.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);// 排版適應屏幕    ws.setUseWideViewPort(true);// 可任意比例縮放    ws.setLoadWithOverviewMode(true);// setUseWideViewPort方法設置webview推薦使用的窗口。setLoadWithOverviewMode方法是設置webview加載的頁面的模式。    ws.setSavePassword(true);    ws.setSaveFormData(true);// 保存表單數據    ws.setJavaScriptEnabled(true);    ws.setGeolocationEnabled(true);// 啟用地理定位    ws.setGeolocationDatabasePath("/data/data/org.itri.html5webview/databases/");// 設置定位的數據庫路徑    ws.setDomStorageEnabled(true);    xwebchromeclient = new xWebChromeClient();    videowebview.setWebChromeClient(xwebchromeclient);    videowebview.setWebViewClient(new xWebViewClientent());  }  class Listener implements OnClickListener {    @Override    public void onClick(View v) {      // TODO Auto-generated method stub      switch (v.getId()) {      case R.id.video_landport:        if (islandport) {          setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);          videolandport.setText("全屏不顯示該按扭,點擊切換橫屏");        }else {          setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);          videolandport.setText("全屏不顯示該按扭,點擊切換豎屏");        }        break;      default:        break;      }    }  }    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {      if (keyCode == KeyEvent.KEYCODE_BACK) {        if (inCustomView()) {          hideCustomView();          return true;        }else {        videowebview.loadUrl("about:blank");//          mTestWebView.loadData("", "text/html; charset=UTF-8", null);        MainActivity.this.finish();          Log.i("testwebview", "===>>>2");      }      }      return true;    }    /**    * 判斷是否是全屏    * @return    */    public boolean inCustomView() {       return (xCustomView != null);     }     /**     * 全屏時按返加鍵執行退出全屏方法     */     public void hideCustomView() {       xwebchromeclient.onHideCustomView();     }  /**   * 處理Javascript的對話框、網站圖標、網站標題以及網頁加載進度等   * @author   */  public class xWebChromeClient extends WebChromeClient {    private Bitmap xdefaltvideo;    private View xprogressvideo;    @Override    //播放網絡視頻時全屏會被調用的方法    public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback)    {      if (islandport) {      }      else{//        ii = "1";//        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);      }      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);      videowebview.setVisibility(View.GONE);      //如果一個視圖已經存在,那么立刻終止并新建一個      if (xCustomView != null) {        callback.onCustomViewHidden();        return;      }            videoview.addView(view);      xCustomView = view;      xCustomViewCallback = callback;      videoview.setVisibility(View.VISIBLE);    }    @Override    //視頻播放退出全屏會被調用的    public void onHideCustomView() {      if (xCustomView == null)//不是全屏播放狀態        return;                 // Hide the custom view.      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);      xCustomView.setVisibility(View.GONE);      // Remove the custom view from its container.      videoview.removeView(xCustomView);      xCustomView = null;      videoview.setVisibility(View.GONE);      xCustomViewCallback.onCustomViewHidden();      videowebview.setVisibility(View.VISIBLE);      //Log.i(LOGTAG, "set it to webVew");    }    //視頻加載添加默認圖標    @Override    public Bitmap getDefaultVideoPoster() {      //Log.i(LOGTAG, "here in on getDefaultVideoPoster");       if (xdefaltvideo == null) {        xdefaltvideo = BitmapFactory.decodeResource(            getResources(), R.drawable.videoicon);      }      return xdefaltvideo;    }    //視頻加載時進程loading    @Override    public View getVideoLoadingProgressView() {      //Log.i(LOGTAG, "here in on getVideoLoadingPregressView");      if (xprogressvideo == null) {        LayoutInflater inflater = LayoutInflater.from(MainActivity.this);        xprogressvideo = inflater.inflate(R.layout.video_loading_progress, null);      }      return xprogressvideo;    }    //網頁標題     @Override     public void onReceivedTitle(WebView view, String title) {      (MainActivity.this).setTitle(title);     }//     @Override//    //當WebView進度改變時更新窗口進度//     public void onProgressChanged(WebView view, int newProgress) {//       (MainActivity.this).getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress*100);//     }     }  /**   * 處理各種通知、請求等事件   * @author   */  public class xWebViewClientent extends WebViewClient {     @Override      public boolean shouldOverrideUrlLoading(WebView view, String url) {        Log.i("webviewtest", "shouldOverrideUrlLoading: "+url);        return false;      }  }  /**   * 當橫豎屏切換時會調用該方法   * @author   */  @Override  public void onConfigurationChanged(Configuration newConfig) {    Log.i("testwebview", "=====<<< onConfigurationChanged >>>=====");     super.onConfigurationChanged(newConfig);     if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){       Log.i("webview", "  現在是橫屏1");       islandport = false;      }else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){       Log.i("webview", "  現在是豎屏1");       islandport = true;      }  }}

  最后說下AndroidManifest.xml設置;訪問網絡權限加上這句

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

當切換橫豎屏時為了不重新調用onCreate等方法,要加個這句:

android:configChanges="orientation|keyboardHidden|screenSize"

以上是“Android中如何使用WebView實現全屏切換播放網頁視頻功能”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临桂县| 许昌市| 榆树市| 阿克苏市| 凤台县| 靖安县| 上思县| 建始县| 绥滨县| 南木林县| 新丰县| 黔东| 苏州市| 潼南县| 乌兰察布市| 邢台县| 蒙城县| 姚安县| 南涧| 武宁县| 淳化县| 夏河县| 江都市| 沙洋县| 小金县| 信宜市| 茂名市| 蒙阴县| 内黄县| 东至县| 永和县| 彰武县| 库车县| 昌宁县| 尉氏县| 新巴尔虎右旗| 海安县| 普定县| 华容县| 阜新市| 施甸县|