记录Android国际化图片资源的一个坑
2017-07-25 17:08
597 查看
首先,背景:我在做国际化的时候,很多App,内部是没有做手动语言切换功能的。而我们由于业务需求,APP内部增加了手动切换语言的功能。
Android国际化,一般在切换语言以后,都会杀死APP,重启应用,以保证获取资源。(注:我们又是由于业务原因,为了增强体验,切换语言不重启APP,如果没有这个需求的,请无视下面的BUG)。
具体的切换逻辑就不说了,只说碰到的bug。我切换完语言以后,发现有几张图片资源没有切换成对应的语言下资源。我仔细检查代码,以及所有的逻辑,以及资源文件,全部都是对的。并且只要杀死APP,重启也能正确的加载对应的图片资源。这就很奇怪了,然后我反复查找网上资料,以及尝试各种方法。发现,假如你的 App 存在某个 activity 和当前设置页 activity 不在一个 task 栈内的话(比如你从某个通知页用 FLAG_ACTIVITY_NEW_TASK
启动的一个 activity),就不会应用语言设置。就是说,如果我们的Activity设置过NEW_TASK,就可能无法加载对应的图片。不过也有可能是因为图片加载以后,bitmapDrawable的cache引起的。水平不足,没有看过源码,不好说。
经过我不断的努力尝试,提供一个比较笨的方法给大家借鉴参考。
我把没有正常切换的图片资源做成selector。然后真的成功了。
最后,写文章的目的
1.希望有大神可以给我说明一下原因。
2.如果有和我一样的,帮助你们先解决需求,再去研究原因。
3.有不对的地方请指正。
Android国际化,一般在切换语言以后,都会杀死APP,重启应用,以保证获取资源。(注:我们又是由于业务原因,为了增强体验,切换语言不重启APP,如果没有这个需求的,请无视下面的BUG)。
具体的切换逻辑就不说了,只说碰到的bug。我切换完语言以后,发现有几张图片资源没有切换成对应的语言下资源。我仔细检查代码,以及所有的逻辑,以及资源文件,全部都是对的。并且只要杀死APP,重启也能正确的加载对应的图片资源。这就很奇怪了,然后我反复查找网上资料,以及尝试各种方法。发现,假如你的 App 存在某个 activity 和当前设置页 activity 不在一个 task 栈内的话(比如你从某个通知页用 FLAG_ACTIVITY_NEW_TASK
启动的一个 activity),就不会应用语言设置。就是说,如果我们的Activity设置过NEW_TASK,就可能无法加载对应的图片。不过也有可能是因为图片加载以后,bitmapDrawable的cache引起的。水平不足,没有看过源码,不好说。
经过我不断的努力尝试,提供一个比较笨的方法给大家借鉴参考。
我把没有正常切换的图片资源做成selector。然后真的成功了。
最后,写文章的目的
1.希望有大神可以给我说明一下原因。
2.如果有和我一样的,帮助你们先解决需求,再去研究原因。
3.有不对的地方请指正。
相关文章推荐
- 在Android资源文件夹中添加一个新的图片资源
- 好久没更新博客了,今天给大家分享一下Android中的资源与国际化的问题,通常我们新建一个Android工程,目录结构如下图所示: 我们主要看一下layout与values目录,layou
- android读取本地资源图片的一个方法返回值是Bitmap
- 在android中资源文件夹中添加一个新的图片资源
- android如何获取res文件夹下drawable文件夹下的图片资源文件转成一个BitMap对象
- Android获取图片资源的4种方式(记录)
- 图片布局在android中资源文件夹中添加一个新的图片资源
- Android:认识R类、findViewById方法查找组件、@string查找字符、@color查找颜色、@drawable查找图片、@dimen某个组件尺寸定义、项目引入资源国际化
- android中动态获取图片资源
- Android中的资源与国际化!
- Android 资源的国际化
- android 处理图片资源
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- 【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能!
- Android 自带 drawable 资源记录
- Push图片到android存储卡sdcard (项目组共享资源yangyanlong)
- Android2.2系统中自带的图片资源
- Android 资源和国际化
- android游戏开发的框架设计!(已更新资源图片)
- 一个GDI资源泄漏的错误 记录下来 以后用的到