Красным это видео. Черным это размер экрана телефона. Я использую SurfaceView.
Как мне подогнать видео под размер экрана. орентировываясь по ширине Экрана телефона. Сохраняю пропорции.
В ImageView все просто. Добавил картинку и она сама с сохранением пропорций отображается.
Для видео лучше брать специальную вюху. Посмотрите сюда VideoView
Если вы хотите использовать именно SurfaceView, то стоит сделать так:
Например у нас есть такая разметка:
<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>
Подключаем необходимые нам элементы:
surfaceViewFrame = (SurfaceView) findViewById(R.id.surfaceViewFrame);
player = new MediaPlayer();
player.setDisplay(holder);
А теперь немного расчетов добавим в ваш 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();
}
}
});
Продвижение своими сайтами как стратегия роста и независимости