2012-04-18 88 views
-5

有人可以尝试为我解释这段代码吗?我不是很了解它,并且网络上无处可以解释它。我带了一本'Android开发傻瓜'的副本,它并没有真正帮助我。安卓系统 - 无法理解代码

private TextView txtMineCount; 
private TextView txtTimer; 
txtMineCount = (TextView) findViewById(R.id.MineCount); 
txtTimer = (TextView) findViewById(R.id.Timer); 

// set font style for timer and mine count to LCD style 
Typeface lcdFont = Typeface.createFromAsset(getAssets(), 
    "fonts/lcd2mono.ttf"); 
txtMineCount.setTypeface(lcdFont); 
txtTimer.setTypeface(lcdFont); 

在此先感谢你们。

+0

你的问题是什么?你不清楚哪部分是? – EboMike 2012-04-18 21:29:10

+1

你可能需要一本基本的Java书,真的。你没有得到什么? – kcoppock 2012-04-18 21:30:05

+0

我想我得到其他的线,但不知道这一个 字体lcdFont = Typeface.createFromAsset(getAssets(), “fonts/lcd2mono.ttf”); 我也不太明白为什么我会将txtMineCount设置为另一个textView(在layout Xml中定义)。我原以为我可以直接导入.ttf直接在XML文本视图...? – Dave 2012-04-18 21:43:44

回答

4
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对象。

(如果他们错了,然后试图设置字体上txtMineCounttxtTimer只会导致异常...)

// 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代码将使用相同的参数运行两次。

+1

优秀的答案。 :) – kcoppock 2012-04-18 21:55:02

+0

@kcoppock我的程序充满了难题,所以有时回答简单的问题是一个愉快的休息! – HostileFork 2012-04-18 22:07:17

2

我不知道你的问题是什么:txtMineCount和txtTimer:

  1. 你已经在你的.xml布局定义的一对夫妇的意见。

  2. 您正在使用findViewById()在运行时检索Textview实例。

  3. 您在运行时在两个视图中设置“字体”属性。

0

在我看来像一个扫雷克隆。它在做什么是创造“的TextView”(可能是一些对某个字体(在这种情况下dislpaying文本LCD的东西)的一个实例。还是你需要确切地知道什么样的每一行代码呢?