阿拉伯RTL适配

看完文章大概需要10分钟~

目录

1.背景和介绍

2.什么是RTL

3.效率工具

4.细节和技巧

5.实践分析

6.开发踩坑点

7.Android语言切换流程

一、背景和介绍


海外市场的需求越来越大,国际化的发展,相对其它语言的适配,阿拉伯等中东国家RTL比较特殊,需要改变布局和使用习惯。
我们常用习惯是LTR(Left-to-Right)阅读和使用习惯从左往右,RTL(Right-To-Left)正好相反,阅读和使用习惯是从右往左,常见国家地区有阿拉伯语、希伯来语等。

二、什么是RTL

基本实现

Android对Rtl的支持。
Android4.1开始在textview和editView增加了双向文本的优先支持。
Android4.2开始增加了对RTL镜像的完全支持。

app如何支持RTL

分2步
第一步:系统切换RTL语言,还需你app支持RTL镜像布局,在AndroidMainifest.xml文件<applictiion>标签下配置元素android:supportsRtl=“true”(需确认是否默认支持)。
第二步:调整UI布局属性,从left/right到start/end切换。如果是4.2以下需保留left/right和start/end两者

三、效率工具

自动化、工具化
AS重构
Refactor->Add RTL Support Where Possible 

会自动将项目中所有的left/right属性替换为start/end属性,如果需要适配4.2以下设备,勾选Relpace Left/Right Properties with Start/End Properties选项。
替换后尽量每个页面看看效果,有时候需要一些微调工作,例如使用了<include>标签,其中用到的方向属性不会被替换。

四、细节和技巧


1.全局样式,批量修改属性。

textview和editview需要设置以下属性
android:textAlignment="viewStart"
android:gravity="start"
android:textDirection="locale"
将这些属性在style.xml全局设置
<style name="text_rtl_style">
    <item name="android:textAlignment">viewStart</item>
    <item name="android:textDirection">locale</item>
    <item name="android:gravity">start</item>
</style>

2.RTL资源适配

图片资源创建drawable-ldrtl目录,将翻转的图片资源放在目录下,可以限定dpi,例如drawable-ldrtl-xhdpi。
布局文件创建layout-idrtl目录,可以增加语言限定,例如阿拉伯语layout-ar/。
动画文件?

3.代码判断是否支持RTL。

有些自定义控件需要代码动态调整的,可以通过Configuration的locale判断当前环境。
public boolean isRtl() {
    return TextUtilsCompat.getLayoutDirectionFromLocale(
        getContext().getResources().getConfiguration().locale) ==         ViewCompat.LAYOUT_DIRECTION_RTL;
}

4.不是所有控件支持RTL

如ViewPager,在 Github 就有对应的开源库 RtlViewPager(https://github.com/diego-gomez-olvera/RtlViewPager) 可供使用,其原理是对数据倒序重排。

五、实践分析

如何估期

适配RTL需要做哪些事?这个任务需要多少时间能够完成?需要哪些人配合,哪些任务是可以并行的?
要精准化RTL工作量不容易,取决于产品经理对细节的要求,app的特性。
在适配之前可以先快速看下效果,需三步。
1.设置Android:supportsRtl=“true”,让App支持RTL。
2.AS自动转换布局属性,支持RTL布局效果。
3.打开开发者选项中的强制RTL布局开关,或者切换语言到阿拉伯。

此时可以快速看下整体效果,有哪些部分需要调整的,需要产品提出要求、设计师评估UI和交互、翻译提供语言翻译。
适配RTL任务分这几步:
1.App支持RTL,AS自动转换。
2.图片、布局、动画、string等适配

适配RTL建议

1.从基础类开始,将界面设置为从右到左。
2.分模块进行适配。
3.复杂模块,可以放在layout-ldrtl包下,单独一个布局适配阿拉伯语。

六、开发踩坑点

1.服务端下发字符串适配。


2.String.format注意设置语言,如果是数字会使用阿拉伯符号数字

3.部分api如Rect、padding手动适配

 

4.字符串拼接

5.布局线性、帧布局改为相对、约束

6.textview会默认选择第一个字符设置语言

7.textview内容居中

8.动画适配

9.数组反转

10.渐变色翻转

 其它

\u200f转义符
有时英语和阿拉伯混用会出现,英语从左往右,阿拉伯从右往左。这种情况可以字符串首尾加上\u200f转义符强制让字符串从右往左显示。

autoMirrored属性
drawable的xml文件右autoMirrored属性,设置为true,可以让drawable在RTL布局下反转。

七、Android语言切换流程

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值