Cts问题之android.view.cts.SurfaceViewSyncTests(测试案例:CtsViewTestCases)

  不积跬步无以至千里

  这个CTS的bug说实话耽误了很长时间,并且最后的这个解决方式也是巧妙避过。(这个项目的手机屏幕宽度为:320,是比较小的手机)

出现问题的bug为:

1、CtsViewTestCases_android.view.cts.SurfaceViewSyncTests#testSurfaceViewSmallScale

2、CtsViewTestCases_android.view.cts.SurfaceViewSyncTests#testVideoSurfaceViewCornerCoverage

3、 CtsViewTestCases_android.view.cts.SurfaceViewSyncTests#testVideoSurfaceViewEdgeCoverage

下面都是以1来做分析,这三个bug其实是同一个地方出现了问题,所以解决一个,都可解决。

下面是1测试中不正常的现象的截图


下面是CTS测试失败的log:


先说解决方式吧,如果你们急着解决就直接去尝试了,这里的解决方式是

  通过修改android/frameworks/base/core/res/res/values/themes_holo.xml,其中CTS中的测试surfaceview对应的Activity的主题是Theme.Holo.NoActionBar.Fullscreen,向其中添加设置window的状态,是否透明,如果透明则直接显示下一层的视图,如果不透明则显示window的背色,属性为:<item name="android:windowIsTranslucent">true</item>,这是正常逻辑,但是我这里显示出了一层黑色背景,这是不正常的现象。

测试的逻辑为:

通过跳转到测试界面,测试界面为申请一块布局(FrameLayout),然后把Surfaceview加到布局上,然后在Surfaceview中通过画笔在画布上画一个从左上角向右下方向画的矩形,然后实现缩放,然后通过RenderScript来进行图像分析,然后通过Collections对其中每一帧进行处理分析结果,来看每一帧的成功与失败。

其实发现了其中可疑的点

      当创建SurfaceView的宽度小于屏幕的宽度时,不会出现黑色背景。(别的手机是当surfaceview的宽度等于或大于屏幕的真正的宽度时候会不再演示动画),而我的这个手机还是会继续的演示动画,但是是黑色的背景。(这是感觉问题的关键点),找到这个逻辑问题的差错就会解决问题。

上边的解法的纰漏

      就是同样另一个界面用到Surfaceview用到这个主题Theme.Holo.NoActionBar.Fullscreen会出现演示并出现下层的视图。无法给Surfaceview显示window的颜色。




  

  

猜你喜欢

转载自blog.csdn.net/wdyshowtime/article/details/79400949