SmartRefreshLayout包裹RecyclerView出现背景变黑,原因是我在AndroidManifest.xml设置了
<application
android:hardwareAccelerated="false"/> //false关闭硬件加速 true打开硬件加速
这时我们将这个属性设置为true即可
application里面android:hardwareAccelerated属性设置false导致全局硬件加速关闭,网上搜索资料发现可以在Application、Activity、Window、View分别设置android:hardwareAccelerated属性
控制硬加速
你可以在以下级别上分别控制硬加速:
Application中设置全局关闭硬件加速
<application android:hardwareAccelerated="false">
</application>
指定Activity中设置关闭硬件加速
<application android:hardwareAccelerated="true">
<activity android:hardwareAccelerated="false" />
</application>
Window(暂时用不得,感兴趣的朋友可以自行百度)
View中使用
禁止某个View的硬件加速,注:当前不能在view级别设置硬件加速,view层有除禁止硬件加速之外的其它功能
view.setLayerType(View.LAYER_TYPE_SOFTWARE,null);
判段一个View是否能被硬加速,有时一个应用了解是否启用了硬件加速是很有用的,对那些自定义View之类的东西尤其重要.在你的应用做了一些不被最新的管线所支持的自定义绘制时这更加重要.
有两种方法可以检查应用是否被硬件加速:
view.isHardwareAccelerated():如果View附加到一个硬件加速的window上就返回true.
canvas.isHardwareAccelerated():如果Canvas被硬件加速了就返回true.
如果你必须在你的绘制代码中做这个,应使用Canvas.isHardwareAccelerated()而不是View.isHardwareAccelerated().当一个view附加到一个硬件硬加速的window上,它仍可以使用非硬件加速的Canvas进行绘制操作.比如当为了高速缓存而把一个view画到一个bitmap中.