1. 程式人生 > >Android VideoView播放視訊豎屏切換橫屏有黑白邊無法全屏

Android VideoView播放視訊豎屏切換橫屏有黑白邊無法全屏

問題描述:Android VideoView播放視訊豎屏切換橫屏有黑邊無法全屏

無法鋪滿全屏

解決辦法是自定義VedioView,動態設定寬高。
* 1.自定義VedioView,並在onMeasure中新增

int width = getDefaultSize(0,widthMeasureSpec);
int height = getDefaultSize(0,heightMeasureSpec);
setMeasuredDimension(width,height);

完整程式碼如下

package vedioplay.csy.com.videoplay;

import android.content.Context;
import
android.util.AttributeSet; import android.widget.VideoView; /** * Created by chenshouyin on 2017/10/22. * 我的部落格:http://blog.csdn.net/e_inch_photo * 我的Github:https://github.com/chenshouyin */ public class IVideoView extends VideoView { public IVideoView(Context context) { super(context); } public
IVideoView(Context context, AttributeSet attrs) { super(context, attrs); } public IVideoView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super
.onMeasure(widthMeasureSpec, heightMeasureSpec); //此處設定的預設值可隨意,因為getDefaultSize中的size是有值的 int width = getDefaultSize(0,widthMeasureSpec); int height = getDefaultSize(0,heightMeasureSpec); setMeasuredDimension(width,height); System.out.println("======onMeasure===width==="+width); System.out.println("======onMeasure===height==="+height); } }

僅僅新增上述程式碼還是有問題,最底部還是有黑邊

最底部還是有黑邊

  • 2.再在程式碼中橫豎屏切換的時候新增
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DensityUtil.dip2px(CustomPlayStyleActivity.this,300));
mVideoView.setLayoutParams(params);

完整程式碼如下

   /**
     * 監聽螢幕方向改變
     * @param newConfig
     * 配置檔案配置了configChanges才會走次此回撥
     */
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        //配置檔案中設定 android:configChanges="orientation|screenSize|keyboardHidden" 不然橫豎屏切換的時候重新建立又重新播放
        if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            mVideoView.setLayoutParams(params);

            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);//顯示頂部狀態列
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DensityUtil.dip2px(CustomPlayStyleActivity.this,300));
            mVideoView.setLayoutParams(params);

            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);//全屏不 顯示頂部狀態列
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
        }
        System.out.println("======onConfigurationChanged===");
    }

最終橫屏全屏效果

如果本文對你有幫助,就關注下作者吧點此檢視全部最新文章

相關推薦

Android VideoView播放視訊切換黑白無法

問題描述:Android VideoView播放視訊豎屏切換橫屏有黑邊無法全屏 解決辦法是自定義VedioView,動態設定寬高。 * 1.自定義VedioView,並在onMeasur

android videoView播放視訊,對播放結束的監聽方法

android videoView播放視訊,對播放結束的監聽方法  VideoView videoView = (VideoView) findViewById(R.id.vv);   MediaController controller = new MediaCont

Android VideoView播放視訊遇到的問題

1.檔案找不到 在指定檔案時,是將檔案通過eclipse pull到sdcard的,然後就想當然的寫 File file = new File(“sdcard/1.mp4”); 結果檔案找不到。原

Android VideoView播放本地視訊短暫黑的解決方法

       新的大版本終於正式釋出了,整整三個月,做的心力交瘁,導致好久都沒有更新文章了。最近接觸了許多新的知識,也算是忙碌中有所收穫。希望接下來的時間工作上能夠稍微鬆緩一些,讓我可以利用在家的閒

Android VideoView播放avi格式視訊聲音無影象問題

   1.新增許可權: <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.

橫豎切換,控制每一個Controller的橫豎狀態 控制vc 進入的狀態

橫豎屏切換,控制每一個Controller的橫豎屏狀態 寫在前面的話: 在網上看了看,發現大多數部落格都寫過,但是都會有些小問題。 結合資料和部落格總結和整理了一下 適合 ios7+ 第一步 首先保證工程支援橫豎屏 不多說看圖 保證圈紅的地方 打對勾 第二步 分

Android VideoView播放網路視訊簡介(轉)

