4

我正在编写一个在 Android 4.0.3 上运行的应用程序,它通过 HDMI 使用视频输出进行显示。

我有一个在 VideoView 之上工作的有色透明 TextView,但是经过一系列看似无关的更改,我已经破坏了它并且无法让它再次工作。

我正在使用 SetBackgroundColor,即

myTextView.setBackgroundColor( Color.argb ( 128, 128, 0, 0 ) );

症状是 TextView 显示纯色背景颜色 (RGB 128,0,0) 并且没有透明度。如果我将 alpha 设置为 0 之间,背景将变得完全透明,但我仍然可以在 TextView 内的文本轮廓上辨认出 VideoView 后面的背景颜色。例如,当我将 alpha 设置为更高的值(例如 10)时,背景变为纯色,即上面的示例将变为 RGB(128,0,0)。

我已经摆弄了很多东西,例如setAlpha(float), setBackgroundColor(Color), 以不同的顺序动态创建视图, 在 XML 中创建和排序视图 , bringToFront(), getBackground().setAlpha( int ),android:background="@android:color/transparent"都没有进一步的成功。

我构建了另一个简单的应用程序,删除了所有内容以尝试弄清楚发生了什么,但没有成功。

XML 布局

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/frame"
   android:orientation="horizontal"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent" >
   <VideoView 
    android:id="@+id/videoScreen"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent" >
   </VideoView>  
   <TextView
       android:id="@+id/textScreen"
       android:layout_width="300sp"
       android:layout_height="fill_parent"
       android:background="#80800000"
       android:text="@string/hello_world" 
       android:lines="400" >    
    </TextView>
</FrameLayout>

简单的视频视图

final MediaController mediaController = new MediaController( getWindow().getContext() );
videoView = ( VideoView )findViewById( R.id.videoScreen );
mediaController.setAnchorView( videoView );
videoView.setMediaController( mediaController );        
videoView.setVideoPath( "/mnt/extsd/test-movie.mov" );
videoView.start();

如果我理解正确,这应该会在正在运行的 VideoView 上产生一个红色、半透明的 TextView,但我似乎无法让它工作。

如果我删除 VideoView 并放置一个带有图片的 ImageView,透明度和背景颜色着色确实有效。我怀疑 TextView over VideoView 有什么不寻常的地方。

有没有人有任何建议我可能做错了什么?还是要检查的东西?

我有什么明显的遗漏吗?

一个使用 Color 背景颜色的 TextView 的简短示例。如果有人有,将不胜感激 VideoView 上的argb ( 128, 128, 0, 0 )。

4

0 回答 0