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