Android:页面ui适配整理(3)

  1. 语言的适配(local的适配)
  • 应用中文本的适配

  • 用到的涉及文字的图片需要替换

  • 对整体UI进行适配修改(不同的语言Ui效果是不同的)

  1. 图片和UI适配没有什么难度,此处主要讨论文本字串的替换,文本字串的替换分为三个层次:
  • 修改系统的语言设置,ap的涉及文本的页面刷新

  • 上面基础上,添加应用内设置(控制语言的变化),此处设置可以修改系统的设置

  • 和2相似,只是应用内设置只会修改本ap,不会修改手机设置(这样更合理)

  1. 针对上面3种情况逐一分析解决办法:
  • 修改系统的语言设置,ap的涉及文本的页面刷新

    • ap文本随着系统的语言变化,在res文件夹下提供多个value-locale文件夹,文件夹内部string.xml提供具体locale对应语言的字串即可。

      • image.png
    • 此时需要注意,页面activity是否随着locale变化重走生命周期是可以配置的,即:

      • 4.2以前的系统:android:configChanges="locale"即可,系统locale发生改变,页面activity不在重走生命周期,而是走activity的onconfigchange()api。

      • 4.2及其以后的系统,在上面的基础上还需要加一个配置,即:android:configChanges="locale|layoutDirection"

      • 多数情况下不建议重走生命周期,即可以通过下面方式对页面进行刷新:

        • image.png
    • 是否重走生命周期按需求决定,由于重走生命周期性能也有影响。

  • ap内部设置语言同时修改系统(手机)的语言设置:

    • 系统把涉及到系统修改的api都隐藏了,即对外不提供调用,也是不让外在的应用修改系统的设置。

    • 可以使用api欺骗和反射两种方式获取到系统设置的api,在当前应用中调用修改系统的设置,实现方式可以参考下面的文章

    • 这个需求一般不会存在,还有就是隐藏的api具有不稳定性和系统的不兼容性所以不建议使用这两种方式

    • 还有这两种方法有可能在一些高版本的系统出现权限异常是因为4.2系统以后不允许外在应用修改系统设置,可以尝试设置application( android:sharedUserId="android.uid.system")让外在应用成为系统级应用,不一定管用。

  • ap内部设置语言但是不修改系统设置:

    • 两种实现

      • 在不同的Locale文件夹中提供不同语言的文本

      • 通过Configuration的Locale设置当前应用的Locale,具体的设置方法如下:

        • image.png
      • 上面只是设置了当前ap的资源Locale,并没有刷新当前的页面所以针对需求还需要补充完善即:

        • 未来加载的页面不需要处理

        • 针对当前已加载页面,需要手动去刷新页面(按钮,文本,内容等)

          • 通过广播,针对已加载的页面去判断是否修改Locale去过已修改去刷新

          • 在页面的onresume周期方法中去判断是否修改Locale去过已修改去刷新

          • 可以借助sharereference记录当前ap的locale和是否发生变化等还有就是建议提供父Activity和父Fragment去处理Locale的变化即:

            • image.png
    • 第二种实现相对麻烦繁琐:

      • 不需要再文件夹中处理Locale,在value中提供一个string.xml文件即可

      • 在文件中提供相应的语言String后缀即:比如test的一个文本,中文版本为:name_cn=“测试”,英文版本:name_eg = "test",其他依次类推

      • 借助sharereference记录Locale对应的语言标识符,在设置里面去进行相应的设置

      • 提供utils类对于本地文本,图片等资源字符串进行拼接

      • 这种方法同样存在无法刷新页面的问题,此时需要手动的去刷新即:

        • 通过广播,针对已加载的页面去判断是否修改Locale去过已修改去刷新

        • 在页面的onresume周期方法中去判断是否修改Locale去过已修改去刷新

  1. 语言环境和语言文件夹对比

    中文(中国):values-zh-rCN
    
    中文(台湾):values-zh-rTW
    
    中文(香港):values-zh-rHK
    
    英语(美国):values-en-rUS
    
    英语(英国):values-en-rGB     
    
    英文(澳大利亚):values-en-rAU
    
    英文(加拿大):values-en-rCA
    
    英文(爱尔兰):values-en-rIE
    
    英文(印度):values-en-rIN
    
    英文(新西兰):values-en-rNZ
    
    英文(新加坡):values-en-rSG
    
    英文(南非):values-en-rZA
    
    阿拉伯文(埃及):values-ar-rEG
    
    阿拉伯文(以色列):values-ar-rIL
    
    保加利亚文:  values-bg-rBG
    
    加泰罗尼亚文:values-ca-rES
    
    捷克文:values-cs-rCZ
    
    丹麦文:values-da-rDK
    
    德文(奥地利):values-de-rAT
    
    德文(瑞士):values-de-rCH
    
    德文(德国):values-de-rDE
    
    德文(列支敦士登):values-de-rLI
    
    希腊文:values-el-rGR
    
    西班牙文(西班牙):values-es-rES
    
    西班牙文(美国):values-es-rUS
    
    芬兰文(芬兰):values-fi-rFI
    
    法文(比利时):values-fr-rBE
    
    法文(加拿大):values-fr-rCA
    
    法文(瑞士):values-fr-rCH
    
    法文(法国):values-fr-rFR
    
    希伯来文:values-iw-rIL
    
    印地文:values-hi-rIN
    
    克罗里亚文:values-hr-rHR
    
    匈牙利文:values-hu-rHU
    
    印度尼西亚文:values-in-rID
    
    意大利文(瑞士):values-it-rCH
    
    意大利文(意大利):values-it-rIT
    
    日文:values-ja-rJP
    
    韩文:values-ko-rKR
    
    立陶宛文:valueslt-rLT
    
    拉脱维亚文:values-lv-rLV
    
    挪威博克马尔文:values-nb-rNO
    
    荷兰文(比利时):values-nl-BE
    
    荷兰文(荷兰):values-nl-rNL
    
    波兰文:values-pl-rPL
    
    葡萄牙文(巴西):values-pt-rBR
    
    葡萄牙文(葡萄牙):values-pt-rPT
    
    罗马尼亚文:values-ro-rRO
    
    俄文:values-ru-rRU
    
    斯洛伐克文:values-sk-rSK
    
    斯洛文尼亚文:values-sl-rSI
    
    塞尔维亚文:values-sr-rRS
    
    瑞典文:values-sv-rSE
    
    泰文:values-th-rTH
    
    塔加洛语:values-tl-rPH
    
    土耳其文:values--r-rTR
    
    乌克兰文:values-uk-rUA
    
    越南文:values-vi-rVN
    

应用内语言切换的三种方式

Android:configchanges属性详解

滴滴国际化方案配置

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容