IJKPlayer 遇到的诡异问题
Posted 顾明伟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IJKPlayer 遇到的诡异问题相关的知识,希望对你有一定的参考价值。
今天重新封装播放器界面的时候发现了一个诡异的问题。
覆盖在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 暂时算解决这个问题了。但是结论还有待研究,问题有点诡异。
以上是关于IJKPlayer 遇到的诡异问题的主要内容,如果未能解决你的问题,请参考以下文章
处理Activity#onResume()遇到java.lang.IllegalArgumentException诡异异常
处理Activity#onResume()遇到java.lang.IllegalArgumentException诡异异常