最近專案中用到了很多視訊播放的地方,不管是聊天傳送的視訊訊息,還是類似內涵段子的視訊列表,都會涉及這些知識,不過網上的知識都很零散,一會找快取方法,一會找預覽圖片的方法,一會找視訊動態修改尺寸的方法,總之找的人好煩,所以自己寫一篇來記錄這些知識點,也方便別人查閱 獲取視訊首幀當預覽圖(MediaMetada

android videoview 播放前黑的解決方法之一

http://stackoverflow.com/questions/9765629/android-videoview-black-screen 播放前黑屏的原因是videoview載入資源需要一定的耗時, 如何避免播放前的黑屏現象呢, 可以給videoview設定載入的

Android VideoView播放raw內視訊

一個標點。。。浪費的時間。。。 用VideoView播放raw內的視訊,整了半天都報錯:Failed to open file 'android:resource://***/2131099649' 經過淡騰的查詢發現是個標點寫錯了android:resource應該寫成

Android VideoView播放網路視訊簡介

最近專案中用到了很多視訊播放的地方,不管是聊天傳送的視訊訊息,還是類似內涵段子的視訊列表,都會涉及這些知識,不過網上的知識都很零散,一會找快取方法,一會找預覽圖片的方法,一會找視訊動態修改尺寸的方法,總之找的人好煩,所以自己寫一篇來記錄這些知識點,也方便別人查閱獲取視訊首幀當

Android移動開發-使用VideoView播放視訊的實現

為了在Android應用中播放視訊,Android提供了VideoView控制元件,它就是一個位於android.widget包下的控制元件,它的作用與ImageView類似,只是ImageVie

Android開發之使用VideoView播放視訊

     Android提供了 VideoView元件,它的作用與ImageView類似,只是ImageView用於顯示圖片,而VideoView用於播放視訊。 使用VideoView播放視訊的步驟如下: 1)        在介面佈局檔案中定義VideoView元件,或在

android videoview 播放之前短暫黑

最近在做視訊閃屏頁,但是遇到了一個困難 VideoView播放視訊的時候會出現黑屏,能夠清晰看到黑色的螢幕,很不美觀 照慣例,遇到問題先看有沒有網友解決過,發現了幾篇部落格 但是兩個部落格都沒有能解決我的問題,第一篇部落格提到的onInfo裡面的回

VideoView播放視訊問題處理

前言 你又擦肩而過 你耳機聽什麼 能不能告訴我 ……. 記得 我寫給你的情書 都什麼年代了 到現在我還在寫著 總有一天總有一年會發現 有人默默的陪在你的身邊 也許 我不該在你的世界 當你收到情書 也代表我已經走遠 簡介 Andro

android SurfaceView播放視訊

        佈局檔案 <SurfaceView android:id="@+id/surfaceview" android:layout_width="match_parent" android:layo

Android播放視訊功能

public class VodeoPlayActivity extends Activity { /** Called when the activity is first created. */ private EditText filenamEditText; private

VideoView播放視訊異常MediaPlayer: Error (1,-2147483648)

異常資訊如下: 05-28 23:19:52.019 15284-15284/com.softpo.videodemo E/dalvikvm: Could not find class 'android.os.PersistableBundle', ref

Android--SurfaceView播放視訊

前言   本篇部落格講解一下如何在Android下,使用SurfaceView播放一個視訊流媒體。之前有講到如何使用MediaPlayer播放音訊流媒體,其實MediaPlayer還可以播放視訊,只需需要SurfaceView的配合,SurfaceView主要用於顯示M

android webview播放視訊

Android WebView播放視訊問題(轉 測試可正常使用) 1、此次的方案用到WebView,而且其中會有視訊巢狀,在預設的WebView中直接播放視訊會有問題, 而且不同的SDK版本情況還不一樣,網上搜索了下解決方案,在此記錄下.   webView.getSett

android Mediaplayer 播放視訊 只有聲音沒有畫面的問題

剛剛解決了 mediaplayer 和SurfaceView播放視訊 只有聲音沒有畫面的問題, 最終確定為,holder.setFixedSize(width,heigh); 設定解析度的方法,放在了 mediaplayer的回撥函式裡,導致沒有畫面, 把這個holder.