注意:应用程序支持RTL的布局需要在AndroidManifest.xml的<application>中,添加android:supportsRtl=true。该声明代表您的应用程序是否支持从右到左(RTL)布局。targetSdkVersion设置为17或更高,则系统将激活并使用各种RTL API,以便您的应用程序可以显示RTL布局。如果设置为false或者targetSdkVersion设置为16或更低,则RTL API将被忽略或无效。

首先先从控件讲起,Android官方控件大多支持RTL,需要注意的控件如下

1、TextView  一般情况下用wrap_content,这会使你在阿语下,做机型适配方面变得很容易,因为她是自适应的,你不用担心文本的对齐方式,如果必须要用match_parent的话,则需要加上  android:textAlignment="viewStart"  这个属性,否则阿语下文本对齐方式不对,另外 android:textDirection 属性来设置文本方向,根据需要进行设置。

另外针对华为,小米等国产手机,阿语下 ,TextView的单行显示省略号在左边的问题,只需要加上 gravity = “start” 属性即可把 省略号显示在右侧 ,PS一句大三星就不会有这个显示问题。。。

还有针对UI是720标准的设计,导致在2K屏部分界面 TextView 显示拥挤字换行的情况,处理方式很简单就是字号用sp,然后加上 android:autoSizeMaxTextSize、 android:autoSizeMinTextSize、 android:autoSizeTextType="uniform"、android:autoSizeStepGranularity="2sp",即可解决问题。

2、EditText 如果系统语言是非RTL布局的,如:中文系统,英文系统,而APP语言是阿语的情况下,输入数字会文本对齐是在最右边并且出现首尾都有光标,输入纯英文文本对齐又跑到了最左边并且光标只在尾部的情况,这时需要在布局文件内加上如下两个属性即可解决问题:

android:textDirection="anyRtl"
android:textAlignment="viewStart"

3、ViewPager  不支持RTL,不支持RTL,不支持RTL重要的事说三遍,不过这里给一个第三方的比较好用的替代控件RTLViewPager,它的Git地址:"com.booking:rtlviewpager:1.0.1",当然也可以自己手动实现,但你得足够强大哈!

其次说下图片,动画等反转:

1、有些图标(比如箭头)本身是有方向的,在RTL下也需要进行翻转,可以使用 android:autoMirrored 特性, 设置图片是否需要镜像反转,API Level 19(Android 4.4)才添加的属性。当然也可以让UI给出反转图片放到 drawable-ldrtl-xhdpi 目录下,不同分辨率放在不同目录下如:drawable-ldrtl-xxhdpi 。方便兼容低版本的API。

另外有语言文字的图片需要放到对应的语言资源文件夹下如:drawable-ar-xhdpi

2、动画的话,新建anim-ldrtl文件夹,将对应的动画进行反向处理。

最后说下RTL下常用的一些属性:

1、AS支持一键适配RTL,主要是针对Layout中XML文件里的

paddingLeftpaddingRightlayout_marginLeftlayout_marginRightlayout_alignParentLeftlayout_alignParentRight等属性使用paddingStartpaddingEndlayout_marginStartlayout_marginEndlayout_alignParentStartlayout_alignParentEnd替换。Start属性在LTR中对应Left,在RTL中对应Right,Edn则相反。在API 17开始支持,为了兼容低版本,可以同时有Left和Start。

2、android:layoutDirection  属性是改变布局方向的 ,RTL布局里,某些情况下可能个别页面需要从左到右显示,这时候可以添加该属性 android:layoutDirection = "ltr"。


注意:Android SDK在大于等于26时,即Android系统版本是8.0及8.0以上时,设置完 阿语 语区,通过 recreate()  的方式实现资源更新时,发现文字、图片等资源更新了但是布局没有反转。解决方法是进行 SDK 版本判断,然后进行代码设置布局方向,代码如下:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){Resources res = getResources();Configuration conf = res.getConfiguration();getWindow().getDecorView().setLayoutDirection(conf.getLayoutDirection());
}

PS:后续有遇到新东西会在补上,也欢迎各位拍砖修正哈!

