Android 设置BitmapDrawable tileMode将使应用程序重新启动
虽然我的应用程序在大多数设备上运行良好,但在一些设备(LG G3、三星Galaxy S6)上,我遇到了一个奇怪的错误,我无法真正展开: 将Android 设置BitmapDrawable tileMode将使应用程序重新启动,android,android-drawable,android-bitmap,bitmapdrawable,Android,Android Drawable,Android Bitmap,Bitmapdrawable,虽然我的应用程序在大多数设备上运行良好,但在一些设备(LG G3、三星Galaxy S6)上,我遇到了一个奇怪的错误,我无法真正展开: 将tileMode(通过XML或编程方式)设置为bitmapprawable上的任何内容(climp/repeat/mirror),即布局的背面,会使背景完全变黑,并且应用程序在大约20秒后重新启动,没有任何出错的迹象(LogCat中没有消息,我的活动的这些回调都没有被调用:onPause(),onStop(),onDestroy()) 由于这些冻结/崩溃之间存
tileMode
(通过XML或编程方式)设置为bitmapprawable
上的任何内容(climp
/repeat
/mirror
),即布局的背面,会使背景完全变黑,并且应用程序在大约20秒后重新启动,没有任何出错的迹象(LogCat中没有消息,我的活动的这些回调都没有被调用:onPause()
,onStop()
,onDestroy()
)
由于这些冻结/崩溃之间存在一些不一致性,这取决于所使用的位图,因此我开始使用.png
图像,并发现,如果减小这些图像的大小,我可以消除(大部分)这些崩溃(虽然线程与我遇到的问题不完全相同,但它意外地帮助了我。将相关布局的layerType
设置为软件
类似
- android:layerType=“software”
,或
view.setLayerType(view.LAYER\u TYPE\u软件,空);
使黑色背景和应用程序重新启动消失
结果还表明,缩小背景图像并不能解决问题,只会减少背景图像的出现频率
不管怎样,谢谢你的帮助!还有那些更大的PNG(>200x200)如果不使用tileMode会发生什么情况?那么一切都很好,只是图像被拉伸到布局的大小。使用android:gravity
我没有提到,但是我使用重复的图像,所以我会用一个较小的图像覆盖整个背景,在两个方向上重复,而不改变布局的大小外出。我认为android:gravity
不适用于此。因此我确实需要设置tileMode
。因此,如果stdBitmapDrawable
不适用于您,请使用自定义ShapeDrawable.ShaderFactory来测试ShapeDrawable
,我现在非常爱您。过去的5天,每天4个多小时,试图诊断和解决这个问题。我正要永远退出android开发(不是开玩笑)。当我读到你的OP时,我的胸部简直兴奋得爆炸了——这与我遇到的问题完全一样,而且android:layerType=“software”
据我所知,已经完全解决了这个问题……我只是想让你知道这对我有多大帮助。我完全知道你在说什么!:D在解决这个问题上付出了同样的努力,几乎也放弃了;)