private TextView txtMineCount;
private TextView txtTimer;
これは、 TextViewへの参照を保持できる 2 つのローカル変数を宣言します。最初は何も指していないので、それらを割り当てる必要があります。
txtMineCount = (TextView) findViewById(R.id.MineCount);
txtTimer = (TextView) findViewById(R.id.Timer);
ここでは、2 つの変数を割り当てます。フレームワークのメソッドを呼び出して、ID によって作成されたテキストベースのウィジェットを検索します。重要なことに、ここではこれらのウィジェットを作成していません。名前を付けるために使用するいくつかの ID 定数に対応する、既に割り当てられているオブジェクト インスタンスを見つけているだけです。
View.findViewById()が を返す可能性があるため、これらのルックアップが一般的なケースで成功すると仮定することは必ずしも「安全」ではありませんnull
。しかし、このコードを書いた人は、これらの特定の ID を持つ TextView オブジェクトがコードの別の場所で作成されていると想定しています。
(彼らがそれについて間違っている場合、書体をオンに設定しようとすると、txtMineCount
またはtxtTimer
単に例外が発生します...)
// set font style for timer and mine count to LCD style
Typeface lcdFont = Typeface.createFromAsset(getAssets(),
"fonts/lcd2mono.ttf");
Android には、システムに同梱されているデフォルトのフォントがいくつかあります。しかし、このプログラムは、アプリケーションのアセット (基本的には、アプリケーション バンドル内を移動する一連のファイル) のフォント サブディレクトリに埋め込まれているTrueType フォント ファイルを利用したいと考えています。これにより、そのファイルから TextView に適用するのに適した Typeface オブジェクトが作成されます。
txtMineCount.setTypeface(lcdFont);
txtTimer.setTypeface(lcdFont);
これは、2 つの TextView で使用される書体を上記のフォントに設定するだけです。
中間変数がなくても同等の効果が得られることに注意してください。このコードは、投稿したものと同じことを行う必要があります。
((TextView)findViewById(R.id.MineCount)).setTypeface(
Typeface.createFromAsset(getAssets(), "fonts/lcd2mono.ttf"));
((TextView)findViewById(R.id.Timer)).setTypeface(
Typeface.createFromAsset(getAssets(), "fonts/lcd2mono.ttf"));
しかし、このように読むのは難しく、中間結果を変数に保存しないと、その中間結果を何度も計算することになります。たとえば、Typeface.createFromAsset
このように記述すると、コードは同じパラメーターで 2 回実行されます。