Как сжать видео под размер экрана.

298
25 июля 2017, 17:07

Красным это видео. Черным это размер экрана телефона. Я использую SurfaceView.

Как мне подогнать видео под размер экрана. орентировываясь по ширине Экрана телефона. Сохраняю пропорции.

В ImageView все просто. Добавил картинку и она сама с сохранением пропорций отображается.

Answer 1

Для видео лучше брать специальную вюху. Посмотрите сюда VideoView

Answer 2

Если вы хотите использовать именно SurfaceView, то стоит сделать так:

  1. Например у нас есть такая разметка:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     
              android:orientation="vertical" 
              android:layout_width="match_parent"
              android:layout_height="fill_parent">
    <SurfaceView
        android:id="@+id/surfaceViewFrame"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center" >
    </SurfaceView>
    

  2. Подключаем необходимые нам элементы:

    surfaceViewFrame = (SurfaceView) findViewById(R.id.surfaceViewFrame);
    player = new MediaPlayer();
    player.setDisplay(holder);
    
  3. А теперь немного расчетов добавим в ваш MediaPlayer в onPreparedListener и пересчитаем высоту и ширину видео фрагмента в соответствии с текущими размерами экрана, избежав растягивания.

    player.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared (MediaPlayer mp){
        int videoWidth = player.getVideoWidth();
        int videoHeight = player.getVideoHeight();
        float videoProportion = (float) videoWidth / (float) videoHeight;
        int screenWidth = getWindowManager().getDefaultDisplay().getWidth();
        int screenHeight = getWindowManager().getDefaultDisplay().getHeight();
        float screenProportion = (float) screenWidth / (float) screenHeight;
        android.view.ViewGroup.LayoutParams lp = surfaceViewFrame.getLayoutParams();
        if (videoProportion > screenProportion) {
            lp.width = screenWidth;
            lp.height = (int) ((float) screenWidth / videoProportion);
        } else {
            lp.width = (int) (videoProportion * (float) screenHeight);
            lp.height = screenHeight;
        }
        surfaceViewFrame.setLayoutParams(lp);
        if (!player.isPlaying()) {
            player.start();
        }
       }
    });
    
READ ALSO
Узнать последнюю дату прочтения файла

Узнать последнюю дату прочтения файла

Доброго времени сутокМожно ли узнать когда последний раз был прочитан определённый файл? Не создан, изменён, а именно прочитан

266
Совмещение больше одного цвета текста в одной Cell, TreeTableView

Совмещение больше одного цвета текста в одной Cell, TreeTableView

Есть желание использовать больше одного цвета текста одновременно на одну клетку Cell в компоненте TreeTableViewДля примера - название папки дефолтным...

259
Как сверстать список товаров с эффектом наведения? [требует правки]

Как сверстать список товаров с эффектом наведения? [требует правки]

Как сделать такую таблицу и чтобы при наведении был такой эффект?

256
Авто-размер фото

Авто-размер фото

У меня такой вопрос как сделать чтобы каждое фото в сайте адаптировалась с помощью блоков вот например как на скриншоте как бы например в инстаргаме...

396