2016-01-30 2 views
4

Я использую VideoView для потокового (с использованием Vitamio library)
проблема заключается в том, что в альбомной ориентации, не помещается на экране.
I want to make my application only in landscape.

enter image description here
VideoView не помещается на экране в альбомной (с использованием библиотеки Vitamio)

Вот что я пробовал:

MainActivity:

public class ActivityMain extends Activity { 

    private String path = "http://hw14.asset.aparat.com/aparat/video/1d7288ace5ce9cc812f6cf5b99d2b8b62642090-360p__87605.mp4"; 
    private VideoView mVideoView; 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     if (!LibsChecker.checkVitamioLibs(this)) 
      return; 
     setContentView(R.layout.videoview); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     mVideoView = (VideoView) findViewById(R.id.buffer); 
      mVideoView.setVideoPath(path); 
      mVideoView.setMediaController(new MediaController(this)); 
      mVideoView.requestFocus(); 

      mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
       @Override 
       public void onPrepared(MediaPlayer mediaPlayer) { 
        // optional need Vitamio 4.0 
        mediaPlayer.setPlaybackSpeed(1.0f); 
       } 
      }); 
    } 
} 

расположение:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:background="#FFFFFF" 
    android:gravity="center" 
    android:foregroundGravity="center"> 

    <io.vov.vitamio.widget.CenterLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:clickable="false"> 

     <io.vov.vitamio.widget.VideoView 
      android:id="@+id/buffer" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      android:layout_centerInParent="true" 
      android:clickable="false" /> 
    </io.vov.vitamio.widget.CenterLayout> 

</RelativeLayout> 

манифеста:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.test.app"> 

    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/MyTheme"> 
     <activity 
      android:name="io.vov.vitamio.activity.InitActivity" 
      android:configChanges="keyboard|keyboardHidden|navigation|orientation|screenSize|smallestScreenSize" 
      android:launchMode="singleTop" 
      android:theme="@android:style/Theme.NoTitleBar" 
      android:windowSoftInputMode="stateAlwaysHidden" /> 
     <activity android:name=".ActivityMain" 
      android:screenOrientation="landscape" android:configChanges="keyboardHidden|orientation" 
      > 

      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

Я хотел видео, чтобы заполнить весь экран, как приложение YouTube делает.
Благодарим вас за любую помощь, которую вы можете предоставить.

ответ

1

Pleasy попробовать добавив полноэкранные флаги прямо на WindowManager

@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    if (!LibsChecker.checkVitamioLibs(this)) 
     return; 
    setContentView(R.layout.videoview); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    this.getWindow().addFlags(
      WindowManager.LayoutParams.FLAG_FULLSCREEN 
        | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN);, 
    ... 

http://developer.android.com/reference/android/view/Window.html

Может быть, вы можете попробовать один из этих вариантов отображения:

mVideoView.setVideoLayout(VideoView.VIDEO_LAYOUT_ORIGIN, 0); 
mVideoView.setVideoLayout(VideoView.VIDEO_LAYOUT_SCALE, 0); 
mVideoView.setVideoLayout(VideoView.VIDEO_LAYOUT_STRETCH, 0); 
mVideoView.setVideoLayout(VideoView.VIDEO_LAYOUT_ZOOM, 0); 
mVideoView.setVideoLayout(VideoView.VIDEO_LAYOUT_FIT_PARENT, 0); 

Вторых пары означают соотношение сторон видео и будет автоопределение, если 0. см это: https://github.com/yixia/VitamioBundle/blob/master/vitamio/src/io/vov/vitamio/widget/VideoView.java

0

Самый простой вариант - получить RelativeLayout и вызвать setSystemUiVisibility на нем с View.SYSTEM_UI_FLAG_FULLSCREEN как флаг.

Дайте идентификатор (например, videoViewContainer) к RelativeLayout и добавить следующие строки:

setContentView(R.layout.videoview); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
RelativeLayout mVidContainer = (RelativeLayout) findViewById(R.id.videoViewContainer); 
    mVidContainer.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN); 

Для получения дополнительной информации обратитесь по этой ссылке: https://developer.android.com/training/system-ui/status.html

+0

Это не работает для меня. Спасибо в любом случае –

+0

Не работает? Пока отображается строка состояния? Что такое версия sdk для Android? –

+0

К сожалению, нет. Я не хочу скрывать строку состояния ...! Проблема в том, что VideoView не заполняет весь экран –

Смежные вопросы