基于父宽度的动态 VideoView 高度
Posted
技术标签:
【中文标题】基于父宽度的动态 VideoView 高度【英文标题】:Dynamic VideoView Height Based on Parent Width 【发布时间】:2013-02-14 03:21:54 【问题描述】:我正在尝试将 VideoView
的大小调整为父容器的宽度,然后设置高度以保持 4:3 的纵横比。我看到了一些建议扩展 VideoView
类并覆盖 onMeasure
的答案,但我不明白我得到的参数或如何使用它们:
package com.example;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.VideoView;
public class MyVideoView extends VideoView
public MyVideoView(Context context)
super(context);
public MyVideoView (Context context, AttributeSet attrs)
super(context, attrs);
public MyVideoView (Context context, AttributeSet attrs, int defStyle)
super(context, attrs, defStyle);
@Override
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
Log.i("MyVideoView", "MyVideoView", "@@@", "image too tall, correcting");
height = (width * mVideoHeight / mVideoWidth);
else if (mVideoWidth * height < width * mVideoHeight)
// Log.i("@@@", "image too wide, correcting");
width = (height * mVideoWidth / mVideoHeight);
else
// Log.i("@@@", "aspect ratio is correct: " +
// width+"/"+height+"="+
// mVideoWidth+"/"+mVideoHeight);
setMeasuredDimension(width, height);
其中 mVideoWidth 和 mVideoHeight 是视频的当前尺寸。 希望有帮助。 :)
【讨论】:
我真的没有视频的当前尺寸,因为播放器是在创建选项卡时创建的,然后用户单击列表项来播放视频。视频可以是 640x480 或 320x240。这似乎工作正常:int width = getDefaultSize(0, widthMeasureSpec); int height = getDefaultSize(0, heightMeasureSpec); setMeasuredDimension(width, width/4*3);
以上是关于基于父宽度的动态 VideoView 高度的主要内容,如果未能解决你的问题,请参考以下文章
是否可以使用 sass 函数在媒体查询中从父宽度动态获取子高度? [复制]