前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实习杂记(28):SurfaceView+ListView+MediaPlayer滑动时候灰色覆盖等问题

实习杂记(28):SurfaceView+ListView+MediaPlayer滑动时候灰色覆盖等问题

作者头像
wust小吴
发布2019-07-08 18:28:07
1.2K0
发布2019-07-08 18:28:07
举报
文章被收录于专栏:风吹杨柳风吹杨柳

1.灰色覆盖,或者有一层颜色在上面

这个问题应该是   你给listView加了风格,或者给当前的Window加了风格,因为surfaceView,如果你不设置,应该也有一个默认的颜色值

在listView滑动的时候,每个item应该是都会被重绘的,至少layout事件会走的,导致了surface上面有一层颜色,这个是第一个问题,

2.ListView里面出现视频画面残留

这个问题很尴尬,也是在listView在滑动的时候,但是视频又在播放,而且如果你有切换横竖屏的话,这个问题将变得尤为严重,

具体的原因应该是这样的:本来surfaceView是在item上的,item是一个view,这个播放视频的时候,是由MediaPlayer去把视频的画面setDisplay到surfaceHolder上的,

如果播放视频的是你发生了横竖切换,导致surfaceView的大小发生了变化,MediaPlayer重新去渲染视频图片,再回来,可能就会留有残影,

然后是如果不发生横竖屏切换,也会有残影留下来,是为什么,我想了下原因:

是因为surfaceView他有个特点,当你从window上拿到一个区域的时候,这个区域有些限制,

最显著的特点就是:window给你的区域,你不能滑动,不能平移,不能放大缩小,等等,

因为你申请的surfaceView就只有那么大,不能像平常普通的view一样随便的改变大小,位置,透明度,等等,

那么你在listView滑动的时候,虽然item变了,但是item上的surfaceView没有跟着走,这就导致了,会有残影,这很尴尬,

PS:残影的问题,很麻烦,我还没有想到解决办法,最后的好办法,肯定是自己去绘制了,这个肯定是能够解决的,

然后第二种选择是   :使用TextureView,  用起来跟SurfaceView一样,只是要注意需要开启硬件加速,第二个是必须线程调用播放,

3.透明的问题:  背景有其他的activity界面,

理论上当前的窗口(window)上给一个视图区给你用,然后你再surfview上面绘制的东西会在最上层,

这个时候如果你的surfaceView是以dialog上,或者是PopWindow等形式在当前的activity上显示出来的,没有重新重建activity的话,

你的surfaceView后面会有很多东西,这是第一个,所以建议使用surfaceView的时候最好是在新的activity里面使用

这个透明问题,设置stlye是可以解决的,

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年07月06日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档