我正在尝试动态设置 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(以及新尺寸)重绘整个视频视图.

android – 调整视频大小的更多相关文章

  1. ios – Objective-C:在应用程序上播放Youtube视频

    我正在尝试探索在iOS应用程序开发中我还能做些什么,而现在我试图在我的应用程序中添加一个视频.我有下面的代码,旨在播放YouTube视频加载视频,但我得到的只是一个黑色的webView.解决方法你必须使用嵌入链接使用下面的代码代替尝试这个你的问题会解决

  2. android – 调整视频大小

    我正在尝试动态设置AndroidVideoView的大小.我看过StackOverflow以及互联网;我找到的最佳解决方案是从here开始.我已经将我的实现放在下面:视频在Android模拟器和MotorolaDroidX上正确调整大小;但在摩托罗拉Droid上,VideoView会调整大小,但VideoView中播放的视频不会调整大小.在摩托罗拉Droid上,如果VideoView设置为比视频播放更大的尺寸,VideoView中会出现黑色背景,视频在VideoView的左上角播放在黑色背景的顶部.如何在

  3. 带有scrollview的android自定义对话框将按钮从屏幕上移开

    我有一个自定义对话框,其布局如下:我的问题是滚动视图是当滚动视图中的文本太多时,下面的按钮会从对话框中向下推.我已经能够通过使用android:layout_alignParentBottom=“true”将包含按钮的RelativeLayout锚定到底部来阻止它,但是当滚动视图中的文本较少时,我将整个对话框拉伸到屏幕底部我不希望这样.我怎样才能得到这样的布局:解决方法尝试使用LinearLayo

  4. android多个videoView问题,Galaxy Tab具体

    提前致谢.junmats.解决方法这似乎取决于内核版本,因此在某些设备上可能不支持…id=17802您可能需要等待更新.

  5. android – 约束布局而不是相对布局

    在新的AndroidStudio2.2中引入了ConstraintLayout,我搜索并阅读了这个新的布局here和here.在thislink我读过有关Constraint和Relative布局之间的差异,但仍然有一些问题依旧:>我们可以完全用ConstraintLayout替换RelativeLayout,如here所述吗?>为了使用ConstraintLayout设计应用程序,我们必须更新到AndroidStudio2.2?解决方法>ConstraintLayout完成了RelativeLayout

  6. android – 在ScrollView中动态地向RelativeLayout添加视图

    我试图将动态创建的几个RelativeLayouts添加到LinearLayout中,该LinearLayout位于RelativeLayout内部,位于ScrollView内部.当所有视图的总高度超过手机屏幕的大小时,所有视图都会正确显示.但是,当动态添加的视图的总大小不足以填充屏幕时,仅显示第一个RelativeLayout元素,而其他元素不显示在屏幕中.我真的很无望,也不明白为什么.以下是在

  7. 如何在android 2.2中的一个活动中运行具有不同VideoView的多个视频?

    我正在使用3个视频对3差异.一个活动中的视频.现在如果我在android2.3.3模拟器中运行该程序然后它运行完美但它只能在Android2.2模拟器或设备中运行1个视频…..所以每个视频如何在Android2.2中运行???

  8. Android ShowCaseView的buttonLayoutParams不起作用

    我在我的应用程序中使用ShowCaseView库.我想将“确定”按钮移到左侧.我使用了这段代码:但它不起作用?任何人都可以告诉问题在哪里?解决方法我知道这个问题已经过时了,但万一有人需要一个有效的解决方案:这对我有用,希望它对某人有所帮助.

  9. Android将图像放在RelativeLayout的顶部和中心

    我正在尝试将图像与我的相对布局的顶部对齐,然后将其水平对齐.这是我正在使用的代码:,但此代码无效.我的图像居中,但未在我的相对布局顶部对齐.我尝试使用android:scaleType=“fitStart”,但它实际上是将图像左侧和顶部对齐的父级.所以任何想法如何我可以正确对齐图像?

  10. 在android问题中的scrollview内的Scrollview

    我在scrollview中有一个scrollview.xml是这样的在第二个滚动视图中不能平滑滚动.可以为此提供解决方案.我在互联网上尝试了很多解决方案,但没有工作.解决方法试试这个代码.它对我有用

随机推荐

  1. bluetooth-lowenergy – Altbeacon库无法在Android 5.0上运行

    昨天我在Nexus4上获得了Android5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.即使RadiusNetworks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.我注意到的一点是,现在在logcat中出现以下行“B

  2. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  3. android – 是否有可能通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

    是否可以通过使用与最初使用的证书不同的证书进行签名来发布Android应用程序的更新?我知道当我们尝试将这样的构建上传到市场时,它通常会给出错误消息.但有没有任何出路,比如将其标记为主要版本,指定市场中的某个地方?解决方法不,你不能这样做.证书是一种工具,可确保您是首次上传应用程序的人.所以总是备份密钥库!

  4. 如何检测Android中是否存在麦克风?

    ..所以我想在让用户访问语音输入功能之前检测麦克风是否存在.如何检测设备上是否有麦克风.谢谢.解决方法AndroidAPI参考:hasSystemFeature

  5. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

  6. android – 获得一首歌的流派

    我如何阅读与歌曲相关的流派?我可以读这首歌,但是如何抓住这首歌的流派,它存放在哪里?解决方法检查此代码:

  7. android – 使用textShadow折叠工具栏

    我有一个折叠工具栏的问题,在展开状态我想在文本下面有一个模糊的阴影,我使用这段代码:用:我可以更改textColor,它可以工作,但阴影不起作用.我为阴影尝试了很多不同的值.是否可以为折叠文本投射阴影?

  8. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  9. android – 为NumberPicker捕获键盘’Done’

    我有一个AlertDialog只有一些文本,一个NumberPicker,一个OK和一个取消.(我知道,这个对话框还没有做它应该保留暂停和恢复状态的事情.)我想在软键盘或其他IME上执行“完成”操作来关闭对话框,就像按下了“OK”一样,因为只有一个小部件可以编辑.看起来处理IME“Done”的最佳方法通常是在TextView上使用setonEditorActionListener.但我没有任何Te

  10. android – 想要在调用WebChromeClient#onCreateWindow时知道目标URL

    当我点击一个带有target=“_blank”属性的超链接时,会调用WebChromeClient#onCreateWindow,但我找不到新的窗口将打开的新方法?主页url是我唯一能知道的东西?我想根据目标网址更改应用行为.任何帮助表示赞赏,谢谢!

返回
顶部