小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

新應(yīng)用的知識(shí)整理

 aaie_ 2017-04-25

一、應(yīng)用對(duì)多語(yǔ)言支持的實(shí)現(xiàn)

1、所謂的多語(yǔ)言的實(shí)現(xiàn),是指同一個(gè)應(yīng)用界面能支持多種語(yǔ)言的顯示,供不同語(yǔ)言的人使用。也就是我們應(yīng)用內(nèi)顯示的字符串都要有不同語(yǔ)言的多個(gè)備份,共系統(tǒng)根據(jù)需要調(diào)用。

要實(shí)現(xiàn)這個(gè)功能,首先的一點(diǎn)是不能把要顯示的字符串寫死在代碼里,而是應(yīng)該寫到對(duì)應(yīng)的配置文件中,也就是res目錄下的strings.xml中。


2、根據(jù)需求為每種要支持的語(yǔ)言創(chuàng)建一份對(duì)應(yīng)的strings.xml。

1)




2)   在打開(kāi)的對(duì)話框中填寫文件名,選擇locale,并選擇要支持的語(yǔ)言和地區(qū)。





這樣,應(yīng)用中顯示的每一個(gè)字符串在上述方法得到的各個(gè)strings.xml文件中都需要有一個(gè)備份(當(dāng)然,語(yǔ)言的內(nèi)容要更改為對(duì)應(yīng)語(yǔ)言)。


3、至此,對(duì)多語(yǔ)言的支持就完成了。只要設(shè)備設(shè)定的語(yǔ)言在我們支持的語(yǔ)言當(dāng)中,系統(tǒng)就會(huì)自動(dòng)調(diào)用對(duì)應(yīng)的strings.xml中的內(nèi)容進(jìn)行顯示。


二、應(yīng)用內(nèi)語(yǔ)言切換的實(shí)現(xiàn)


圖1


圖2


如上圖,圖1是應(yīng)用的登錄界面,點(diǎn)擊右上角的“語(yǔ)言”,就可以跳轉(zhuǎn)到圖2語(yǔ)言切換頁(yè)面。

在圖2中選擇一種語(yǔ)言,應(yīng)用就會(huì)顯示為對(duì)應(yīng)語(yǔ)言的版本。

切換語(yǔ)言的關(guān)鍵代碼如下:

1、

Locale locale = new Locale("zh");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());

Intent intent = new Intent();
intent.setClass(Language_set.this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//If set, and the activity being launched is already running in the current task, then instead of launching a new instance of that activity,all of the other activities on top of it will be closed and this Intent will be delivered to the (now on top) old activity as a new Intent.
startActivity(intent);

上面那段灰色的英文解釋的意思是:設(shè)置為該flag后,如果要啟動(dòng)的activity在棧中已經(jīng)存在,那么不會(huì)創(chuàng)建新的activity而是將棧中該activity上方的所有activity出棧。這樣做的目的是使所有的activity都顯示為當(dāng)前設(shè)定的語(yǔ)言。

當(dāng)然至此只能是這次使用過(guò)程中語(yǔ)言設(shè)定成功。如果想應(yīng)用下一次啟動(dòng)時(shí)還使用當(dāng)前設(shè)置的語(yǔ)言類型就要將當(dāng)前語(yǔ)言設(shè)置保存起來(lái),在下次打開(kāi)應(yīng)用時(shí)進(jìn)行讀取。

保存很簡(jiǎn)單就不寫了。

在啟動(dòng)activity中進(jìn)行讀取并設(shè)置:

String filename="LoginDataStore";
String field="Language";
String lang=ForDataStoreAndRead.getSharePreString(FinishiActivity.this,filename,field);
if (lang.equals("0"))
    lang="zh";
switchLanguage(lang);


protected void switchLanguage(String language) {//shezhiyingyong yuyan de leixing

    Resources resources = getResources();
    Configuration config = resources.getConfiguration();
    DisplayMetrics dm = resources.getDisplayMetrics();
    switch (language)
    {
        case "en":
            config.locale = Locale.ENGLISH;
            resources.updateConfiguration(config, dm);
            break;
        case "zh":
            config.locale = Locale.SIMPLIFIED_CHINESE;
            resources.updateConfiguration(config, dm);
            break;
        default:
            config.locale = Locale.SIMPLIFIED_CHINESE;
            resources.updateConfiguration(config, dm);
            break;
    }
}




    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多