gpt4 book ai didi

android - 调整视频 View 大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:58:45 25 4
gpt4 key购买 nike

我正在尝试动态设置 Android VideoView 的大小。我查看了 StackOverflow 和互联网;我找到的最佳解决方案来自 here .我将我的实现放在下面:

public class ResizableVideoView extends VideoView {

public ResizableVideoView(Context c) {
super(c);
}

private int mVideoWidth = 100;
private int mVideoHeight = 100;

public void changeVideoSize(int width, int height) {
mVideoWidth = width;
mVideoHeight = height;

// not sure whether it is useful or not but safe to do so
getHolder().setFixedSize(width, height);

forceLayout();
invalidate(); // very important, so that onMeasure will be triggered
}

public void onMeasure(int specwidth, int specheight) {
Log.i("onMeasure","On Measure has been called");
setMeasuredDimension(mVideoWidth, mVideoHeight);
}

public void onDraw(Canvas c) {
super.onDraw(c);
Log.i("onDraw","Drawing...");
}
}

视频在 Android 模拟器和摩托罗拉 Droid X 上都能正确调整大小;但在摩托罗拉 Droid 上,VideoView 会调整大小,但 VideoView 中播放的视频不会调整大小。在摩托罗拉 Droid 上,如果将 VideoView 设置为比正在播放的视频更大的尺寸,则 VideoView 中会出现黑色背景,而在黑色背景之上的 VideoView 左上角播放的视频。

如何在 Android 中正确调整 VideoView 的大小?

谢谢,万斯

最佳答案

我的实现是这样的:

RelativeLayout.LayoutParams videoviewlp = new RelativeLayout.LayoutParams(newwidth, newheight);
videoviewlp.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
videoviewlp.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
videoview.setLayoutParams(videoviewlp);
videoview.invalidate();

通过使 videoview 无效,您将强制它使用新的 LayoutParams(和新的尺寸)重绘整个 videoview。

关于android - 调整视频 View 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11040217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com