我正在尝试动态设置
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模拟器和Motorola 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();
通过使视频视图无效,您将强制它使用新的LayoutParams(以及新尺寸)重绘整个视频视图.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。