How to make VideoView full screen

后端 未结 4 371
粉色の甜心
粉色の甜心 2021-01-14 09:09

I want to play a video in my Activity using a VideoView,and make it fullscreen and landscape mode (with hiding virtual button and stat

相关标签:
4条回答
  • 2021-01-14 09:43

    You can use this for BackButton:

    closeButton = (Button) findViewById(R.id.buttonClose);
        closeButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                Log.d("VideoPreview", "onClick Close Button");
                VideoFullscreenActivity.super.onBackPressed();
            }
        });
    

    Take a look: How to close a VideoView Activity (currently have to press back twice)

    0 讨论(0)
  • 2021-01-14 09:54

    Here's some snippets from my working app:

    in player activity:

    decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    

    your player_layout.xml:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/video_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black"
    android:keepScreenOn="true"
    android:orientation="vertical">
    
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/main_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#000000"
        tools:context=".PlayerActivity">
    
       <VideoView
         android:id="@+id/videoView"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_gravity="center"/>
    
    </FrameLayout>
    
    
    </RelativeLayout>
    

    values/styles.xml:

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
    
    0 讨论(0)
  • 2021-01-14 10:07

    At Last, I solve it with Kristo1990 and prashantwosti 's help My code is :

    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.MATCH_PARENT,
                    RelativeLayout.LayoutParams.MATCH_PARENT
            );
    private void enterFullScreen(){
            this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//设置横屏
            mVideoView.setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
            layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
            layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
            layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
            layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
            mVideoView.setLayoutParams(layoutParams);
        }
    
    private void exitFullScreen(){
              this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                mVideoView.setSystemUiVisibility(0);
                isFullScreen = false;
                mFullScreen.setVisibility(View.INVISIBLE);
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                    layoutParams.removeRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
                    layoutParams.removeRule(RelativeLayout.ALIGN_PARENT_TOP);
                    layoutParams.removeRule(RelativeLayout.ALIGN_PARENT_LEFT);
                    layoutParams.removeRule(RelativeLayout.ALIGN_PARENT_RIGHT);
                }else {
                    layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM,0);
                    layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP,0);
                    layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT,0);
                    layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT,0);
                }
                mFullScreen.setVisibility(View.VISIBLE);
    
                mVideoView.setLayoutParams(layoutParams);
            }
    

    And at last I override the KEYCODE_BACK to exit fullscreen I hope it can help you all and thank you again.

    0 讨论(0)
  • 2021-01-14 10:08

    Try this on your landscape mode.

    <VideoView android:id="@+id/video"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
       android:layout_alignParentRight="true"
       android:layout_alignParentBottom="true"
       android:layout_alignParentTop="true"
        />
    

    Hide virtual buttons add this code:

    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
    

    Original size

             DisplayMetrics metrics = new DisplayMetrics();  getWindowManager().getDefaultDisplay().getMetrics(metrics);
             android.widget.LinearLayout.LayoutParams params = (android.widget.LinearLayout.LayoutParams) videoView.getLayoutParams();
             params.width =  (int) (300*metrics.density);
             params.height = (int) (250*metrics.density);
             params.leftMargin = 30;
             videoView.setLayoutParams(params);
    

    full screen size

             DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics);
             android.widget.LinearLayout.LayoutParams params = (android.widget.LinearLayout.LayoutParams) videoView.getLayoutParams();
             params.width =  metrics.widthPixels;
             params.height = metrics.heightPixels;
             params.leftMargin = 0;
             videoView.setLayoutParams(params);
    
    0 讨论(0)
提交回复
热议问题