Android 語言切換功能
最近專案要實現語言切換功能,大概實現了一下,先上效果圖:
記下來主要是為了以後方便檢視,下面來看下主要實現步驟。
先在res資原始檔下新建兩個資料夾,values-zh,values-en,然後資料夾下新建各建一個strings.xml檔案,如果要實現其他語言操作步驟一樣,專案裡只用到中文和英文,所以就實現了這兩種語言,實際檔案資源檢視:
由於英語水平有限藉助了谷歌翻譯。。。
接下來就是主要程式碼:
1,Dialog主要程式碼
public class DialogLanguage {
private Dialog mDialog;
private int mLanguage;
private static DialogLanguage instance;
public static DialogLanguage getInstance() {
if (instance == null) {
synchronized (CustomDialog.class) {
if (null == instance) {
instance = new DialogLanguage();
}
}
}
return instance;
}
public void ShowLanguageDialog(final Context context, int type, final LanguageListener callBack) {
View view = LayoutInflater.from(context).inflate(R.layout.layout_language_select, null);
RadioGroup rg = (RadioGroup) view.findViewById(R.id.radioGroup);
final RadioButton ch = (RadioButton) view.findViewById (R.id.radioButtonCh);
final RadioButton en = (RadioButton) view.findViewById(R.id.radioButtonEn);
switch (type) {
case 1:
ch.setChecked(true);
en.setChecked(false);
ch.setTextColor(context.getResources().getColor(R.color.colorThem));
en.setTextColor(context.getResources().getColor(R.color.textDark));
break;
case 2:
en.setChecked(true);
ch.setChecked(false);
ch.setTextColor(context.getResources().getColor(R.color.textDark));
en.setTextColor(context.getResources().getColor(R.color.colorThem));
break;
default:
break;
}
mLanguage = 1;
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.radioButtonCh:
mLanguage = 1;
ch.setTextColor(context.getResources().getColor(R.color.colorThem));
en.setTextColor(context.getResources().getColor(R.color.textDark));
break;
case R.id.radioButtonEn:
ch.setTextColor(context.getResources().getColor(R.color.textDark));
en.setTextColor(context.getResources().getColor(R.color.colorThem));
mLanguage = 2;
break;
}
}
});
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv_confirm:
callBack.languageListener(mLanguage);
mDialog.dismiss();
break;
}
}
};
view.findViewById(R.id.tv_confirm).setOnClickListener(listener);
mDialog = new Dialog(context, R.style.MyDialogStyle);
mDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
return true;
}
});
mDialog.setContentView(view);
Window window = mDialog.getWindow();
WindowManager.LayoutParams p = window.getAttributes();
p.width = ScreenUtils.getScreenWidth(context) - DensityUtils.dp2px(context, 70f);
window.setAttributes(p);
mDialog.show();
}
public interface LanguageListener {
void languageListener(int number);
}
}
2,佈局xml檔案
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/dialog_bg"
android:padding="@dimen/activity_margin_20"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="@dimen/activity_title_height"
android:text="@string/language"
android:gravity="center"
android:textColor="@color/textMiddleDark"
android:textSize="@dimen/activity_size_them"/>
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:id="@+id/radioButtonCh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/CHINESE"
android:textSize="@dimen/size_16"
android:background="@null"
android:layout_marginTop="@dimen/activity_margin_15"
android:button="@null"
android:textColor="@color/textDark"
android:drawablePadding="0dp"
android:gravity="center"/>
<RadioButton
android:id="@+id/radioButtonEn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/ENGLISH"
android:layout_marginTop="@dimen/activity_margin_20"
android:textSize="@dimen/size_16"
android:background="@null"
android:button="@null"
android:textColor="@color/textDark"
android:drawablePadding="0dp"
android:gravity="center"/>
</RadioGroup>
<TextView
android:id="@+id/tv_confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/confirm"
android:textColor="@color/colorThem"
android:textSize="@dimen/activity_size_them"
android:layout_marginTop="@dimen/activity_margin_25"/>
</LinearLayout>
3,呼叫Dialog部分
SharedPreferences sp = getSharedPreferences("language", MODE_PRIVATE);
int type = sp.getInt("language", 0);
DialogLanguage.getInstance().ShowLanguageDialog(this, type, new DialogLanguage.LanguageListener() {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
@Override
public void languageListener(int num) {
//將選中項存入SharedPreferences,以便重啟應用後讀取設定
SharedPreferences preferences = getSharedPreferences("language", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("language", num);
editor.apply();
/* Intent intent = new Intent(Login.this, Login.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);*/
Resources resources = getResources();
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
Configuration configuration = resources.getConfiguration();
switch (num) {
case 1:
configuration.locale = Locale.SIMPLIFIED_CHINESE;
break;
case 2:
configuration.locale = Locale.ENGLISH;
break;
default:
break;
}
resources.updateConfiguration(configuration, displayMetrics);
Login.this.finish();
//重新在新的任務棧開啟新應用
App.getInstance().finishAllActivity();
Intent intent = new Intent(Login.this, Login.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
// android.os.Process.killProcess(android.os.Process.myPid());
}
});
4,在啟動頁讀取已儲存的語言種類,然後進行設定
private void setLanguage() {
//讀取SharedPreferences資料,預設選中第一項
SharedPreferences preferences = getSharedPreferences("language", Context.MODE_PRIVATE);
int language = preferences.getInt("language", 1);
//根據讀取到的資料,進行設定
Resources resources = getResources();
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
Configuration configuration = resources.getConfiguration();
switch (language) {
case 1:
configuration.locale = Locale.SIMPLIFIED_CHINESE;
break;
case 2:
configuration.locale = Locale.ENGLISH;
break;
default:
break;
}
resources.updateConfiguration(configuration, displayMetrics);
//setLanguage();
}
至此已經完成了中英文語言切換功能。
相關推薦
Android 語言切換功能
最近專案要實現語言切換功能,大概實現了一下,先上效果圖: 記下來主要是為了以後方便檢視,下面來看下主要實現步驟。 先在res資原始檔下新建兩個資料夾,values-zh,values-en,然後資料夾下新建各建一個strings.xml檔案,如果
Android app應用多語言切換功能實現
最近在做一個多語言切換的功能,類似於微信的語言切換,搜了下資料基本上都是以下這種: 1. 實現的效果 和微信類似,在設定介面開啟切換語言的介面,選擇語言後重啟 HomeActivity,語言切換完成,下次重新開啟 App ,也是使用者設定的語言。 2. 實現步驟
Qt、QML動態語言切換功能的實現
本例jic+介紹了qml混合程式設計的du執行多語言翻譯,工程目錄及執行效果如下圖: 一、生成資原始檔 1.在pro中ti新增需要多語言翻譯所需要的檔案,這樣編譯工程時會自動生成這兩個ts檔案。 TRANSLATIONS = language_zh_
Android 語言切換的方法,華為、小米手機語言切換語言後部分頁面會自動變為簡體中文
前言 最近做了一款軟體需要用到國際化(語言切換),同事負責這個模組,但是有bug,華為和小米手 機切換英文後,過一段時間部分模組會自動變回中文,他問我有沒有遇到這個問題,我研究了一下 最後發現了問題原因。 正文: 切換語言的方法: 1、首先要在AndroidManifest
前端Vue中多語言切換功能的實現
在基於vue-cli專案開發過程中,多語言切換功能可使用vue-i18外掛,具體實現方法如下:step1: 在專案中安裝vue-i18外掛cnpm install vue-i18n --save-devstep2:在專案的入口檔案main.js中引入vue-i18n外掛imp
關於網站做多語言切換功能的最簡單實現思路
PHP服務端: 在$_SERVER['HTTP_ACCEPT_LANGUAGE'] 中 [HTTP_ACCEPT_LANGUAGE] => zh-CN,en-US;q=0.8,zh;q=0.6,en;q=0.4 其中q是語言優先的權重,q值越大,權重越高,排在第一個的
ios 簡單的多國語言切換,語言切換功能
App Store 中很多流行的應用程式有多種語言版本。雖然這些應用程式可能因為很多因素而變得流行,但是具有多種本地化版本,肯定是其中一個因素。越多的人可以理解並使用您的應用程式,潛在的買家也就越多。 若要讓您的應用程式擁有多個語言版本,必須先將它國際化,然後將它本地化。國
Yii2.0實現語言包切換功能
... map ans sso 語言包 tex center ron ssa 在yii2.0高級模板框架中,以前臺為例,首先 在前臺frontend 下面建立 messages/zh-CN 在 messages文件夾中創建一個文件: ①common.php
Android中輸入密碼明文密文切換功能的實現
引言: 當我們在進行專案開發的過程中難免會進行登陸及註冊功能的實現,在這過程中難免會有密碼明文密文切換的需求,那麼現在我就給大家分享一下我自己封裝的一個方法,非常簡單,如果專案中有這樣的需求直接套
[Android]應用語言切換的三種方法
Android對國際化與多語言切換已經做得不錯了,一個應用只要命名相應語系的values-[language]資料夾,通過“設定”→“語言&鍵盤”→“選擇語言”即可實現應用多種語言的切換。 但如何在應用裡自己實現?搜尋過發現網上有如下的做法:
Android 國際化之多語言切換
前言 android的國際化很簡單,大家都知道建立對應國家編碼的values資料夾就好啦。可是很多人不知道如何手動切換app的語言,而不是隻能跟隨系統語言變化,下面就介紹一下啦! 直接貼程式碼吧 /** * 設定當前語言 *
Android 聯絡人在中文,繁體,和English語言切換時,中文聯絡人排序顯示亂碼
alps/packages/providers/ContactsProvider/src/com/android/providers/contacts/LocaleSet.java --- a/alps/packages/providers/ContactsProvider
android:configuration 處理螢幕旋轉和語言切換等問題
當APP設定為螢幕可旋轉的時候,會發現在旋轉螢幕的過程中,使用者在EditText等控制元件中輸入的內容會隨之消失,這種情況同樣發生在切換系統語言的時候。 列印APP的生命週期,當進行螢幕方向轉換的時候,生命週期如圖: 螢幕方向的轉換,引起了Activi
Android 系統語言切換監聽和設定
最近專案上產品經理提了個需求,要求關閉語言國際化,不管手機系統設定那個國家的語言,都要顯示漢語,好吧,既然有需求,那就做吧。但是專案中已經有英文的配置了,且是作為預設String提供的,這麼多翻譯好的文字,直接刪除掉替換成中文為預設String又感覺棄之可惜。故網上Goog
Android自定義View實現圖片顯示,並實現縮放、拖拽、切換功能
這裡貼三個檔案的原始碼,第一個是main.java package com.example.test; import java.util.ArrayList; import java.util.List; import com.example.test.MyXZ; i
Android應用的多語言切換
在一些應用需要國際化或者面對各種使用者群體時,會涉及到語言的不同,所以我們在開發應用apk時,記得一定要養成將應用中涉及到的所有文字資訊放在string.xml裡的好習慣!Android中的多語言切換,對於我們應用層的開發同學來時,操作起來非常見到,程式碼也很簡
Android開發分享功能實現步驟
集成 sha har sse 分享 功能 秘鑰 步驟 過去 參考mob官網(http://www.mob.com/) 分享實現步驟:1.mob官網賬號註冊登錄2.進入後臺,進入ShareSDK,添加應用,生成秘鑰3.參照mob官網集成文檔,下載SDK,進入ShareSDK
ionic2 基於ngx-translate實現多語言切換,翻譯
click create -a fault template con 設置 切換 使用 介紹 ngx-translate 是Angular 2+的國際化(i18n)庫,在github的地址是箭頭 https://github.com/ngx-translate/core 將
多語言切換jquery.i18n.min.js
jquery i18n 語言項目需求,切換多語言,采用jQuery.i18n.min.js文件內容如下-------------------------------------------------/*! * jquery i18n Plugin v1.0.0 * https://github.com/ZO
aNDROID圖片切換JaVa代碼
baidu oid http and ongl java java代碼 aid 代碼 COCOs2D-X%E6%B8%B8%E6%88%8F%E6%8A%80%E8%83%BDCD%E5%AE%9E%E7%8E%B0 http://music.baidu.com/song