2016-07-07 54 views
1

我在窗体上显示视频,但视频始终伸展到正方形。我无法控制任何视频组件来获取它的真实尺寸。这是显示视频的代码:如何在codenameOne中显示正确尺寸的视频?

imageVideoContainer = new Container(new BorderLayout(BorderLayout.CENTER_BEHAVIOR_SCALE)) { 
     protected Dimension calcPreferredSize() { 
      return new Dimension(Display.getInstance().getDisplayWidth(), Display.getInstance().getDisplayWidth()); 
     } 
    }; 
    media = MediaManager.createMedia(FileSystemStorage.getInstance().getAppHomePath() + movePath, true); 
    mp = new MediaPlayer(media); 
    mp.setAutoplay(true); 
    imageVideoContainer.add(BorderLayout.CENTER, mp); 
    container = new Container(new BoxLayout(BoxLayout.Y_AXIS)); 
    container.add(BorderLayout.centerAbsolute(imageVideoContainer)); 

如果我不覆盖calcPreferredSize,它根本不显示。任何帮助赞赏。我试过调试,以查看媒体播放器,以获得有一个大小,但无法找到任何东西。

回答

0

的问题是,直到视频加载的尺寸是不存在的。所以,当你把它添加到形式,它的首选大小为0。

你然后将其添加到中心绝对需要首选大小位置/大小的视频。解决方案可以是启动视频,然后致电revalidate()重新进行布局并正确定位视频。

+0

这将适用于风景视频,但不幸的是不肖像。 – Karry

+0

不需要。在您旋转强制重新安排层次结构的设备后,此功能会有效。所以你会开始在景观中使用肖像,然后当你旋转时它会再次工作。视频播放开始后,尝试在组件上调用setShouldCalcSize(true),然后重新验证()。 –