Android开发如何让app联网,Android 开发:如何让App支持RTL模式
前言
講真,好久沒寫博客了,2016都過了一半了,趕緊重新?lián)炱饋怼?個人感慨,和內(nèi)容無關(guān)……
所謂RTL,顧名思義也就是Right To Left,是一種阿拉伯語、波斯語等情況下從右往左的閱讀方式。當所開發(fā)的App等面向海外用戶時需要做這個適配。
從Android 4.2開始支持原生的RTL模式,對此之前的版本我也不想多做說明,這些老版本要是還支持那Android碎片化就沒完沒了了。
正文
如何查看效果
首先要說的是,想要看RTL模式,不必去把手機中的語言/國家設(shè)置到阿拉伯等,只需要在“開發(fā)者選項”中勾選“強制使用從右到左的布局方向“,這樣真的是方便太多了。
此處以MIUI為例,大家也不妨自己動手試試。
如圖,原本左右兩側(cè)的控件發(fā)生了對調(diào),值得注意的是圖中紅色方框標注的圖標發(fā)生了翻轉(zhuǎn)(更標準的說法是”鏡像“)。
如何支持RTL
是不是很有意思呢,那么如果在你的App中適配RTL呢?
1,需要在清單文件總隊RTL的支持做一個聲明,放到< application >節(jié)點下。
android:supportsRtl="true"
2,將布局中的”left、right“相關(guān)的屬性換成對應的”start、end“屬性。
這一步可能用說的不夠清晰,看代碼看圖!
android:id="@+id/button"
android:text="A"
android:layout_width="60dp"
android:layout_height="40dp" />
android:id="@+id/button2"
android:text="B"
android:layout_toRightOf="@id/button"
android:layout_width="60dp"
android:layout_height="40dp" />
android:id="@+id/button3"
android:text="C"
android:layout_toRightOf="@id/button2"
android:layout_width="60dp"
android:layout_height="40dp" />
應該可以看出來這是在一個相對布局中,默認情況下是這樣的:
開啟RTL后,卻是這樣的:
為什么B、C按鈕不見了?因為根據(jù)屬性,它們都在A的右邊,這已經(jīng)超出的屏幕邊界。
如果我們對布局做一點修改:
android:layout_toRightOf
改成
android:layout_toEndOf
如果有l(wèi)eft,也照搬改成start就好。
頁面不想支持RTL怎么辦
有一些界面你不想它支持RTL,或者它本身不需要支持,那又該如何呢?比如說撥號界面,難道要把數(shù)字鍵也鏡像過去嗎:
只需要加上這么一句就好了呀。
layoutDirect可以使用4種屬性:
ltr:從左往右
rtl:從右往左
inherit:從上層視圖中繼承
locale:由Locale決定
分別對應的int值為0,1,2,3。
圖片怎么辦
只需要創(chuàng)建一個文件夾,把鏡像后的圖片放進去即可,代碼中不用做任何修改。
drawable-ldrtl-xhdpi
drawable-xhdpi
分辨率是一一對應的
當然了,除了對圖像做預處理外,要是想用代碼直接控制也是可以的。
private ImageView image2;
// 省略
image2 = (ImageView) findViewById(R.id.image2);
Drawable arrow = getResources().getDrawable(R.drawable.arrow);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (arrow != null) {
arrow.setAutoMirrored(true);
}
}
image2.setImageDrawable(arrow);
結(jié)尾
差不多就是這些了,有什么問題直接留言吧。
代碼的話,弄個了demo,托管到GitHub上了,打算以后將布局相關(guān)的博客代碼都放到這個工程里,歡迎大家Star啊。
總結(jié)
以上是生活随笔為你收集整理的Android开发如何让app联网,Android 开发:如何让App支持RTL模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hibernate配置(核心配置文件.c
- 下一篇: MPV播放器 快捷键