今天碰到一个奇葩的问题,我用surfaceview显示外接摄像头的视频,前几个版本没问题,这个版本一充电就会出现花屏现象,后来追踪问题,发现是我引用其他同事的activity基类,他在基类库中做了电量充电的动画,这个版本后他优化了电量充电动画,速度变快了,导致硬件加速负荷过大,surfaceview跟着刷新出现问题。
解决方法一:去掉头部调用的基类,视频播放恢复正常
解决方法二:在manifest中加入
android:hardwareAccelerated="false"
这是关闭硬件加速的接口,但是会导致一个窗口视频白屏,退出时才闪现
来源未知,只对特定机型出现问题。如果你也遇到了,可以考虑是不是硬件加速(Hardware Acceleration)的错
从Android3.0 (API level 11)开始,Android的2D显示管道被被设计得更加支持硬加速了.硬加速使用GPU承担了所有在View的canvas上执行的绘制操作。
硬件加速是个好东西,可以让ListView、WebView滑动的更流畅,但是也总是会出现莫名其妙的的问题。
问题1:EditText中文字的重叠
这是我之前一个博客中解决过的问题,详见:
在某些4.x的机器中,如果打开了硬件加速,EditText会出现奇怪的文字重叠的情况。
解决的方法:对EditText关闭硬件加速即可。
问题2:图片无法显示
Bitmap too large to be uploaded into a texture (587x7696, max=2048x2048)
这时我们就需要把硬件加速关闭了。
但开始我是这样处理的,我关闭了整个应用的硬件加速:
1. <application
2. android:allowBackup="true"
3. android:icon="@drawable/ic_launcher"
4. android:hardwareAccelerated="false"
5. android:label="@string/app_name"
6. android:theme="@style/AppTheme" >
随后我就发现,虽然图片可以显示了,但是ListView和WebView等控件显得特别的卡,这说明硬件加速对于程序的性能提升是很明显的。所以我就改为对于Activity的关闭
1. <activity
2. android:name="icyfox.webviewimagezoomertest.MainActivity"
3. android:label="@string/app_name"
4. android:hardwareAccelerated="false"
这样问题得到了较好的解决,实际上,我们还可以对每个控件是否加速进行控制。