2013-03-18 119 views
4

我有一个片段,允许用户从混合列表中选择视频和图像内容。选择多媒体项目时,根据媒体类型的不同,显示会在ImageViewVideoView之间切换。问题是,当用户选择一个视频时,只播放音频,并且VideoView保持黑色。Android:片段内的VideoView只播放音频,不显示视频

这是用来显示视频的码:(多数在底部的代码是试错,看是否缺少东西来解决这个问题)

mainVideo.setVisibility(View.VISIBLE); 
mainImage.setVisibility(View.INVISIBLE); 
getActivity().getWindow().setFormat(PixelFormat.TRANSLUCENT); 
parent.showLoader(R.string.buffering); 

mainVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
    @Override 
    public void onPrepared(MediaPlayer mp) { 
     parent.hideLoader(); 
     mainVideo.requestFocus(); 
     mainVideo.start(); 
    } 
}); 
mainVideo.setOnErrorListener(new MediaPlayer.OnErrorListener() { 
    @Override 
    public boolean onError(MediaPlayer mp, int what, int extra) { 
     showErrorMessage(R.string.multimedia_load_failed, R.string.please_try_again_later); 
     parent.hideLoader(); 
     return true; 
    } 
}); 
Uri video = Uri.parse(mm.url); 
mainVideo.setMediaController(new MediaController(parent)); 
mainVideo.setKeepScreenOn(true); 
mainVideo.bringToFront(); 
mainVideo.setDrawingCacheEnabled(true); 
mainVideo.setActivated(true); 
mainVideo.setEnabled(true); 
mainVideo.setVideoURI(video); 

Log.i(TAG, "Loading video: " + video.toString()); 

parent是一个参考。拥有像showLoader和诸如此类的一些便利的功能活性)

这里是我的布局:

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <FrameLayout 
      android:layout_width="275dp" 
      android:layout_height="275dp" 
      android:layout_gravity="center_horizontal" 
      android:padding="1dp" 
      android:background="@color/light_grey"> 
      <ImageView 
       android:id="@+id/mm_main_image" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:background="@color/black" 
       android:scaleType="fitXY"/> 
      <RelativeLayout 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 
       <VideoView 
        android:id="@+id/mm_main_video" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_alignParentTop="true" 
        android:layout_alignParentBottom="true" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentRight="true"> 
       </VideoView> 
      </RelativeLayout> 
     </FrameLayout> 

     <TextView 
      android:id="@+id/mm_index_count" 
      android:layout_width="wrap_content" 
      android:layout_height="20dp" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:layout_margin="@dimen/large_padding" 
      android:layout_gravity="center_horizontal" 
      android:textColor="@color/white"/> 

     <HorizontalScrollView 
      android:id="@+id/mm_horizontal_scroll" 
      android:layout_height="110dp" 
      android:layout_width="wrap_content"> 
      <LinearLayout 
       android:id="@+id/mm_media_list" 
       android:layout_height="match_parent" 
       android:layout_width="wrap_content"> 
       <!-- Content filled dynamically --> 
      </LinearLayout> 
     </HorizontalScrollView> 
    </LinearLayout> 
</ScrollView> 

我期待所有通过StackOverflow和最近两天的网络,但无法在任何地方找到解决此问题的解决方案。任何帮助表示赞赏。

所有的视频(和图像)是遥远的,他们不在Android设备上。

+0

这似乎几乎相同http://stackoverflow.com/questions/13864118/android-videoview-control-is-not-displaying-video-only-audio-is-played但唉,没有好的答案那里 – 2013-09-04 15:06:13

回答

5

尝试删除在XML中定义的任何背景颜色。它可能覆盖视频视图。

+0

这解决了我的问题。多么奇怪的“功能”。“谢谢。 – Gi0rgi0s 2015-11-29 21:53:45

+0

显然有些“混淆背景”的意思。 *叹* – 2017-02-10 17:46:38

相关问题