Android 는 app 응용 다 중 언어 전환 기능 을 실현 합 니 다.
1.실현 되 는 효과
위 챗 과 유사 하 게 설정 인터페이스 에서 언어 를 전환 하 는 인 터 페 이 스 를 열 고,언어 를 선택 한 후 홈 액 티 비 티 를 다시 시작 하면 언어 전환 이 완료 되 며,다음 에 앱 을 다시 여 는 것 도 사용자 가 설정 한 언어 입 니 다.
2.실현 절차
1).다 중 언어 파일 추가
서로 다른 value 폴 더 에(예 를 들 어 value,value-en,values-zh-rtW 폴 더)서로 다른 언어의 string.xml 파일 을 추가 합 니 다.우리 의 프로젝트 는 영어,간 체 중국어,번 체 중국어 세 가지 언어 를 추 가 했 습 니 다.아래 그림 과 같 습 니 다.
그 중에서 영 어 는 번역 이 필요 합 니 다.번 체 가 전문 적 으로 번역 되 지 않 으 면 번 거 로 운 사 이 트 를 찾 아 간 체 중국 어 를 번 체 중국어 로 바 꿀 수 있 습 니 다.제 가 사용 하 는 이 사 이 트 는온라인 중국어 간 체 번 체.
2).Configuration 의 locale 속성 업데이트
Android 개발 자 홈 페이지 의 설명 을 참조 하여 Configuration 은 장치 의 모든 설정 정 보 를 포함 하고 있 으 며,이러한 설정 정 보 는 응용 프로그램 이 가 져 온 자원 에 영향 을 줄 수 있 습 니 다.예 를 들 어 string 자원 은 Configuration 의 locale 속성 에 따라 어떤 언어의 string 자원 을 가 져 가 야 하 는 지 판단 하 는 것 입 니 다.기본 값 은 value 폴 더 에 있 습 니 다.
주요 코드 는 다음 과 같 습 니 다.
Resources resources = getContext().getResources();
DisplayMetrics dm = resources.getDisplayMetrics();
Configuration config = resources.getConfiguration();
//
config.locale = Locale.ENGLISH;
resources.updateConfiguration(config, dm);
우 리 는 Locale 의 미리 설 정 된 값 Locale.ENGLISH,Locale.TRADITIONAL 을 사 용 했 습 니 다.CHINESE 와 Locale.SIMPLIFIEDCHINESE,설정 할 언어 에 미리 설 정 된 값 이 없다 면 Locale 대상 을 새로 만 들 고 구체 적 으로 자체 구 글 을 만 들 수 있 습 니 다. 주:시스템 설정 에 따라 Locale.getDefault()
3).HomeActivity 다시 시작
우리 앱 은 시작 페이지 인 WelcomeActivity 가 있 습 니 다.위 챗 과 같은 소인 시작 페이지 가 있 습 니 다.환영 페이지 에서 다시 시작 하면 좋 은 체험 이 아 닙 니 다.위 챗 의 언어 설정 과 같이 WelcomeActivity 에서 다시 시작 하 는 것 이 아니 라 홈 Activity 로 돌아 가 야 합 니 다.실현 도 간단 합 니 다.코드 는 다음 과 같 습 니 다.
Intent intent = new Intent(this, HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
getActivity().startActivity(intent);
일반적으로 이 코드 는 문제 가 없 을 것 입 니 다.그러나 만약 당신 의 App 에 어떤 activity 와 현재 설정 페이지 activity 가 task 스 택 에 없다 면(예 를 들 어 특정한 알림 페이지 에서 FLAG 를 사용 합 니 다.ACTIVITY_NEW_TASK 가 시작 하 는 액 티 비 티 하나)는 언어 설정 을 적용 하지 않 는 다.따라서 현재 App 의 프로 세 스 를 직접 죽 일 수 있 습 니 다.'전체'가 다시 시작 되 었 음 을 보증 합 니 다.
Intent intent = new Intent(this, HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
//
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
프로 세 스 의 두 줄 코드 를 한 줄 씩 죽 이면 되 지만 관련 자 료 를 찾 아 보 는 것 은 둘 다 추가 하 는 것 이 좋 습 니 다.상세 하 게 알 고 있 으 면 소통 을 환영 합 니 다.이 코드 는 사용자 정의 Activity OnCrash 오픈 소스 프로젝트 를 참고 하여 관심 이 있 는 것 은 이 오픈 소스 라 이브 러 리 에서 충돌 정 보 를 포착 하고 응용 부분의 코드 를 다시 시작 하 는 것 을 연구 할 수 있 습 니 다.개인 적 으로 이런 홈 액 티 비 티 를 재 개 하 는 방법 은 너무 거 칠 고 체험 이 좋 지 않다 고 생각 하지만 위 챗 도 홈 액 티 비 티 를 이렇게 재 개 한 것 같다.일반적인 언어 전환 설정 은 비교적 깊이 숨 어 있 습 니 다.예 를 들 어 위 챗 등 입 니 다.만약 에 한 사용자 가 핸드폰 조작 에 익숙 하지 않 거나 이 응용 프로그램 에 익숙 하지 않다 고 하면 실수 로 어떤 언어 를 바 꾸 었 는 지 모 르 고 홈 페이지 로 뛰 어 들 고 중국 어 를 다시 설정 하려 면 귀 찮 습 니 다.그래서 저 는 언어 를 자 르 고 바로 새로 고침 한 다음 에 현재 페이지 에 머 무 르 는 것 이 좋 겠 다 고 생각 합 니 다.구체 적 인 실현 은 다음 과 같다.
1.다 중 언어 파일 을 추가 하 는 것 이 위의 절차 1 과 같 습 니 다.
2.BaseActivity 에서 언어 전환 코드 구현:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
changeAppLanguage();
}
public void changeAppLanguage() {
String sta = Store.getLanuageIsChinese() ? "zh" : "en";// SharedPreferences , , ,
//
Locale myLocale = new Locale(sta);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
}
public void onEvent(String str) {
switch (str) {
case Constant.EVENT_REFRESH_LANGUAGE:
changeAppLanguage();
recreate();//
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
3.설정 인터페이스의 실현 은 자 연 스 럽 게 shared Preferences 의 설정 을 업데이트 한 다음 에 EventBus 를 보 내 면 됩 니 다.
if () {//
Store.setLanuageIsChinese(true);
} else if () {//
Store.setLanuageIsChinese(false);
}
EventBus.getDefault().post(Constant.EVENT_REFRESH_LANGUAGE);
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.