1. 程式人生 > >VideoView雙擊橫屏全屏實現

VideoView雙擊橫屏全屏實現

效果如圖:

實現步驟:

1.給videoview新增ontouch監聽,this是所在的activity:

videoView.setOnTouchListener(this);

2.重寫ontouch方法:

@Override
    public boolean onTouch(View v, MotionEvent event) {
        if(v.getId() == R.id.video_view) {
            return mGesDetector.onTouchEvent(event);
        }
        return super.onTouchEvent(event);
    }

3.寫一個內部類實現

GestureDetector.SimpleOnGestureListener

介面:

/*
    *
    * 手勢監聽類
    * */
    class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
        public MyGestureListener() {
            super();
        }
        @Override
        public boolean onDoubleTap(MotionEvent e) {
            if (screenState == LAND_SCREEN) {
                convertToPortScreen();
            } else if (screenState == PORT_SCREEN) {
                convertToLandScreen();
            }
            return true;
        }
}

4.使用手勢監聽類:

private GestureDetector mGesDetector;
mGesDetector = new GestureDetector(this,new MyGestureListener());
mGesDetector.setOnDoubleTapListener(new MyGestureListener());

走完這四步,對videoview的雙擊事件監聽已經寫完了。接下來奉上橫豎屏切換的程式碼:

private void convertToPortScreen(){
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//設定videoView豎屏播放
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, ToolUtils.dip2px(StudyWithExerciseActivity.this, 198f));
        params.setMargins(ToolUtils.dip2px(StudyWithExerciseActivity.this,12),ToolUtils.dip2px(StudyWithExerciseActivity.this,15),
                ToolUtils.dip2px(StudyWithExerciseActivity.this,12),ToolUtils.dip2px(StudyWithExerciseActivity.this,14));
        //params.addRule(RelativeLayout.CENTER_IN_PARENT);
        videoView.setLayoutParams(params);
        screenState = PORT_SCREEN;
    }

以上是切換成豎屏時走的程式碼。

private void convertToLandScreen(){
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);//設定videoView全屏播放
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//設定videoView橫屏播放
        WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
        android.view.Display display = wm.getDefaultDisplay();
        Point point = new Point();
        int API_LEVEL = android.os.Build.VERSION.SDK_INT;
        if(API_LEVEL >= 17){
            display.getRealSize(point);
        }else{
            display.getSize(point);
        }
        int height = point.y;
        int width = point.x;
        Log.i(TAG,"screenHeight = "+height+" ; screenWidth = "+width);
        RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) videoView
                .getLayoutParams(); // 取控當前的佈局引數
        layoutParams.height = height;
        layoutParams.width = width;
        layoutParams.setMargins(0,0,0,0);
        videoView.setLayoutParams(layoutParams);

        screenState = LAND_SCREEN;
    }

以上為切換成橫屏時走的程式碼。

注意:清單檔案中要在該activity的便籤中加入

android:configChanges="orientation|screenSize|keyboardHidden"

否則會報錯。

好了,到這裡VideoView雙擊全屏的效果就實現了。如果實際應用中遇到什麼問題給我留言,會盡快回復。

歡迎參觀博主其他部落格。

博主上傳資源下載連結:

自制免費無廣告小說閱讀APP下載:

全屏播放視訊不拉伸原始碼:

科大訊飛語音評測服務接入原始碼:

android餃子播放器使用原始碼:

視訊播放前顯示視訊第一幀原始碼:

相關推薦

VideoView實現

效果如圖: 實現步驟: 1.給videoview新增ontouch監聽,this是所在的activity: videoView.setOnTouchListener(this); 2.重寫ontouch方法: @Override public boole

h5 video切換到

