IJKPlayer 遇到的诡异问题

在重构播放器界面时遇到一个奇怪问题,覆盖在IJKPlayer上的View消失。即使确认已添加到ContentView,但在横屏到竖屏切换时View不可见。移除IJKPlayer后,View重新出现,表明问题与IJKPlayer有关。经过尝试,发现可能是因为布局背景颜色影响了View的显示。将播放器和InfoView放在不同布局中并调整颜色后,问题得到暂时解决,但原因仍需进一步研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        今天重新封装播放器界面的时候发现了一个诡异的问题。

        覆盖在ijkplayer上层的View莫名其妙消失了,View确定已经被addView 到了ContentView中,但是视图里就是看不到,debug也确定了被add的View已经有了Parent,add两次的时候会抛异常。那跟ijkplayer又有什么关系呢?当我把ijkplayer remove掉之后,看不到的View又重新出现了。也就是直接证明了确实确实跟ijkplayer有关系。看看效果先:


图中的播放器上面盖了一层View用来显示主播的信息,手指滑动时跟着滑动,有开启和关闭两种状态,旋转屏幕时替换了不同的布局。

我当时是这样初始化的:

contentView.addView(ijkplayer);//播放器
contentView.addView(infoview);//浮层
横竖屏都可以正常切换,滑动。

当我在横屏状态把浮层滑出屏幕之后,切换回竖屏幕,浮层对象处于正常添加状态,滑动的时候TranX的值也在正常变化,但是在视图里看不到,这就很奇怪了,View明明添加了为啥看不到腻。我第一个想到的是是不是顺序有问题,被播放器挡住了。然后在切换屏幕时候调用了

infoview.bringToFront();//把view放到容器的最上层

然后发现并没什么卵用。打开开发者模式绘制View边界,发现边界都没有。

陷入沉思........

不知道啥原因就乱试一试,果然这一试就试出结果了。

修改了Activity的根布局,我用两个View分别加载VideoView和InfoView,这样你俩没什么直接的联系了应该就不会出问题了,为了方便观察,我给两个布局设置了不同的颜色。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/live_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/video_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#434343"></RelativeLayout>

    <RelativeLayout
        android:id="@+id/info_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#808080"></RelativeLayout>

</RelativeLayout>

这样把播放器和浮层添加到不同的Layout中

videoLayout.addView(VideoView);
infoLayout.addView(infoView);

然后加载了View,调试,果然,真的没啥问题,切换横竖屏View都可以正常显示。介个时候,我想,既然没什么问题了我就把颜色给去掉吧,去掉颜色之后发现,卧槽,刚不是已经好了么,View怎么又消失了,脑子里各种脑补,可能手机坏了,可能刚才出现幻觉了,可能Studi编译出bug了,可能是ijkplayer的大bug等等。

冷静了10秒钟,得我再把颜色加上,再看。发现又变正常了。

2333333.。。。。。。。

这是什么鬼问题。view 的background居然可以影响view的加载或者是显示问题,然后把两个颜色改成了#00000000 暂时算解决这个问题了。但是结论还有待研究,问题有点诡异。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值