美文网首页android样式主题合集
Android:页面ui适配整理(3)

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

作者: 爱你为你做饭 | 来源:发表于2019-10-18 17:51 被阅读0次
    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属性详解

    滴滴国际化方案配置

    相关文章

      网友评论

        本文标题:Android:页面ui适配整理(3)

        本文链接:https://www.haomeiwen.com/subject/eglwmctx.html