編輯:關於Android編程
最近做的項目中使用到了多語言切換功能。那麼多語言切換首先要注意的是,在xml文件中和代碼當中,所有使用文本字符串的地方,確保所使用的string文本是從values文件夾下的string.xml中獲取。
那麼做多語言需要兩到三個文件。1 values文件夾下的string.xml文件這裡存放的是你app在沒有進行語言設置的時候默認使用的語言類型。2 values-en文件夾(這個文件夾是自己創建的,當然也可以是別的名字string.xml 這裡存放的是每個文本對應的英文文本。3values-tw(繁體中文)
需要注意一下,三個文件夾下的string.xml文件中的文本變量,必須保證數目一致,對應的名稱一致。
下面是切換代碼部分。我挑選出重要的解釋。
public class ChangeLanquageActivity extends BaseActivity implements
OnClickListener {
private RelativeLayout cnBtn, twBtn, enBtn;
private ImageView cnBtn_choose, twBtn_choose, enBtn_choose;
private Button leftBtn;
private TextView topTtitle;
SharedPreferences Sp;// 保存語言切換的SP,以便後續的網絡請求中,發送當前語言類型
@Override
protected int getContentLayout() {
return R.layout.activity_language;
}
@Override
protected void initGui() {
leftBtn = (Button) findViewById(R.id.leftBtn);
topTtitle = (TextView) findViewById(R.id.topTitle);
cnBtn = (RelativeLayout) findViewById(R.id.cnBtn);
twBtn = (RelativeLayout) findViewById(R.id.twBtn);
enBtn = (RelativeLayout) findViewById(R.id.enBtn);
cnBtn_choose = (ImageView) findViewById(R.id.cnBtn_choose);
twBtn_choose = (ImageView) findViewById(R.id.twBtn_choose);
enBtn_choose = (ImageView) findViewById(R.id.enBtn_choose);
Sp = getSharedPreferences("userInfo", this.MODE_WORLD_WRITEABLE);
}
@Override
protected void initAction() {
cnBtn.setOnClickListener(this);
twBtn.setOnClickListener(this);
enBtn.setOnClickListener(this);
leftBtn.setOnClickListener(this);
}
@Override
protected void initData() {//初始化切換語言的按鈕的文本,在這裡說明一下,MBConfig.Language是用於保存當前語言環境的全局變量,0,1,2代表三種語言設置
topTtitle.setText(R.string.language_set);
if (StringUtils.equals(MBConfig.Language, "0")) {
// 繁體中文
cnBtn_choose.setVisibility(View.INVISIBLE);
twBtn_choose.setVisibility(View.VISIBLE);
enBtn_choose.setVisibility(View.INVISIBLE);
} else if (StringUtils.equals(MBConfig.Language, "1")) {
// 英文
cnBtn_choose.setVisibility(View.INVISIBLE);
twBtn_choose.setVisibility(View.INVISIBLE);
enBtn_choose.setVisibility(View.VISIBLE);
} else if (StringUtils.equals(MBConfig.Language, "2")) {
// 簡體中文
cnBtn_choose.setVisibility(View.VISIBLE);
twBtn_choose.setVisibility(View.INVISIBLE);
enBtn_choose.setVisibility(View.INVISIBLE);
}
}
@Override
public void onClick(View v) {//點擊事件,點擊後切換語言配置。切換的配置用sp保存,以便下次進入的時候使用。中間的按鈕現隱藏邏輯可以不用考慮。
Resources resources = getResources();
Editor edit = Sp.edit();
switch (v.getId()) {
case R.id.leftBtn:
hideProgressDialog();
finish();
break;
case R.id.cnBtn:
cnBtn_choose.setVisibility(View.VISIBLE);
twBtn_choose.setVisibility(View.INVISIBLE);
enBtn_choose.setVisibility(View.INVISIBLE);
changeAppLanguage(resources, "CN");
MBConfig.Language = "2";
edit.putString("LANGUAGE", "2");
edit.commit();
hideProgressDialog();
finish();
break;
case R.id.twBtn:
cnBtn_choose.setVisibility(View.INVISIBLE);
twBtn_choose.setVisibility(View.VISIBLE);
enBtn_choose.setVisibility(View.INVISIBLE);
changeAppLanguage(resources, "TW");
MBConfig.Language = "0";
edit.putString("LANGUAGE", "0");
edit.commit();
hideProgressDialog();
finish();
break;
case R.id.enBtn:
cnBtn_choose.setVisibility(View.INVISIBLE);
twBtn_choose.setVisibility(View.INVISIBLE);
enBtn_choose.setVisibility(View.VISIBLE);
changeAppLanguage(resources, "EN");
MBConfig.Language = "1";
edit.putString("LANGUAGE", "1");
edit.commit();
hideProgressDialog();
finish();
break;
default:
break;
}
}
public void changeAppLanguage(Resources resources, String lanAtr) {//切換語言的方法
Configuration config = resources.getConfiguration();//讀取系統配置信息
DisplayMetrics dm = resources.getDisplayMetrics();
if (lanAtr.equals("CN")) {
config.locale = Locale.CHINA;
} else if (lanAtr.equals("TW")) {
config.locale = Locale.TAIWAN;
} else if (lanAtr.equals("EN")) {
config.locale = Locale.ENGLISH;
} else {
config.locale = Locale.getDefault();
}
//上面是對應三種情況下設置三種語言設置
resources.updateConfiguration(config, dm);//刷新語言設置信息,這步不能少。
}
Android UI實現單行文本水平觸摸滑動效果
本文實例為大家分享了單行文本水平觸摸滑動效果,通過EditText實現TextView單行長文本水平滑動效果。下一篇再為大家介紹 多行文本折疊展開效果,自定義布局View
詳解Android中visibility屬性VISIBLE、INVISIBLE、GONE的區別
在Android開發中,大部分控件都有visibility這個屬性,其屬性有3個分別為“visible ”、“invisible”、“gone”。主要用來設置控制控件的顯
Android 自定義View 密碼框實例代碼
暴露您view中所有影響可見外觀的屬性或者行為。•通過XML添加和設置樣式•通過元素的屬性來控制其外觀和行為,支持和重要事件交流的事件監聽器詳細步
Android Intent 源碼學習
前言 這篇文章主要是介紹一下Android Intent,並且從Android源碼的角度對Intent查詢匹配過程進行分析。 Intent介紹 Intent的中文是&ld