① android國際化之多語言(配置及應用內設置)✈️
Android系統通過判斷當前系統的Local配置,來使用對應的strings.xml文件
values-->strings.xml 默認語言(簡體中文)
values-zh-rHK-->strings.xml 繁體中文
values-en-->strings.xml 英語
在Android系統中,系統的配置大都通過 Configuration 來管理,包括strings等等。
onCreate() 中注冊
onDestroy() 中取消注冊
setLanguage() 方法
通過上面的設置,可以實現不重啟APP修改語言的效果
以上只是對Android多語言設置的一些小小的總結,可能有理解不周的情況,歡迎給我留言指出😄
② Android:應用多語言切換,國際化實現
生成多種語言的string.xml,裡面放置對應的語言,修改配置(Configuration),重啟之後就會載入對應語言的string.xml。
1:在res目錄下,生成對應的語言包,比如英語:
在res目錄下生成了可看到生成了:
<string name="hello">你好</string>
英語:
<string name="hello">hello</string>
之後就可以使用getResource.getString(R.string.hello),這個字元串會載入相對應的配置的語言。
3:修改語言配置
修改語言配置後,需要重新啟動進程,並且殺死進程。
1:有些手機是可以在設置里直接切換語言的,這個也就是Configuration改變。用戶重新設置系統語言導致應用的語言也會重新設置。Configuration改變,如果在Manifest中不設置android:configChanges忽略掉配置改變,Activity會重新創建,那麼我們就可以在Activity的onCreate中,重新修改語言配置。
2:切換語言後,退出應用,重新進來,你會發現又是系統設置的語言。所以需要在Application開啟時,需要再次切換語言配置。
③ Android國際化多語言切換
關於App國際化,之前有講到國際化資源、字元換、布局相關,想要了解的猛戳 用力抱一下APP國際化 。借著本次重構多語言想跟大家聊一下多語言切換,多語言切換對於一款國際化App來講是重中之重,並非難事,但是若要做好也是一件不容易的事情。
當我們做了系統的配置更改,比如說切換了系統導航或者說更改了深色模式,那麼我們一般的處理是也是要對Application作出處理。
如果項目中有用到ApplicationContext去getString(@StringRes int id)實現載入的提示語,那麼如果只是單純的重啟界面則無法讓當前的提示語跟隨當前切換的語言,所以我們要麼重啟整個應用,要麼對ApplicationContext中的Local也作出相應的更新方可,這里有一點問題,雖然Android N之後updateConfiguration是過時方法,官方給出使用createConfigurationContext代替,但是更新ApplicationContext的Local發現無效使用老版本updateConfiguration正常。
如果你發現你的應用廣播通知欄適配無效,那就是context中的Local在切換語言是並未及時更新Local,這里調試一下便知,如果是Applicaiton注冊的廣播,那麼多半情況下是沒有更新ApplicationContext的Local所導致的。
多語言適配基本步驟大概就是如此了,下面看一下適配的細節問題。
[圖片上傳失敗...(image-b42d06-1640685147639)]
還有一點Android N之後,手機系統的語言配置選項已經不是單選了,改為一個列表了,具體可以參考手機設置中的語言和輸入法,所以 setLocal(@Nullable Locale loc) 方法建議不要再使用了,我相信很多人還在用,正確的用法應該是 setLocals(@Nullable LocaleList locales) ,需要傳遞一個集合。
當你的應用使用的是androidx.appcompat:appcompat:1.2.0及以上時,BaseActivity中需要實現下面方法。
這套方案目前不在推薦,直接去替換attatchBaseContext()中的context則可,經過測試是完全正常的。
以下則是多語言操作的工具類,現在提供出來,需要的朋友可以自行進行改造。
④ 安卓手機百度輸入法符號在哪個文件夾里
/sdcard//ime/.emoji
注:.emoji文件夾為隱藏文件夾,需要用管理器取消隱藏
⑤ Android培訓課程有什麼內容
第一階段的課程一般都是Java編程開發
這一部分應該會和Java後台有相關聯的地方,但是比Java後台簡單,這一階段一般要學習Java語法和Java面向對象思想、Java數據結構及演算法、GUI界面編程、Java進程與線程、Java網路通信與流、設計模式、資料庫和Javaweb,安卓在這一階段的學習內容看似和後台關聯性很大,但是這一部分我們只學習後台一些基礎的東西和日後會用到的東西,我們要把基礎奠定好。
第二階段要學習的內容是安卓基礎開發
主要的課程內容為Android界面編程(界面編程是Android入門的核心技術,內容縱多,涉及四大組件之一Activity、Wedget、自定義View、事件處理、動畫處理、列表、圖片處理、國際化、資源文件、菜單、通知、對話框、Tools/ActionBar/Fragment、樣式/主題、Intent。)、進程與線程、服務與廣播、數據存儲、網路通信、多媒體以及硬體相關,這一階段更注重安卓入門基礎的培訓,一定要好好的把握。
接下來學習的內容是一個進階階段,主要學習的是安卓的高級開發,一般的課程內容為HOME開發、NDK開發等、地圖開發項目發布等等,以上就算是安卓培訓的所有學習內容,但是你掌握了學習內容之後還是遠遠不夠的,一般的培訓班都會給我們安排項目實戰的,這是一種思想的鍛煉,我們做什麼就要有什麼的思維做後台的有做後台的思維,做前端的有做前端的思維,我們學安卓的進行手機端APP開發的就要有安卓的思維,這一階段也是很重要的,就好比我們在華清遠見學完整體的內容之後也參與了一些項目的實戰。
我把每一階段要學習的課程都給你整理了,你可以現在有準備的去看一些基礎的視頻或者相關的書籍了。
安卓培訓視頻資料都有
⑥ Android 國際化 設置Locale.ENGLISH不生效以及createConfigurationContext()問題
Q1 故事情節: 設置了簡體中文,繁體中文和英信戚鋒文,結果拿了7.0榮耀青春版完美顯示,然而7.0下的所有安卓手機都設置英文無效,簡體中文和繁體中文依然可以,納悶......
Q1 解決方式:雖說看起來設置了英文Locale.ENGLISH, 但實際上有些手機或系統需要特殊指明那個英文的(英國/美國),所以不要直接使用Locale.ENGLISH,將滑晌Locale.ENGLISH改成相對應的Locale.US(美國英文) 或 Locale.UK(英國英文)就可以了,如下圖注釋部分。
Q2 故事仔滲情節:還以為Q1問題解決就可以了,在設置createConfigurationContext(config)情況下,>=6.0系統的手機都切換語言失敗(5.0的手機剛好沒有,所以待定),具體原因不詳
Q2 解決方式:老老實實,用回getResources().updateConfiguration(config, null)就可以了
⑦ Android的國際化語言適配(系統語言適配+APP內部適配)
Android國際化語言適配分為兩種
1.更改手機系統語言後,APP的語言也會跟著變化
2.只改變自己APP的語言,不受手機系統語言的影響,不影響其他APP的語言,可以參考微信的切換語言的效果。
只需要創建不同語言的values即可
具體操作參考 簡單的Android客戶端國際化(語言適配)方案
操作的時候要注意: 當選擇所要切換的語言後,則進行修改Config以及重啟APP,一定要將選擇的語言保存到SP中,且在activity中的oncreate中將SP中存儲的語言取出來重新設置Config,否則當重啟APP後,還是會跟系統語言一樣。
具體操作參考 Android應用程序內部切換語言及自定義語言