こんにちは、まっさん(@Tera_Msaki)です。
この記事はAndroidスマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Javaでの開発経験、XML構文規則、Androidのアプリ開発経験がある方を対象としています。
Androidのアプリ開発でお役にたててれば、嬉しいです。
(これからAndroidのアプリ開発やJavaでの開発を始めたい方への案内は、記事の最後で紹介します)
愛用品をご紹介♪
材質や厚みによって、熱の入り方が変わります。
このフライパンを使うと、
熱の入り方が違うことが、調理した料理の味で実感できます。
油慣らしと調理前の油返しが必要ですが、
育てる鉄フライパンは一生モノです♪
◎テーマ
スマホに設定しているデフォルト言語以外の言語リソースファイルをハンドリングする。
◎ポイント
Andoridアプリの開発で、多言語対応する場合、言語毎にリソースファイルを作成すると思います。
スマホに設定された言語(デフォルト言語)に応じて、リソースを選択してくれますが、デフォルト言語以外の言語リソースにアクセスできません。
デフォルト言語以外の言語リソースにアクセスするためには、アクセスしたい言語でコンテキストを生成し、生成したコンテキストからリソースファイルにアクセスすることで、デフォルト言語以外のリソースをハンドリングすることが可能になります。
走行データの一覧に英語表記(Date、Speed、Record)と日本語表記(日付、最高速、記録)が混在しています。
一覧の表示で区切り文字(デリミタ)を使用して、文字列を分解していますが、デフォルト言語が日本語の場合に、文字列に英語表記があると分解が上手く機能しません。
◎指定した言語でコンテキストを生成する
:
// 他言語リソース取得 //
public Context createLocalizedContext(Locale locale) {
Configuration configuration = new Configuration(getResources().getConfiguration());
configuration.setLocales(new LocaleList(locale));
return createConfigurationContext(configuration);
}
:
◎言語リソースファイル(strings.xml)
:
<string name="delimiter1">Date:</string>
<string name="delimiter2">Speed:</string>
:
◎言語リソースファイル(strings.xml( ja ))
:
<string name="delimiter1">日付:</string>
<string name="delimiter2">最高速:</string>
:
◎デフォルト言語以外のリソースをハンドリング
デフォルト言語のデリミタを使用して文字列を分解して、分解できない場合に別の言語リソースのデリミタを使用して、文字列を分解しています。
:
@Override
public void onBindView(View view, Object data, int position) {
TextView textView = view.findViewById(R.id.text_item);
String[] string = {"", "", ""};
string[0] = motionList.get(position).getTitle().substring(0, Math.max(motionList.get(position).getTitle().indexOf(getString(R.string.delimiter1)), 0));
if (string[0].length() > 0) {
string[1] = motionList.get(position).getTitle().substring(Math.max(motionList.get(position).getTitle().indexOf(getString(R.string.delimiter1)), 0),
Math.max(motionList.get(position).getTitle().indexOf(getString(R.string.delimiter2)), 0));
string[2] = motionList.get(position).getTitle().substring(Math.max(motionList.get(position).getTitle().indexOf(getString(R.string.delimiter2)), 0));
} else {
Context local = createLocalizedContext(new Locale(Locale.getDefault().getLanguage().equals("ja") ? "en" : "ja"));
string[0] = motionList.get(position).getTitle().substring(0, Math.max(motionList.get(position).getTitle().indexOf(local.getString(R.string.delimiter1)), 0));
string[1] = motionList.get(position).getTitle().substring(Math.max(motionList.get(position).getTitle().indexOf(local.getString(R.string.delimiter1)), 0),
Math.max(motionList.get(position).getTitle().indexOf(local.getString(R.string.delimiter2)), 0));
string[2] = motionList.get(position).getTitle().substring(Math.max(motionList.get(position).getTitle().indexOf(local.getString(R.string.delimiter2)), 0));
}
textView.setText(HtmlCompat.fromHtml(String.format("<b><u><big>%s</big></u></b><br>%s<br>%s", string[0], string[1], string[2]), FROM_HTML_MODE_COMPACT));
}
:
これからAndroidのアプリ開発やJavaでの開発を始めたい方へ
アプリケーション開発経験がない方や、アプリケーション開発経験がある方でも、Java や C# などのオブジェクト指向言語が初めての方は、Android のアプリ開発ができるようになるには、かなりの時間がかかります。オンラインスクールでの習得を、強くおススメします。
副業でアプリケーション開発と考えているなら、おススメです。
無料説明会に参加して、話を聞くだけでもためになるよ♪
未経験者からシステムエンジニアを目指すのに最適かと、
まずは無料相談から♪
未経験者からプログラマーを目指すのに最適かと、
まずは無料カウンセリングから♪
カリキュラムとサポートがしっかりしています、
お得なキャンペーンとかいろいろやっています♪
ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適かと、
まずは無料オンライン相談から♪
参考になったら、💛をポッチとしてね♪