Android 应用支持RTL 阿语反转的UI适配处理看这一篇就够了相关推荐

  1. Android 必须最近流行的框架库及开发语言,看这一篇就够了!

    本文更新时间:2018年07月12日15:50:40 目录 导语 图片加载库 异步分发通信库 新技术语言 注入注解框架 设计模式 UI框架 网络请求库 日志打印库 logger,简单,漂亮的andro ...

  2. Android悬浮窗适配全机型,包含8.0,小米魅族华为悬浮窗权限适配demo看这一篇就够了

    机型多杂,适配无法完全兼容,不如换种实现方式,性能比悬浮窗好,不需要权限,效果更好:https://blog.csdn.net/m0_38058826/article/details/10399339 ...

  3. android适配华为m5,2019-05-29 Android悬浮窗适配全机型,包含8.0,小米魅族华为悬浮窗权限适配demo看这一篇就够了...

    兼容8.0,小米,魅族,华为等难适配机型都可完美适配. 悬浮窗插入接口 在实现悬浮窗之前,我们需要知道通过什么接口,能够将一个控件放入到屏幕中去. Android的界面绘制,都是通过WindowMan ...

  4. android 从底部网上的平移动画_Android属性动画,看完这篇够用了吧

    转载自作者新小梦 随着APP的开发周期演进,APP不再满足基础的功能保障,需要有较好视觉体验和交互操作.那么动画效果是必不可少的,动画有帧动画,补间动画,属性动画等等. 本文通过一些简单常见的动画效果 ...

  5. 2021届毕业生还没找到Android开发工作,看这一篇就够了!

    前言 选了开发这一行,就意味着想混得好就要持续学习,你的技术和薪资.位置直接挂钩,进步对于程序员的重要性就不赘述了,接下来作为过来人,为广大同行分享一些学习干货,希望可以帮到大家 应届坎坷求职路 一个 ...

  6. 嵌入式产品如何支持阿拉伯文显示---看这一篇就够了

    在国际化大潮流之下,很多嵌入式系统产品,需要支持阿拉伯语言,可很多人却为之烦恼,我遇到了同样的烦恼,因此在网上搜索了很多关于阿拉伯字库及阿拉伯语言显示的资料,经过实战,整理了这篇文章.资料. 阿拉伯语 ...

  7. Android指纹识别,看这一篇就够了

    在Android6.0(Api23)的时候,Android系统加入了指纹识别的api接口,即FingerprintManager,定义了最基础的指纹识别接口.不过,在AndroidP(Api28)的时 ...

  8. Android 必须知道2018年流行的框架库及开发语言,看这一篇就够了!

    导语 2017 已经悄悄的走了,2018 也已经匆匆的来了,我们在总结过去的同时,也要展望一下未来,来规划一下今年要学哪些新技术.这几年优秀Android的开源库不断推出,新技术层出不穷,需要我们不断 ...

  9. Android多种方式实现相机圆形预览 看这一篇就够了,Android开发面试书籍

    } public void turnRound() { invalidateOutline(); } 即可根据设置的圆角值更新控件显示的圆角大小.当控件为正方形,且圆角值为边长的一半,显示的就是圆形. ...

最新文章

  1. matlab的pid控制系统设计,PID控制系统设计以及MATLAB仿真.doc
  2. windows平台下vlc编译之六:vlc-0.9.8a的编译
  3. java安全编码指南之:拒绝Denial of Service
  4. python字符串切割:str.split()和re.split()对比
  5. 苹果公司透露Siri新发音引擎的内部原理
  6. 浅析 NodeJs 的几种文件路径
  7. LeetCode 1614. 括号的最大嵌套深度
  8. IIS和Asp.Net页面运行机制
  9. 7-5 服务器统一出错处理2
  10. 【面经】数据开发一面-美团暑期实习
  11. Server 2008系统安装驱动提示“无法验驱动程序数字签名”怎么办?
  12. 【无标题】通信系统的有效性和可靠性
  13. 元宇宙:人类叙事的下一个100年
  14. 数字滤波器的MATLAB与FPGA实现--Altera/Verilog版的pdf版,杜勇等编著的书。
  15. 6轮面试辛苦拿到阿里Android开发offer,却从22k降到15k,在逗我
  16. 安卓8.X解包打包工具和教程,windows平台一键打包解包工具
  17. 关于3Dmax出现错误奔溃和中毒解决问题方法
  18. 绿幕抠图SDK技术对比
  19. 简单抽奖软件java程序设计
  20. android 高版本(设备11的)wifi扫描,获取wifi列表

热门文章

  1. 如何使用 Django 进行测试驱动开发,我来告诉你
  2. 信息安全 数据赛 铁人三项_信息安全铁人三项赛线上资格赛完美收官
  3. Vue组件中name的三大作用
  4. 跟随高博学RGBDSLAM
  5. Java核心技术:日期和时间新旧API对比
  6. RabbitMQ 3.9( 续 )
  7. 【题解】CH#46A 磁力块 分块+排序+队列
  8. Gson解析:declares multiple JSON fields named XXX
  9. Social Recommendation with Missing Not at Random Data (ICDM 2018)中文翻译(一)
  10. Resnet-18的搭建