Как я могу просматривать видео в видеообъявлениях в определенной позиции?
В настоящее время я пытаюсь реализовать видеообзор, который покажет видео в определенной позиции. Я могу показать полноэкранное видео без проблем. Однако всякий раз, когда я пытаюсь показать это видео внутри фрейма (например, немного прямоугольника), я могу показать только часть видео в этом представлении. Я не мог поместить видео в эту точку зрения.
Я уже ищу множество ссылок о масштабировании видео в 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);
}
}
Этот класс поможет мне правильно установить размеры видеоизображения, однако я не смог сделать видео в этом регионе. Я имею в виду, что я не мог масштабировать видео, чтобы вписаться в этот регион. Я не знаю, является ли андроид автомасштабированием в заданные размеры, но я не мог этого сделать.
Ответы
Ответ 1
Пусть это поможет вам...
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>
Ответ 2
Я думаю, вам нужно создать 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...
}
}
}
};
Надеемся на помощь!!