使用系統設置中的API會改變系統的語言,在onpause等去改變語言,效果不是太好。
另外下面的方法只有在新啟動的activity中才能生效。
public void switchLanguage(Locale locale) { Resources resources = getResources();// 獲得res資源對象 Configuration config = resources.getConfiguration();// 獲得設置對象 DisplayMetrics dm = resources.getDisplayMetrics();// 獲得屏幕參數:主要是分辨率,像素等。 config.locale = locale; // 簡體中文 resources.updateConfiguration(config, dm); }
新浪微博以及微信都有多語言項,而且都是在設置界面。也就是說除了當前切換語言界面還有其它已啟動的activity存在。
新浪微博使用重新啟動的方式實現,微信則看似沒有重新啟動應用。我猜測分析發現其是將現有的activity棧中的除首頁外都finish了,然后手動的將首頁activity切換語言。這樣就完美實現了。
我的項目需求更加簡單,只能在登錄頁面實現多語言的設置,也就代表着activity棧中只有當前activity,只需要將當前activity根據語言的設置手動同步就可以了。
以后最好將選擇語言項設計到登陸頁。