private TextView txtMineCount;
private TextView txtTimer;
該聲明可以保存到TextView引用兩個局部變量。起初,所以你必須給它們分配不指向任何東西...。
txtMineCount = (TextView) findViewById(R.id.MineCount);
txtTimer = (TextView) findViewById(R.id.Timer);
這裏我們給這兩個變量,我們稱之爲的方法這個框架在基於文本的小部件之間進行查找,這些小部件由ID創建,重要的是我們不在這裏創建這些小部件,我們只是找到了alre ady分配的對象實例,它們對應於我們用來命名它們的一些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 Font File(基本上是一束在應用程序包內部傳播的文件)。這會創建一個適用於將TextView應用於該文件的Typeface對象。
txtMineCount.setTypeface(lcdFont);
txtTimer.setTypeface(lcdFont);
這只是簡單地將兩個TextViews使用的字體設置爲上面的字體。
請注意,您可以在沒有中間變量的情況下獲得等效的效果。此代碼應該做同樣的事情,你什麼發佈:
((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
代碼將使用相同的參數運行兩次。
你的問題是什麼?你不清楚哪部分是? – EboMike 2012-04-18 21:29:10
你可能需要一本基本的Java書,真的。你沒有得到什麼? – kcoppock 2012-04-18 21:30:05
我想我得到其他的線,但不知道這一個 字體lcdFont = Typeface.createFromAsset(getAssets(), 「fonts/lcd2mono.ttf」); 我也不太明白爲什麼我會將txtMineCount設置爲另一個textView(在layout Xml中定義)。我原以爲我可以直接導入.ttf直接在XML文本視圖...? – Dave 2012-04-18 21:43:44