Intereting Posts

Как я могу просматривать видео в видеообъявлениях в определенной позиции?

В настоящее время я пытаюсь реализовать видеообзор, в котором будет показано видео на определенной позиции. Я могу показать полноэкранное видео без проблем. Однако всякий раз, когда я пытаюсь показать это видео внутри фрейма (например, немного прямоугольника), я могу показать только часть видео в этом представлении. Я не мог поместить видео в эту точку зрения.

Я уже ищу множество ссылок о масштабировании видео в Android, однако я не смог найти способ сделать это. Любая помощь по этой проблеме будет полезна.

Что я использую, у меня есть 2 разных класса. Один из них – мой класс видеопроцесса, а другой – вспомогательный класс:

public class VideoViewCustom extends VideoView { private int mForceHeight = 0; private int mForceWidth = 0; public VideoViewCustom(Context context) { super(context); } public VideoViewCustom(Context context, AttributeSet attrs) { this(context, attrs, 0); } public VideoViewCustom(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public void setDimensions(int w, int h) { this.mForceHeight = h; this.mForceWidth = w; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); setMeasuredDimension(mForceWidth, mForceHeight); } } 

Этот класс помогает мне правильно установить размеры видеоизображения, однако я не смог сделать видеоизображение в этом регионе. Я имею в виду, что я не мог масштабировать видео, чтобы вписаться в этот регион. Я не знаю, является ли андроид автомасштабированием в заданные размеры, но я не мог этого сделать.

Solutions Collecting From Web of "Как я могу просматривать видео в видеообъявлениях в определенной позиции?"

Пусть это поможет вам …

 public void onMeasure(int width, int height) { getHolder().setFixedSize(width, height); forceLayout(); setMeasuredDimension(width, height); invalidate(); } 

… и попробуйте RelativeLayout

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <VideoView android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_alignParentLeft="true"/> </RelativeLayout> 

Я думаю, вам нужно создать ViewGroup, где вы можете реализовать метод onLayout ().

Здесь вы можете установить положение своих представлений напрямую, вызывая метод layout () для каждого из них.

Пример:

 ViewGroup vg = new ViewGroup(this) { @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { int x = getMeasuredWidth(); int y = getMeasuredHeight(); for (int i = 0; i < vg.getChildCount(); i++) { if(vg.getChildAt(i) instanceof TextView){ vg.getChildAt(i).layout(...);//and so on... } } } }; 

Надеюсь, поможет!