无拉伸视频全屏videoview全屏、视频、videoview

2023-09-12 01:06:48 作者:Sandm ° 旧梦颜

我不知道如果我能得到一个方法,让视频运行通过videoview全屏?

我搜索了很多,试了很多办法,如:

应用主题清单:

 安卓主题=@安卓风格/ Theme.NoTitleBar.Fullscreen
 

但是,这并不强制视频是在全屏显示。

应用在活动本身:

  requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow()。setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
 

也不会强制视频是在全屏显示。

只有这样,力视频全屏是:

 < VideoView机器人:ID =@ + ID / myvideoview
    机器人:layout_width =FILL_PARENT
    机器人:layout_alignParentRight =真
    机器人:layout_alignParentLeft =真
    机器人:layout_alignParentTop =真
    机器人:layout_alignParentBottom =真
    机器人:layout_height =FILL_PARENT>
< / VideoView>
 
华为视频怎么全屏播放啊

此方式,导致全屏幕视频,但它的绵延视频本身(拉长视频),

我不将这种不正当的解决方案,我videoview,那么有没有什么办法可以做到这一点不拉伸视频?

视频类:

 公共类视频延伸活动{
    私人VideoView myvid;

    @覆盖
    公共无效的onCreate(包冰柱){
        super.onCreate(冰柱);
        的setContentView(R.layout.main);
        myvid =(VideoView)findViewById(R.id.myvideoview);
        myvid.setVideoURI(Uri.parse(android.resource://+ getPackageName()
            +/+ R.raw.video_1));
        myvid.setMediaController(新的MediaController(本));
        myvid.requestFocus();
        myvid.start();
    }
}
 

main.xml中:

 < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT
    机器人:方向=垂直>

    < VideoView
        机器人:ID =@ + ID / myvideoview
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =FILL_PARENT/>

< / LinearLayout中>
 

解决方案

这样你可以自己设置视频的属性。

使用一个SurfaceView(给你的看法更多的控制),将其设置为FILL_PARENT匹配整个屏幕

 < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
              机器人:方向=垂直
              机器人:layout_width =match_parent
              机器人:layout_height =FILL_PARENT>

    < SurfaceView
        机器人:ID =@ + ID / surfaceViewFrame
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =FILL_PARENT
        机器人:layout_gravity =中心>
    < / SurfaceView>
< / LinearLayout中>
 

然后在你的java code得到表面观和媒体播放器添加到它

  surfaceViewFrame =(SurfaceView)findViewById(R.id.surfaceViewFrame);
球员=新的MediaPlayer();
player.setDisplay(保持器);
 

设置在媒体播放器上的preparedListener和手动计算视频所需的大小,以填满屏幕所需的比例,避免拉伸视频!

  player.setOn preparedListener(新在preparedListener(){

        @覆盖
        公共无效于prepared(MediaPlayer的MP){
                    //调整视频的大小
    //所以它在屏幕上适合
    INT videoWidth = player.getVideoWidth();
    INT videoHeight = player.getVideoHeight();
    浮动videoProportion =(浮点)videoWidth /(浮点)videoHeight;
    INT屏幕宽度= getWindowManager()getDefaultDisplay()的getWidth()。
    。INT screenHeight = getWindowManager()getDefaultDisplay()的getHeight();
    浮动screenProportion =(浮点)屏幕宽度/(浮点)screenHeight;
    android.view.ViewGroup.LayoutParams LP = surfaceViewFrame.getLayoutParams();

    如果(videoProportion> screenProportion){
        lp.width =屏幕宽度;
        lp.height =(INT)((浮点)屏幕宽度/ videoProportion);
    } 其他 {
        lp.width =(INT)(videoProportion *(浮点)screenHeight);
        lp.height = screenHeight;
    }
    surfaceViewFrame.setLayoutParams(LP);

    如果(!player.isPlaying()){
        player.start();
    }

        }
    });
 

我修改这从一个教程视频流,我跟着前一段时间,找不到它现在引用它,如果有人不请链接添加到答案!

希望它能帮助!

修改

好了,所以,如果你想要的视频占据整个屏幕,你不希望它伸展你将结束与黑色条纹的两侧。在code我发布我们发现了什么越大,视频或手机屏幕,配合它的最佳方式,我们可以。

有你有我的完整活动中,链接的流媒体视频。这是100%的功能。我不能告诉你如何从自己的设备上播放的视频,因为我不知道。我敢肯定,你会发现它在文档这里或