其他 height icon -i 技術 nth body ima transform 將video設置為屏幕大小,覆蓋其他元素,想到這種操作我也是震驚的 function() { let startIcon = document.getE

作業系統的shell是個什麼東西?(也談為什麼.exe後黑閃一下就消失)

         我們經常聽到別人說shell, 那麼究竟什麼是shell呢?先複習兩個簡單的單詞吧: core  :  核心 shell : 外殼          在計算機中,shell是一個軟體(此處的shell跟shell sort沒有關係),沒有重量,沒有味道,

React Native Reload(R) 紅 Could not connect to development server

如圖所示,Reload 或者雙擊R後,出現大紅屏。 總結一下,問題主要出現在下面三個方向。 檢查一下,package是否正常執行。 看一下是否忘記啟動package,或者提供了錯誤的監聽埠。 看一下埠號是否和你的run-android命令的埠號一樣。 如果是這裡的問題,

FragmentDialog

TPshop 安卓端商品詳底部彈出商品規格操作選項, 但是彈出的FragmentDialog橫屏始終無法全屏 百度搜索大部分帖子都是設定dialog樣式, 找不到最終結局辦法, 最終萬能的google幫了打包, 不錯所料, 還是在stackoverflo

遠端桌面退出/不能/切換的技巧 膝上型電腦沒有Break鍵怎麼辦

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

基於angular的退出,顯示以及關閉系統

html中的程式碼: <li class="dropdown" id="dropdown4"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" ng-bind="window"><

Angular的退出,顯示以及關閉系統

html中的程式碼: <li class="dropdown" id="dropdown4"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" ng-bind="windo

遠端桌面退出/不能/切換的技巧 膝上型電腦沒有Break鍵怎麼辦?

在使用Windows遠端桌面功能時,有時候為了操作方便,我們希望它全屏,也不顯示下圖的浮動工具欄: 如何設定為不顯示上圖的浮動工具欄呢? 連線前設定一下顯示選項卡,去掉“全屏顯示時顯示連線欄”的

Android 返回鍵退出程式 實現

思路:使用者按下返回鍵時設定一個定時器來監控是否2秒內實現了退出,如果使用者沒有接著按返回鍵,則清除第一次按返回鍵的效果,使程式還原到第一次按下返回鍵之前的狀態。定時器是每次使用者按下返回鍵才去建立。 程式碼如下: /** * 選單、返回鍵響應 */ @Ove

VideoJS 網頁直播實現

最近接到客戶需求, 要求我們的網頁直播播放器更加符合廣大人民群眾的使用習慣,實現雙擊全屏的效果.目前網頁直播播放器使用了開源的 VideoJS, 它的預設效果是單擊播放區域暫停, 只能通過右下角的最大化按鈕觸發最大化. 要實現雙擊全屏播放的效果, 就要對 Vid

VideoView實現播放

1)XML佈局          <VideoView>控制元件的使用: 在佈局的時候,VideoView要使用一個控制元件包裹起來,我這裡使用的是id= Video_play_quan的

H5點按鈕,實現瀏覽器模式代碼

btn ie11 class 模式 瀏覽器 kit 點擊 全屏 document <button class="fullBtn">點擊實現全屏</button> $(‘.fullBtn‘).on(‘click‘, function() {

Android Activity旋轉螢幕實現方法

activity在豎屏的時候,頂部會有狀態列,頂部會有ToolBar,現在需求是,旋轉螢幕以後,橫屏狀態下 整個介面是以全屏狀態顯示,隱藏ToolBar,不顯示螢幕最頂部的狀態列首先,在AndroidManiFest裡面設定Activity的屬性:<activity a

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

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

C# 視窗/顯示和恢復

用控制元件panel1全屏顯示 panel1-事件裡用MouseDoubleClick 遮蓋panel1上的控制元件屬性的Enabled設定為false,避免捕捉不到雙擊 C#程式碼: using System; using System.Collections.Gene

經驗及技巧:用MediaElement 控制元件實現並自動旋轉至

如何實現搜狐視訊開始一部分螢幕播放,點選後實現全屏並自動橫屏。我剛開始思路是自己控制進行旋轉,不過最後還是有些問題。其實不用那麼麻煩,方法很簡單。只要設定MediaElement的AreTransportControlsEnabled 屬性均為true即可。AreTrans

JS調用命令實現F11

return ima logs key f11全屏 嘗試 ges div 500px <body onload =‘autoSetFull()‘> <button id=‘btn‘>全屏按鈕</button> <div

winfrom實現控件效果

ring napi ica hwnd point cmd str mds use 用常規方法實現全屏顯示時,由於采用的三方控件導致界面頂端一直有一條半透明的類似標題欄的東西無法去除,原因一直沒找到。 下面綜合整理下網上兩位博主的用WindowsAPI實現全屏的方法: 控

手機影音第九天,控制視頻播放與退出播放,音量調節按鈕來控制視頻音量與靜音的實現

視頻的全屏播放 音量變化與靜音 代碼以托管到碼雲,有興趣的小夥伴可以下載看看 https://git.oschina.net/joy_yuan/MobilePlayer一、視頻全屏播放與退出全屏 系統默認的videoview類,沒有調整大小的方法,因此需要自定義一個類,繼承vide