相关疑难解决方法(0)

VideoView匹配父高度并保持纵横比

我有一个像这样设置的VideoView:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:id="@+id/player" 
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

    <VideoView
        android:id="@+id/video"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:layout_centerVertical="true" />

    <ProgressBar
        android:id="@+id/loader"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

但VideoView匹配父容器的宽度,然后根据加载的影片的宽高比设置高度.
我想做的恰恰相反,我希望VideoView与父级的高度相匹配,同时保持宽高比不变,视频将被剪裁在两侧.

我设法拉伸VideoView来填充父级,但是不保持宽高比.

另一件事是,我将MediaController添加到VideoView,如下所示:

MediaController controllers = new MediaController(this) {
    @Override
    public void hide() {
        if (state != State.Hidden) {
            this.show();
        }
        else {
            super.hide();
        }
    }
};
controllers.setAnchorView(videoView);
videoView.setMediaController(controllers);

videoView.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mediaPlayer) {
        controllers.show();
    }
});
Run Code Online (Sandbox Code Playgroud)

这很好用,并且控制器始终保持打开状态,但在计算放置视频的位置时(因为它垂直居中),控制器的高度不会被考虑在内.

我的两个问题是:

  1. 如何使VideoView与父级的高度匹配,同时保持宽高比?
  2. 如何让VideoView考虑到它的控制器的高度?

谢谢.

android aspect-ratio dimensions android-videoview

28
推荐指数
6
解决办法
4万
查看次数

旋转手机重启Android上的视频

嘿,伙计们,当我旋转手机时,我的活动重新启动.我有视频播放视频,我旋转,视频重新启动.现在我发现将此添加到我在清单中的活动中修复了它

<activity android:name="Vforum" android:configChanges="orientation"></activity>
Run Code Online (Sandbox Code Playgroud)

现在的问题是视频控件在它们消失并返回之前不会被重绘,从而使得从横向到纵向模式的真正长控制或者从纵向到横向的真正短控制.一旦它们消失然后我点击使它们回来,然后它们的尺寸正确.有没有更好的方法呢?

video controls android android-videoview

9
推荐指数
1
解决办法
9437
查看次数

更改屏幕方向时,视频不会同时播放

我非常喜欢这个网站因为我能找到许多有用的解决方案对我非常有帮助,特别是我是android编程的初学者,这是我的第一个问题所以我希望能从这个伟大的社区找到帮助.

问题:我在我的应用程序中播放视频,并在用户定位屏幕时以横向全屏播放,因此我想通过使用seekTo()和getCurrentPosition()从同一点播放视频 - 但视频播放的问题在位置后的许多秒我的意思是视频寻找到相同的时间点,但是当开始播放时它增加了许多秒.

我的代码:

    //initialise everything  
protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        v = (VideoView) findViewById(R.id.videoView1);
                v.setVideoPath(dir + videoName + ".3gp");
                v.setMediaController(new MediaController(this));
                if (savedInstanceState == null){
                    v.start();  
                }
                else {
                    playingTime = savedInstanceState.getInt("restartTime", 0);
                    v.seekTo(playingTime);
                }
       }

@Override
protected void onSaveInstanceState(Bundle outState) {
    // TODO Auto-generated method stub
    super.onSaveInstanceState(outState);
    if (file.exists()){
        playingTime = v.getCurrentPosition();
        v.stopPlayback();
        outState.putInt("restartTime", playingTime);
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了很多解决方案,比如这个 如何在转换到横向模式android时继续播放视频

我正在使用Galaxy Nexus测试我的应用程序..我会感激任何提示.抱歉我的英语不好,非常感谢.

android landscape android-videoview

3
推荐指数
1
解决办法
1289
查看次数