private TextView txtMineCount;
private TextView txtTimer;
объявляет две локальные переменные, которые могут содержать ссылки на TextView. Сначала они не указывают на что-нибудь ... так что вы должны назначить их.
txtMineCount = (TextView) findViewById(R.id.MineCount);
txtTimer = (TextView) findViewById(R.id.Timer);
Здесь мы относим две переменные. мы называем метод чтобы сделать поиск среди текстовых виджетов, созданных с помощью идентификатора. Важно, что мы не создаем эти виджеты здесь. Мы просто находим alre ady-выделенные объекты, которые соответствуют некоторым константам ID, которые мы используем для их имени.
Не обязательно «безопасно» предполагать, что эти поиски преуспевают в общем случае, потому что View.findViewById() может вернуть null
. Но тот, кто написал этот код, предполагает, что на самом деле были объекты 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, который был встроен в подкаталог шрифта ресурсов приложения (в основном это куча файлов, которые перемещаются внутри вашего пакета приложений). Это создает объект Typeface, подходящий для применения к TextView из этого файла.
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
Наверное, вам нужна базовая книга Java. Что конкретно вы не получаете? – kcoppock
Я думаю, что получаю другие строки, но не знаю об этом Typeface lcdFont = Typeface.createFromAsset (getAssets(), "fonts/lcd2mono.ttf"); Я также не понимаю, почему я бы установил txtMineCount в другой textView (определенный в макете Xml). Я бы подумал, что могу просто импортировать .ttf прямо в textview в xml ...? – Dave