1 00:00:00,000 --> 00:00:02,610 [Powered by Google Translate] [Семинары] [Android программы и приложения (Теперь с Jelly Beans!)] 2 00:00:02,610 --> 00:00:04,210 [Иордании Jozwiak] [Гарвардский университет] 3 00:00:04,210 --> 00:00:06,780 [Это CS50.] [CS50.TV] 4 00:00:06,780 --> 00:00:11,600 >> Привет всем, и добро пожаловать в Android программы и приложения (Теперь с Jelly Beans!) Семинар. 5 00:00:11,600 --> 00:00:14,530 Она называется Теперь с драже, конечно, потому что 6 00:00:14,530 --> 00:00:17,310 последняя версия ОС называется Jelly Bean. 7 00:00:17,310 --> 00:00:22,950 Когда я говорил о Android в прошлом году и сделал это в основном же семинаре 8 00:00:22,950 --> 00:00:29,150 Я представлял шаблонов проектирования и стилистических вариантов для Gingerbread, 9 00:00:29,150 --> 00:00:31,250 хотя Сэндвич Мороженое вышли в то время, 10 00:00:31,250 --> 00:00:33,680 и это то, что мы будем говорить о будущем немного. 11 00:00:33,680 --> 00:00:35,720 Android, конечно, есть некоторые проблемы с фрагментацией, 12 00:00:35,720 --> 00:00:40,240 поэтому последние Google операционной системы, как правило 13 00:00:40,240 --> 00:00:44,710 на самом деле не собирался стать распространены среди пользователей для потенциально до одного года, к сожалению. 14 00:00:44,710 --> 00:00:49,960 >> Но учета того, что, мы будем говорить о много причин, почему 15 00:00:49,960 --> 00:00:53,000 Android гораздо лучше, чем IOS. 16 00:00:53,000 --> 00:00:56,410 Ладно, мы поговорим об Android против IOS, 17 00:00:56,410 --> 00:00:59,770 Дизайн некоторых парадигм, как вы будете получить создан только в одном слайде, 18 00:00:59,770 --> 00:01:03,410 и большая разница между этим и прошлым годом я просто хочу 19 00:01:03,410 --> 00:01:06,860 зум через некоторые концептуальные вещи работая с 20 00:01:06,860 --> 00:01:09,950 операционной системы, а затем перейти в действительно простой пример. 21 00:01:09,950 --> 00:01:13,730 В самом деле, просто пример, который описывает Google для создания первого приложения 22 00:01:13,730 --> 00:01:17,070 и мы пройдем его вместе, и просто описать. 23 00:01:17,070 --> 00:01:22,100 >> Я знаю, многие из вас только закодированы в C, так что Java уже будет 24 00:01:22,100 --> 00:01:27,220 другой точки зрения, и таким образом вы будете получить ваши ноги мокрые 25 00:01:27,220 --> 00:01:31,540 и чувствовать себя немного более комфортно с ним, мы надеемся. 26 00:01:31,540 --> 00:01:35,330 Краткий обзор, Android против IOS. 27 00:01:35,330 --> 00:01:39,200 В Android есть это одноразовый разработчик сбор в размере $ 25, 28 00:01:39,200 --> 00:01:42,390 Ни один из этой вещи $ 100 в год. 29 00:01:42,390 --> 00:01:45,440 Там нет никаких ограничений, что означает, что если я хочу, чтобы представить приложения, 30 00:01:45,440 --> 00:01:51,560 Я просто представить его, и нет никакого процесса утверждения, что есть для IOS. 31 00:01:51,560 --> 00:01:53,890 Вы добираетесь, чтобы развиваться с Java Использование Eclipse, 32 00:01:53,890 --> 00:01:57,090 которая является кросс-платформенный, так что это не имеет значения, если у вас есть Mac, 33 00:01:57,090 --> 00:01:59,600 Окна, или некоторые Linux машины. 34 00:01:59,600 --> 00:02:03,730 Конечно, с прошивкой вы должны использовать XCode на Mac, 35 00:02:03,730 --> 00:02:06,930 Android и используется гораздо больше людей, 36 00:02:06,930 --> 00:02:11,580 так что если вы хотите, чтобы ваши приложения, чтобы иметь какую-то видимость или, возможно, 37 00:02:11,580 --> 00:02:14,110 заработать немного денег от рекламы 38 00:02:14,110 --> 00:02:17,450 Вы, вероятно, больше всего выиграют от Android. 39 00:02:17,450 --> 00:02:20,630 >> И одна вещь, которая всегда была известна о Android 40 00:02:20,630 --> 00:02:25,100 является крайняя количество настройки, тогда как IOS очень зафиксированы в их пути 41 00:02:25,100 --> 00:02:29,380 так, что они могут поддерживать безопасность и контроль над каждым аспектом мало 42 00:02:29,380 --> 00:02:34,180 конструкции в рамках своей операционной системы и отдельных приложений. 43 00:02:34,180 --> 00:02:40,180 Android очень свободной форме, и есть еще много возможностей. 44 00:02:40,180 --> 00:02:42,530 Хорошо, некоторые конструктивные парадигм. 45 00:02:42,530 --> 00:02:49,600 Обратите внимание, здесь так же, как IOS имеет таблеток и iPhone'ов и док штрихи 46 00:02:49,600 --> 00:02:53,840 они должны поддерживать, скажем, как десятка устройств, если вы хотите поддерживать 47 00:02:53,840 --> 00:02:55,450 исторические вещи. 48 00:02:55,450 --> 00:02:58,410 С Android вы должны поддерживать сотни устройств, 49 00:02:58,410 --> 00:03:01,240 так что есть некоторые вещи, которые Google пытается реализовать 50 00:03:01,240 --> 00:03:04,970 чтобы сделать работу пользователей немного более последовательную, 51 00:03:04,970 --> 00:03:08,560 но мы также поговорим о том, как это означает, что есть проблемы фрагментации 52 00:03:08,560 --> 00:03:11,700 что вы постоянно должны быть в курсе поддержки. 53 00:03:11,700 --> 00:03:16,140 Дробление означает, что существует много различных операционных систем 54 00:03:16,140 --> 00:03:20,330 много различных телефонов с различными оборудования под управлением Android все в то же время, 55 00:03:20,330 --> 00:03:29,680 так что это граф здесь восходит в течение 6 месяцев. 56 00:03:29,680 --> 00:03:36,460 Да, 6 месяцев, и вы можете увидеть, как самая темная полоса 57 00:03:36,460 --> 00:03:39,330 на дно Jelly Bean, который вышел в течение лета, 58 00:03:39,330 --> 00:03:42,970 и вы можете увидеть прямо сейчас, вероятно, около 2% телефонов есть. 59 00:03:42,970 --> 00:03:45,520 >> Сэндвич Мороженое вышел более года назад, 60 00:03:45,520 --> 00:03:47,770 и четверть телефонов есть. 61 00:03:47,770 --> 00:03:53,910 Есть еще много телефонов, использующих версию операционной системы от несколько лет назад. 62 00:03:53,910 --> 00:03:57,820 Одна вещь, которую Google пыталась сделать, чтобы сделать работу пользователей 63 00:03:57,820 --> 00:04:01,400 много более единообразным приложения начинается с сотовым, 64 00:04:01,400 --> 00:04:04,320 которая является планшетной версии, то Ice Cream Sandwich, и Jelly Bean, 65 00:04:04,320 --> 00:04:06,750 они действительно пытаются подчеркнуть использование этой панели действий, 66 00:04:06,750 --> 00:04:10,430 которых является то, что вы можете видеть в верхней здесь, 67 00:04:10,430 --> 00:04:14,730 все прямо здесь, в том числе эта маленькая кнопка настройки. 68 00:04:14,730 --> 00:04:16,079 Это выбор дизайна. 69 00:04:16,079 --> 00:04:18,000 Теперь, когда вы видите 3 точки это означает, нажмите на эту, 70 00:04:18,000 --> 00:04:21,880 и там будет выпадающее меню, в котором есть какая-то настройки. 71 00:04:21,880 --> 00:04:28,900 Это только показывает, потому что я нажал на эту кнопку. 72 00:04:28,900 --> 00:04:32,040 Это то, что они пытаются использовать, чтобы сделать приложения немного более последовательными 73 00:04:32,040 --> 00:04:39,210 по всем направлениям и, так что пользователь имеет лучшую смысле равномерной опыта. 74 00:04:39,210 --> 00:04:42,640 >> Итак, в случае, если вы этого не сделали, или если вы наблюдаете у себя дома 75 00:04:42,640 --> 00:04:50,210 , то вы можете выполнить следующие действия, чтобы настроить среду кодирования. 76 00:04:50,210 --> 00:04:52,630 В нем примут участие, перейдя на сайт здесь. 77 00:04:52,630 --> 00:04:56,260 Вы можете установить Google Android SDK 78 00:04:56,260 --> 00:04:59,130 и следуйте некоторым описаниям там. 79 00:04:59,130 --> 00:05:01,310 Они говорят вам все. 80 00:05:01,310 --> 00:05:05,160 Они имеют установки SDK, скачать Затмение Классическая версия, 81 00:05:05,160 --> 00:05:07,450 хотя, конечно, мы кодирования в Java. 82 00:05:07,450 --> 00:05:12,190 Они рекомендуют, это одно, а то эта ADT, Android Development Tools, 83 00:05:12,190 --> 00:05:17,300 это плагин, который вы устанавливаете в Eclipse, который позволяет 84 00:05:17,300 --> 00:05:20,550 имеют гораздо более рациональный опыт работы с Android в Eclipse. 85 00:05:20,550 --> 00:05:24,070 Это даст вам некоторые графические пользовательские интерфейсы 86 00:05:24,070 --> 00:05:29,610 для проектирования взгляды, и это даст вам гораздо больше поддержки 87 00:05:29,610 --> 00:05:34,840 и возможность запуска с помощью эмулятора и все такое подобное. 88 00:05:34,840 --> 00:05:36,090 Применение базы. 89 00:05:36,090 --> 00:05:41,590 >> Я хочу поговорить о том, как проекты в рамках Android структурированы, 90 00:05:41,590 --> 00:05:44,830 и потом мы поедем в небольшой пример, и, надеюсь, 91 00:05:44,830 --> 00:05:48,820 Вы можете задать вопросы в любой момент и чувствовать себя комфортно в конце его. 92 00:05:48,820 --> 00:05:50,090 У нас есть некоторые жаргона первым. 93 00:05:50,090 --> 00:05:55,330 Деятельности, как на экране вы видите, когда вы запускаете приложение. 94 00:05:55,330 --> 00:05:57,840 Весь опыт является самой деятельности, 95 00:05:57,840 --> 00:06:00,790 так что вы можете думать об этом как экран или зрения, 96 00:06:00,790 --> 00:06:04,540 но на самом деле стороны исходный код его. 97 00:06:04,540 --> 00:06:12,680 Мы до сих пор называют фактическим интерфейсную часть его зрения. 98 00:06:12,680 --> 00:06:17,230 Это вроде как в PSET 7 у нас была контроллера, а затем вид. 99 00:06:17,230 --> 00:06:20,690 Деятельность является более или менее контроллера 100 00:06:20,690 --> 00:06:23,360 и вид, что мы делаем с точки зрения XML 101 00:06:23,360 --> 00:06:25,260 , связанный с этой активности. 102 00:06:25,260 --> 00:06:29,340 Фрагменты являются чем-то, что реализовано в сэндвич Мороженое идти вперед. 103 00:06:29,340 --> 00:06:36,380 Это просто идея принимать часть вида или активность 104 00:06:36,380 --> 00:06:39,990 и разделить их на отдельные участки, чтобы мы могли 105 00:06:39,990 --> 00:06:45,030 сделать наш код более удобным для этих много различных устройств 106 00:06:45,030 --> 00:06:51,890 что мы должны поддерживать, а это всего лишь способ попытаться 107 00:06:51,890 --> 00:06:54,290 также фактор больше кода. 108 00:06:54,290 --> 00:07:01,090 Услуги являются фоновыми вещи, как воспроизведение музыки или навигационные указания потенциально. 109 00:07:01,090 --> 00:07:05,640 Поставщики контента, эти интерфейсы в операционной системе 110 00:07:05,640 --> 00:07:09,070 , что позволяет получить доступ к общим данным, такие как контактная информация, 111 00:07:09,070 --> 00:07:12,790 а затем намерение то, что мы будем использовать, когда мы хотим начать 112 00:07:12,790 --> 00:07:17,210 Новые действия в нашей текущей деятельности. 113 00:07:17,210 --> 00:07:20,980 >> Hello Android, это будет проект, который мы будем говорить о. 114 00:07:20,980 --> 00:07:25,410 Я на самом деле сделать это за вас, и тогда мы будем делать вещи, где мы нажмите кнопку 115 00:07:25,410 --> 00:07:27,650 с текстом и начать новую деятельность. 116 00:07:27,650 --> 00:07:30,110 Очень просто, но я хочу, чтобы пройти 117 00:07:30,110 --> 00:07:34,480 то, что будет идти в таком проекте. 118 00:07:34,480 --> 00:07:39,260 Когда вы делаете новый проект вы увидите в Затмение 119 00:07:39,260 --> 00:07:41,900 есть этот проект под названием Hello Android. 120 00:07:41,900 --> 00:07:43,470 Кроме того, есть целая куча папок здесь. 121 00:07:43,470 --> 00:07:46,760 Те, что вы на самом деле связаны с являются исходной папке, 122 00:07:46,760 --> 00:07:54,540 Папка ресурсов, ВИЭ, и в некоторой степени библиотеки папки для библиотек. 123 00:07:54,540 --> 00:08:00,070 И именно так, мы находимся на той же странице, что с 124 00:08:00,070 --> 00:08:03,240 если вы должны были создать новый проект, 125 00:08:03,240 --> 00:08:08,270 Вы можете сделать это прямо здесь, так что если я хочу назвать его HelloAndroid, 126 00:08:08,270 --> 00:08:11,100 а затем автоматически делает целая куча информации для нас. 127 00:08:11,100 --> 00:08:14,110 Имя пакета должно быть уникальным идентификатором 128 00:08:14,110 --> 00:08:16,710 , которые обычно связаны с веб-сайта, если у вас один. 129 00:08:16,710 --> 00:08:24,430 >> Например, я буду называть этот net.cs50.helloandroid. 130 00:08:24,430 --> 00:08:30,070 И я уже сделал этот проект один раз. 131 00:08:30,070 --> 00:08:40,059 Ладно, извините. Давайте назовем это HelloCS50. 132 00:08:40,059 --> 00:08:42,929 И тогда он будет просить такие вещи, как то, что своего рода иконой мы хотим сделать. 133 00:08:42,929 --> 00:08:48,840 Это все потому, что интерфейс Android Developer Tools, 134 00:08:48,840 --> 00:08:53,350 плагин, который мы добавили к Затмение, поэтому мы можем выбрать вещи, как 135 00:08:53,350 --> 00:08:58,320 какая иконка мы хотим, и что будет идти в глубину, что, если мы хотим. 136 00:08:58,320 --> 00:09:04,360 Но в конце концов, просто убедитесь, проекта, 137 00:09:04,360 --> 00:09:07,040 и все показывает прямо здесь. 138 00:09:07,040 --> 00:09:10,030 Как я уже показал, на другом экране, 139 00:09:10,030 --> 00:09:14,070 у нас есть исходная папка, и я буду говорить о том, что все это означает, скорее, 140 00:09:14,070 --> 00:09:19,090 но вы можете видеть, что сразу это ведет нас к HelloCS50 экрана. 141 00:09:19,090 --> 00:09:24,690 Есть некоторые кнопки здесь для добавления макетов текста и текстового поля. 142 00:09:24,690 --> 00:09:28,910 Это вроде как XCode, но к сожалению не столь упорядочена. 143 00:09:28,910 --> 00:09:37,790 Но клипы будут вашим другом и ADT в частности для этого. 144 00:09:37,790 --> 00:09:40,920 >> Хорошо, исходную папку, где 145 00:09:40,920 --> 00:09:43,820 Java файлы проводятся, и это на самом деле запуск вашей программы. 146 00:09:43,820 --> 00:09:45,990 Это в основном как контроллеры. 147 00:09:45,990 --> 00:09:49,020 Ресурс или папку RES, где мы будем держать экран макеты, 148 00:09:49,020 --> 00:09:54,110 изображения, звуки, текст, анимацию и все остальное, библиотеки, очевидно, библиотек. 149 00:09:54,110 --> 00:10:01,700 И манифест, это образом, что система Android знает 150 00:10:01,700 --> 00:10:03,130 как взаимодействовать с вашим приложением. 151 00:10:03,130 --> 00:10:07,980 Сообщает ей о разрешениях и какие мероприятия на самом деле будет работать. 152 00:10:07,980 --> 00:10:12,350 Это всю необходимую информацию, что необходимо для запуска вашего приложения. 153 00:10:12,350 --> 00:10:17,990 Папка с исходными файлами, если мы расширяем его, как вы можете увидеть прямо здесь. 154 00:10:17,990 --> 00:10:23,920 И пример того, что код будет выглядеть-это код по умолчанию. 155 00:10:23,920 --> 00:10:27,930 Как мы называли его, MainActivity. 156 00:10:27,930 --> 00:10:33,230 По умолчанию, мы получаем OnCreate, которая является функцией, которая вызывается, когда эта деятельность нагрузках, 157 00:10:33,230 --> 00:10:37,150 так что вы хотите позвонить OnCreate (savedInstanceState). 158 00:10:37,150 --> 00:10:40,440 Это позволит восстановить любой бит информации 159 00:10:40,440 --> 00:10:44,910 В случае, если приложение было приостановлено. 160 00:10:44,910 --> 00:10:48,790 >> Там целый цикл жизнедеятельности графике которого вы можете посмотреть на 161 00:10:48,790 --> 00:10:50,380 когда вы получаете немного более углубленный в нем, 162 00:10:50,380 --> 00:10:56,210 но самая важная строка кода есть эта функция setContentView 163 00:10:56,210 --> 00:11:00,290 который будет загружать файл ресурса для макета. 164 00:11:00,290 --> 00:11:03,590 Тогда что OnCreate здесь в основном делают это говорит 165 00:11:03,590 --> 00:11:07,010 когда я создаю эту деятельность я хочу загрузить этот макет. 166 00:11:07,010 --> 00:11:12,030 И мы будем говорить о том, что раскладка клавиатуры в секунду. 167 00:11:12,030 --> 00:11:16,230 Если бы мы должны были запустить, что вот она выглядит точно так же, как это, 168 00:11:16,230 --> 00:11:22,880 и по умолчанию, потому что мы делаем это в Eclipse и ADT делаю это для нас 169 00:11:22,880 --> 00:11:28,210 это все шаблонного кода, который создается для нас, 170 00:11:28,210 --> 00:11:34,630 и мы можем двигаться дальше и изменить положение вещей, как нам нравится. 171 00:11:34,630 --> 00:11:38,190 Папка ресурсов, как я сказал, это то, где мы проводим все макеты, 172 00:11:38,190 --> 00:11:41,150 вводимого коэффициента с точки зрения любого рода образов- 173 00:11:41,150 --> 00:11:46,360 они называются вводимого коэффициента, а потом звуковые файлы, меню. 174 00:11:46,360 --> 00:11:51,170 Это способ целую кучу XML в хорошем отсортированный моды. 175 00:11:51,170 --> 00:11:58,030 Как видите, есть. HDPI, ldpi, MDPI xhdpi и папки для вводимого коэффициента. 176 00:11:58,030 --> 00:12:02,220 Эти различные плотности экрана, так высокую плотность пикселей на дюйм 177 00:12:02,220 --> 00:12:05,710 низкой плотности, средней плотности, дополнительные высокой плотности. 178 00:12:05,710 --> 00:12:08,900 >> Это, опять же, так что мы можем поддерживать все эти различные устройства, 179 00:12:08,900 --> 00:12:15,100 и, в идеале, вы будете иметь различные изображения для каждого разным разрешением. 180 00:12:15,100 --> 00:12:20,740 Макеты, где мы включаем все различные макеты, которые будут использоваться в различных видах деятельности. 181 00:12:20,740 --> 00:12:24,150 Они могли бы также включать макеты фрагментов, 182 00:12:24,150 --> 00:12:26,670 что означает частичную деятельности в принципе. 183 00:12:26,670 --> 00:12:29,610 Если вы хотите сделать что-то крутое, как всякий раз, когда вы поворачиваете телефон 184 00:12:29,610 --> 00:12:33,900 Вы хотите, чтобы иметь различное расположение вы можете сделать макет ландшафта в другой папке, 185 00:12:33,900 --> 00:12:39,000 Android автоматически и имеет целую кучу этих правил в папку ресурсов, 186 00:12:39,000 --> 00:12:44,690 поэтому он будет знать, чтобы посмотреть на различные папки на основе текущей настройки телефона, 187 00:12:44,690 --> 00:12:46,740 какие аппаратные вы используете. 188 00:12:46,740 --> 00:12:52,350 Кроме того, это значение здесь-V11 и V14-значения 189 00:12:52,350 --> 00:12:55,460 и значения по умолчанию папка это для- 190 00:12:55,460 --> 00:13:01,730 Ну, значения само по себе, это будет значение по умолчанию во всех версиях операционной системы. 191 00:13:01,730 --> 00:13:06,390 С другой стороны, v11 и v14 соответствует сотовые 192 00:13:06,390 --> 00:13:08,780 и Ice Cream Sandwich, соответственно. 193 00:13:08,780 --> 00:13:12,800 Опять же, эти способы, которые-в этих папках разные строки 194 00:13:12,800 --> 00:13:17,550 и стилей, так что вы можете настроить внешний вид вашего приложения 195 00:13:17,550 --> 00:13:22,660 или потенциально даже его функциональности, хотя это, вероятно, будет плохой идеей, 196 00:13:22,660 --> 00:13:25,890 на основе версии операционной системы. 197 00:13:25,890 --> 00:13:28,760 >> И я говорил обо всем этом здесь. 198 00:13:28,760 --> 00:13:35,870 Опять же, холст, сырье, верстка, ценностей. 199 00:13:35,870 --> 00:13:41,380 По умолчанию, если мы идем в Hello Android CS50 или привет прямо сейчас 200 00:13:41,380 --> 00:13:43,310 она будет выглядеть именно так. 201 00:13:43,310 --> 00:13:45,800 Она скажет привет мир. 202 00:13:45,800 --> 00:13:58,430 Как вы можете видеть прямо здесь с текстом Android 203 00:13:58,430 --> 00:14:04,420 текст этого текста зрения, которая в основном только этикеткой, 204 00:14:04,420 --> 00:14:06,900 то, что мы назвали бы это в IOS. 205 00:14:06,900 --> 00:14:11,580 Он имеет обозначение этой забавной @ строки / hello_world. 206 00:14:11,580 --> 00:14:16,200 Это так, мы можем-мы попытаемся извлечь все строки, 207 00:14:16,200 --> 00:14:19,740 все жестко-закодированных строк в Android в отдельную папку, 208 00:14:19,740 --> 00:14:23,610 который бывает в values.strings. 209 00:14:23,610 --> 00:14:29,300 Если мы посмотрим здесь, мы видим, что у нас есть жестко-закодированных строк сохранены здесь 210 00:14:29,300 --> 00:14:33,910 для привет мир, и это называется привет мир, и это является своего рода 211 00:14:33,910 --> 00:14:39,230 общее решение дизайна на многих платформах, что вы хотите- 212 00:14:39,230 --> 00:14:41,780 строки вида вещей, которые мы хотим быть потенциально в состоянии изменить. 213 00:14:41,780 --> 00:14:48,050 Мы не хотим контролировать F в нашем файле с исходным кодом в нашем XML. 214 00:14:48,050 --> 00:14:50,760 Мы хотим, чтобы иметь возможность изменить это всякий раз, когда мы получаем шанс. 215 00:14:50,760 --> 00:14:53,640 >> Этот файл XML, strings.xml, является способ извлечения 216 00:14:53,640 --> 00:14:56,710 жестко-закодированных строк, что бы в противном случае наши ресурсы макета 217 00:14:56,710 --> 00:15:03,530 или в нашем исходном коде. 218 00:15:03,530 --> 00:15:08,190 Манифест где мы держим эту важную информацию о приложении. 219 00:15:08,190 --> 00:15:11,050 Она включает в себя имя пакета. Это должно быть уникальным идентификатором. 220 00:15:11,050 --> 00:15:16,020 В отличие от App Store для IOS названия приложений 221 00:15:16,020 --> 00:15:19,980 Не должно быть уникальным, и вы можете на самом деле изменить имя вашего приложения 222 00:15:19,980 --> 00:15:23,570 после отправки, так что если я начинаю с Angry Birds, 223 00:15:23,570 --> 00:15:26,840 а потом я сделать обновление, и я не хочу, чтобы выпустить новую версию 224 00:15:26,840 --> 00:15:34,230 Думаю, я мог назвать это Angry Birds 2, пока я в тот же цикл выпуска. 225 00:15:34,230 --> 00:15:36,780 Было бы просто показать как обновление. 226 00:15:36,780 --> 00:15:39,790 Единственное, что должен быть уникальным, это имя пакета, 227 00:15:39,790 --> 00:15:41,280 которых не так много людей увидят. 228 00:15:41,280 --> 00:15:44,680 Ну, вы только посмотреть, если вы смотрели на исходный код или, если есть какая-то ошибка. 229 00:15:44,680 --> 00:15:47,580 Компоненты включают в себя мероприятия, поэтому мы должны объявить 230 00:15:47,580 --> 00:15:49,070 любого рода деятельности мы используем. 231 00:15:49,070 --> 00:15:53,430 Это разрешение рода вещи. 232 00:15:53,460 --> 00:15:58,150 >> Потому что Android не имеет такой строгий процесс приложения 233 00:15:58,150 --> 00:16:02,210 представления приложения вместо этого они просто делают все основаны от разрешений 234 00:16:02,210 --> 00:16:04,300 и объявить вещей в манифесте. 235 00:16:04,300 --> 00:16:06,380 Версия SDK, также важно. 236 00:16:06,380 --> 00:16:10,330 Мы можем установить использование в качестве версии SDK что-то минимума. 237 00:16:10,330 --> 00:16:16,010 Очевидно, что вы хотите создать код 238 00:16:16,010 --> 00:16:18,570 и дизайн для новых операционных системах. 239 00:16:18,570 --> 00:16:20,840 Возможно, не самое новое, может быть, не Jelly Bean. 240 00:16:20,840 --> 00:16:23,610 Может быть, вы хотите, чтобы дизайн в первую очередь для Ice Cream Sandwich, 241 00:16:23,610 --> 00:16:27,120 хотя они в значительной степени то же самое с точки зрения проектных решений 242 00:16:27,120 --> 00:16:30,550 и фактической библиотек и API. 243 00:16:30,550 --> 00:16:36,250 Но вместо того, есть люди, 244 00:16:36,250 --> 00:16:40,050 оригинальной версии Android, как обратный путь, когда Donut- 245 00:16:40,050 --> 00:16:43,420 которые до сих пор, случается, используют, которые пытаются загрузить приложение, а затем сказать 246 00:16:43,420 --> 00:16:46,160 он не работает на моем телефоне можно установить минимальную версию 247 00:16:46,160 --> 00:16:48,620 и это будет пряник или Ice Cream Sandwich 248 00:16:48,620 --> 00:16:53,300 или что вы чувствовали себя комфортно отправкой. 249 00:16:53,300 --> 00:16:57,170 И это пример манифест. Мы можем посмотреть на фактическую в немного. 250 00:16:57,170 --> 00:17:00,900 >> Хорошо, мы просто пойдем вперед с демо-версию сейчас. 251 00:17:00,900 --> 00:17:08,900 Это демо, если вы Google Android построить свой Первое приложение или что-то вроде этого. 252 00:17:08,900 --> 00:17:12,089 Мы рассмотрим все, что там происходит, 253 00:17:12,089 --> 00:17:17,690 и жаль, просто для справки кто тут знает Java в какой-то степени? 254 00:17:17,690 --> 00:17:28,310 Итак, новая Java кодирования языка для большинства людей, выходящих из CS50. 255 00:17:28,310 --> 00:17:31,850 Вкратце, чтобы пойти снова, что здесь написано, 256 00:17:31,850 --> 00:17:35,580 то, что мы хотим сделать, это вместо корректировки этого приложения Hello мире 257 00:17:35,580 --> 00:17:38,620 что все она делает это он запускает и он говорит, привет мир 258 00:17:38,620 --> 00:17:43,580 и он говорит, привет CS50 в верхней, потому что это имя операции 259 00:17:43,580 --> 00:17:47,190 мы собираемся попытаться сделать текстовое поле и кнопку 260 00:17:47,190 --> 00:17:50,680 так что, когда мы нажимаем эту кнопку она примет текст 261 00:17:50,680 --> 00:17:53,660 из текстового поля и начать новую деятельность, и он будет говорить 262 00:17:53,660 --> 00:17:58,380 что бы это ни текстом сказал в своей деятельности, и это относительно просто. 263 00:17:58,380 --> 00:18:00,650 Это не очень интересно. Вы не хотели бы, чтобы освободить любое приложение, как это. 264 00:18:00,650 --> 00:18:03,880 Но он демонстрирует некоторые важные вещи, дизайна. 265 00:18:03,880 --> 00:18:07,030 >> Мы должны взаимодействовать с манифестом, с расположением файлов, 266 00:18:07,030 --> 00:18:12,440 с исходным кодом, и вы можете видеть, как запустить один вид деятельности от другого. 267 00:18:19,740 --> 00:18:23,060 Мы начнем с макетом для нашего первого мероприятия 268 00:18:23,060 --> 00:18:27,320 которого я знаю, что это отчасти небольшие, 269 00:18:27,320 --> 00:18:32,660 но, как вы можете увидеть прямо сейчас, все это он имеет наш логотип, который мы создали, 270 00:18:32,660 --> 00:18:36,310 имя операции, и он говорит, привет мир в центре. 271 00:18:36,310 --> 00:18:40,400 Вместо этого, я первый собираюсь сделать это в линейный макет, 272 00:18:40,400 --> 00:18:42,350 относительное расположение, и все эти вещи 273 00:18:42,350 --> 00:18:45,870 Вы могли смотреть вверх и стоят переходя в какой-то момент с точки зрения макетов. 274 00:18:45,870 --> 00:18:47,310 Он во многом похож на HTML. 275 00:18:47,310 --> 00:18:52,640 Мы сказали, что это на самом деле не стоит знать с точки зрения программной смысле, 276 00:18:52,640 --> 00:18:55,840 но есть так много различных макетов вы можете контролировать, 277 00:18:55,840 --> 00:18:57,970 и это так же, как с точки зрения CSS стилей. 278 00:18:57,970 --> 00:19:01,590 >> Там очень много происходит только с точки зрения эстетики здесь, 279 00:19:01,590 --> 00:19:08,930 и да, это стоит обучение, но это такое дело, надо найти 280 00:19:08,930 --> 00:19:11,810 как вы идете, и вы чувствуете, что нужно что-то новое. 281 00:19:11,810 --> 00:19:17,030 Я могу воспользоваться некоторыми из инструментов ADT здесь по крайней мере, чтобы начать с. 282 00:19:17,030 --> 00:19:21,930 Я сделаю текстовое поле, и Я сделаю кнопки. 283 00:19:21,930 --> 00:19:24,100 Положите их рядом друг с другом. 284 00:19:24,100 --> 00:19:28,200 Они уже изменить размер соответствующим образом. 285 00:19:28,200 --> 00:19:31,320 К сожалению, опять же, возвращаясь к разнице между линейной планировкой и относительное расположение, 286 00:19:31,320 --> 00:19:34,830 линейная планировка дает немного больше функциональности 287 00:19:34,830 --> 00:19:38,720 с точки зрения заполнения пространства и убедившись, 288 00:19:38,720 --> 00:19:42,790 мы позиционируем вещи горизонтально или вертикально. 289 00:19:42,790 --> 00:19:46,130 Большая разница между линейной планировкой и относительное расположение 290 00:19:46,130 --> 00:19:50,250 относительное расположение позиций все, по сравнению с другими видами, 291 00:19:50,250 --> 00:19:52,630 и хорошая вещь об этом является то, что это занимает меньше времени, чтобы привлечь 292 00:19:52,630 --> 00:19:56,120 , поскольку операционная система смотрит на весь код и говорит, что это идет 293 00:19:56,120 --> 00:19:58,270 по отношению к этому здесь, здесь. 294 00:19:58,270 --> 00:20:03,170 Это означает, что он делает меньше измерений, чем целую кучу вложенных линейных макеты, 295 00:20:03,170 --> 00:20:06,840 который я должен был бы сделать, если я хочу, чтобы все было здесь вертикально. 296 00:20:06,840 --> 00:20:10,510 >> У меня уже есть некоторые вещи, собирается горизонтально, так что я нужна другая линейная планировка 297 00:20:10,510 --> 00:20:14,560 вкладывать их в вертикальном положении, но если бы я делал относительно макета я могу сказать, 298 00:20:14,560 --> 00:20:18,140 сохранить этот налево, это право, и эти вещи ниже. 299 00:20:18,140 --> 00:20:21,850 Но потому что я хочу, чтобы они заполнили Прямо сейчас я собираюсь использовать линейный макет, 300 00:20:21,850 --> 00:20:24,510 и вы можете увидеть уже сейчас он многие из этих вещей для нас. 301 00:20:24,510 --> 00:20:28,890 Все точки зрения должны иметь свойства ширины и высоты, 302 00:20:28,890 --> 00:20:33,410 и это происходит, чтобы иметь вес 1, а это имеет вес 1 303 00:20:33,410 --> 00:20:36,050 так, что он заполняет все пространство. 304 00:20:36,050 --> 00:20:38,460 Однако ширина и высота являются наиболее важными. 305 00:20:38,460 --> 00:20:45,880 Этот идентификатор поля здесь не важна в пределах фактического расположения 306 00:20:45,880 --> 00:20:49,060 если мы не с помощью относительного расположения и говорю, что мы может ссылаться 307 00:20:49,060 --> 00:20:52,990 один вид положение по отношению к другому. 308 00:20:52,990 --> 00:20:56,170 Если бы мы имели относительно макета мы можем сказать, это положение ниже этого 309 00:20:56,170 --> 00:20:59,390 или выше этого ID, но это ID будет иметь важное значение 310 00:20:59,390 --> 00:21:01,660 когда мы используем ее в код, потому что мы можем ссылаться 311 00:21:01,660 --> 00:21:05,610 эти личные мнения в этот путь. 312 00:21:05,610 --> 00:21:10,350 >> И тогда вы сможете увидеть requestFocus метки, т. е. то, что вы, наверное, видели в PSET 7. 313 00:21:10,350 --> 00:21:15,370 Был теги автофокус или что-то в этом направлении для одного из полей. 314 00:21:15,370 --> 00:21:22,100 И еще одна вещь, конечно, мы можем сделать так же, как в HTML, 315 00:21:22,100 --> 00:21:25,660 и обратите внимание, одна из хороших вещей о ADT является то, что здесь autocompletes. 316 00:21:25,660 --> 00:21:29,930 Может быть, не так хорошо, как это было в XCode, но она, тем не менее, 317 00:21:29,930 --> 00:21:32,860 и мы можем сказать, подсказки, а затем дать ему какую-то строку 318 00:21:32,860 --> 00:21:37,070 хотел написать сообщение, 319 00:21:37,070 --> 00:21:41,300 и если я даю ему момент, также заметил, что я получаю немного ошибки здесь 320 00:21:41,300 --> 00:21:44,610 говорят, что мы должны использовать строку ресурса для этого, 321 00:21:44,610 --> 00:21:48,820 так что если я пусть это делают некоторые из тяжелой работой для меня 322 00:21:48,820 --> 00:21:57,320 Я могу выбрать эту строку, сделать рефрактор Android и Android экстракт строку. 323 00:21:57,320 --> 00:22:00,570 Я могу дать ему это имя, написать сообщение, 324 00:22:00,570 --> 00:22:04,180 и то, что он сейчас является, что он заменил жестко-закодированных строк 325 00:22:04,180 --> 00:22:07,980 со ссылкой на строку. файл XML-строку, 326 00:22:07,980 --> 00:22:10,200 что означает теперь это здесь. 327 00:22:10,200 --> 00:22:15,560 >> И я знаю, что кажется немного тривиально и, как дополнительную работу в этой точке, 328 00:22:15,560 --> 00:22:17,840 но когда у вас есть целая куча вещей, целая куча строк, 329 00:22:17,840 --> 00:22:20,750 это очень важно, особенно для локализации 330 00:22:20,750 --> 00:22:26,920 потому что, как я упоминал ранее, Android является очень глобально используемой операционной системы 331 00:22:26,920 --> 00:22:35,950 что вы можете просто сделать значения-ан или значений-SP 332 00:22:35,950 --> 00:22:44,320 или что-то для английском или испанском языке или других языках. 333 00:22:44,320 --> 00:22:50,210 И тогда вы, вероятно, не было этого опыта еще 334 00:22:50,210 --> 00:22:53,030 так как мы не делали многого JavaScript с точки зрения веб-программирования, 335 00:22:53,030 --> 00:22:56,850 но мы также можем сделать это поле, называемое OnClick для кнопки, 336 00:22:56,850 --> 00:23:02,350 и это способ ссылки в наш макет 337 00:23:02,350 --> 00:23:06,570 что мы хотим определенную функцию, которая вызывается в нашем исходном коде. 338 00:23:06,570 --> 00:23:09,420 Я буду называть это SendMessage, 339 00:23:09,420 --> 00:23:13,390 и для того, чтобы сделать эту работу, что означает, в основном активность здесь 340 00:23:13,390 --> 00:23:19,180 Мне придется создать функцию, которая является общественным 341 00:23:19,180 --> 00:23:22,250 так что она может быть доступна макета. 342 00:23:22,250 --> 00:23:25,930 Это пустота, потому что вы просто не хотите, чтобы он ничего возвращать. 343 00:23:25,930 --> 00:23:37,760 Мы назовем это SendMessage, и она принимает вид, 344 00:23:37,760 --> 00:23:43,690 которая является своего рода контекст, который мы можем закрепить этот метод 345 00:23:43,690 --> 00:23:47,160 этому лицу зрения, когда мы бежим его. 346 00:23:47,160 --> 00:23:50,090 >> И я не знаю, если вы заметили, ну, вы бы не заметили, 347 00:23:50,090 --> 00:24:02,370 но в этот момент прямо здесь 348 00:24:02,370 --> 00:24:06,930 это представление типа, который до сих пор не включены 349 00:24:06,930 --> 00:24:10,630 И, конечно, вы все знаете из CS50 о не включая типы. 350 00:24:10,630 --> 00:24:13,120 Самое прекрасное, как Eclipse IDE является то, что 351 00:24:13,120 --> 00:24:17,520 если вы забыли включить типа она будет подчеркивать с небольшой красной волнистой 352 00:24:17,520 --> 00:24:19,680 а затем дать вам возможность импортировать зрения. 353 00:24:19,680 --> 00:24:23,130 Быстрый способ сделать это является управление переключением О, и она будет импортировать 354 00:24:23,130 --> 00:24:27,070 все файлы, которые он должен. 355 00:24:27,070 --> 00:24:33,670 Теперь у нас есть эта функция SendMessage, 356 00:24:33,670 --> 00:24:46,560 которая собирается отправьте сообщение с MainActivity в новую деятельность, 357 00:24:46,560 --> 00:24:55,230 мы собираемся должны использовать намерении запустить новый вид деятельности от этого, 358 00:24:55,230 --> 00:25:02,240 таким образом, мы, вероятно, захотите создать глобальную константу или также особенно публичная константа 359 00:25:02,240 --> 00:25:06,240 которые помогут нам знать, как мы будем ссылаться на строку 360 00:25:06,240 --> 00:25:09,090 потому что, когда мы создаем намерениях мы не просто вызовом нового вида деятельности, 361 00:25:09,090 --> 00:25:11,520 но мы также можем дать ему набор информации. 362 00:25:11,520 --> 00:25:14,720 Расслоение на самом деле термин, который использует Android, 363 00:25:14,720 --> 00:25:21,470 и это способ сказать, дать ему дополнительные данные, которые она не может быть очень сложного типа данных, 364 00:25:21,470 --> 00:25:24,510 но мы можем определенно включать логические значения или строки или целые. 365 00:25:24,510 --> 00:25:29,750 Такого рода вещи. 366 00:25:29,750 --> 00:25:34,230 >> Не стесняйтесь спрашивать о любом из этих отборочных здесь, 367 00:25:34,230 --> 00:25:36,900 общественности, финал, статична. 368 00:25:36,900 --> 00:25:38,610 Общественность важная. 369 00:25:38,610 --> 00:25:47,090 Это означает, что мы можем получить доступ этой переменной из других файлов исходного кода 370 00:25:47,090 --> 00:25:49,590 например, когда мы создаем новую деятельность. 371 00:25:49,590 --> 00:25:52,190 Мы можем ссылаться на строки в данном файле. 372 00:25:52,190 --> 00:25:57,160 Если это личное, это означает, что он ограничивается этим отдельный файл здесь. 373 00:25:57,160 --> 00:26:02,430 Но мы называем это что-то вроде дополнительного сообщения. 374 00:26:16,260 --> 00:26:23,300 Теперь мы сделали эту функцию, и если мы нажимаем кнопку, эта функция будет вызвана. 375 00:26:23,300 --> 00:26:27,970 Но мы ничего не сделали, очевидно, с функцией. 376 00:26:27,970 --> 00:26:33,130 То, что мы хотим сейчас сделать, это создать новый вид деятельности, 377 00:26:33,130 --> 00:26:35,350 деятельность, которая на самом деле будет запущен. 378 00:26:35,350 --> 00:26:44,330 В Eclipse можно сказать, новое, Android деятельности, пустой деятельности. 379 00:26:44,330 --> 00:26:46,530 Мы можем дать ему имя. 380 00:26:46,530 --> 00:26:57,050 Давайте назовем это результат нашей деятельности. 381 00:26:57,050 --> 00:27:04,430 А потом эта иерархическая поле родитель является способ задания 382 00:27:04,430 --> 00:27:08,180 каким образом деятельность связаны друг с другом. 383 00:27:08,180 --> 00:27:11,020 Потому что это одна будет запущена из другой деятельности 384 00:27:11,020 --> 00:27:27,520 мы должны указать, что он имеет родителя основной деятельности. 385 00:27:27,520 --> 00:27:31,220 >> И я мог бы нажали на следующее поле там, которые сказали бы нам 386 00:27:31,220 --> 00:27:33,830 некоторые дополнительные поля, что она была и в том числе, 387 00:27:33,830 --> 00:27:38,800 но хорошая вещь о ADT, опять же, в том, что если я здесь прокрутить вниз 388 00:27:38,800 --> 00:27:45,740 В манифесте помнить, что все это действительно было включено по умолчанию 389 00:27:45,740 --> 00:27:48,930 когда мы первоначально созданного проекта, 390 00:27:48,930 --> 00:27:53,090 и сейчас, потому что мы использовали это создать новый вид деятельности, а не только 391 00:27:53,090 --> 00:27:58,610 появился собственный файл класса, потому что мы прошли их GUI для этого 392 00:27:58,610 --> 00:28:01,930 это уже добавили все это в манифест для нас, 393 00:28:01,930 --> 00:28:06,020 который просто означает, что теперь операционная система не будет жаловаться 394 00:28:06,020 --> 00:28:09,400 когда мы пытаемся запустить эту деятельность. 395 00:28:09,400 --> 00:28:14,620 И это также, конечно, дали ему этикетку, которая также отображается в строках. 396 00:28:14,620 --> 00:28:17,340 Он делает много вещей, на заднем конце для нас. 397 00:28:17,340 --> 00:28:20,140 Во всяком случае, теперь у нас есть этот результат деятельности, а, 398 00:28:20,140 --> 00:28:23,810 фактический файл исходного кода в исходной папке, 399 00:28:23,810 --> 00:28:33,540 и вы можете видеть, кратко остановиться на этом- 400 00:28:33,540 --> 00:28:37,790 потому что мы сказали, что это об этом иерархическая родителей 401 00:28:37,790 --> 00:28:46,640 он дал этой области android.r.ide.home в этом onOption выбранной вещью. 402 00:28:46,640 --> 00:28:49,020 >> То, что это в основном говорю, есть кнопка меню теперь 403 00:28:49,020 --> 00:28:53,110 , что в верхнем левом углу экрана 404 00:28:53,110 --> 00:29:02,220 Если я вернусь в PowerPoint, где мы впервые заговорили о панели действий 405 00:29:02,220 --> 00:29:05,380 из-за иерархической родителей теперь есть маленькая стрелочка сюда 406 00:29:05,380 --> 00:29:10,610 и это является интерактивным, поэтому мы должны быть в состоянии после-мы на самом деле это приложение- 407 00:29:10,610 --> 00:29:15,360 вернуться, и это способ спасти нас немного код. 408 00:29:26,220 --> 00:29:40,180 Сейчас в этом, ну, это, кажется, жалуются, что на мгновение. 409 00:29:40,180 --> 00:29:43,910 Давайте комментировать это. 410 00:29:43,910 --> 00:29:48,260 Теперь, для того чтобы реально взаимодействовать с этими 2 мероприятия, 411 00:29:48,260 --> 00:29:55,020 мы должны создать намерение которая включает в себя все эти данные. 412 00:29:55,020 --> 00:29:58,950 В SendMessage теперь я собираюсь в круиз через некоторые фрагменты кода 413 00:29:58,950 --> 00:30:00,700 и объяснить, что, как я иду. 414 00:30:00,700 --> 00:30:06,280 Намерения, как я уже сказал, это способ для запуска одного вида деятельности от другого. 415 00:30:06,280 --> 00:30:10,000 Намерение типа. Мы создаем переменную myIntent. 416 00:30:10,000 --> 00:30:13,980 >> И это на самом деле объект, который является, почему мы должны назначить новые. 417 00:30:13,980 --> 00:30:18,500 Это общее использование Java там, что может занять немного привыкнуть. 418 00:30:18,500 --> 00:30:23,900 Это означает, что мы используем деятельности или класса MainActivity, 419 00:30:23,900 --> 00:30:28,630 и намерения таким образом занимает деятельность он собирается из 420 00:30:28,630 --> 00:30:36,060 и активность, что это собирается, которую мы называем ResultActivity, 421 00:30:36,060 --> 00:30:38,170 и это свой собственный класс. 422 00:30:38,170 --> 00:30:41,720 Включите это. 423 00:30:41,720 --> 00:30:47,370 А потом, как я уже говорил, мы дали этому ID в поле редактирования текста 424 00:30:47,370 --> 00:30:53,710 и текстовом виде, поэтому для того, чтобы захватить программно 425 00:30:53,710 --> 00:31:01,860 текст, который существует в EDITTEXT 426 00:31:01,860 --> 00:31:06,710 Мы используем эту функцию называют findViewByID, 427 00:31:06,710 --> 00:31:13,660 который похож на то, что вы будете использовать при попытке получить поля из DOM. 428 00:31:13,660 --> 00:31:17,560 Возможно, Дэвид говорит об этом в лекции. 429 00:31:17,560 --> 00:31:26,600 Но это всего лишь способ получить эти-вот почему мы тег эти вещи с этих полей. 430 00:31:26,600 --> 00:31:31,110 Id.editText1. 431 00:31:31,110 --> 00:31:35,220 Это уже autocompleting меня там. 432 00:31:35,220 --> 00:31:42,010 >> И тогда мы будем также включать-за EDITTEXT теперь у нас есть поле 433 00:31:42,010 --> 00:31:47,640 в нашей программе, все, что сделал, было findViewByID основном 434 00:31:47,640 --> 00:31:50,870 Вы могли думать о нем, как дать нам ссылку на этот EDITTEXT. 435 00:31:50,870 --> 00:31:54,570 Теперь мы хотим получить строку или сообщение 436 00:31:54,570 --> 00:32:00,670 в пределах этой EDITTEXT которые мы можем сделать с помощью параметра- 437 00:32:00,670 --> 00:32:03,360 вы могли бы подумать EDITTEXT как структура- 438 00:32:03,360 --> 00:32:07,600 мы называем это объект в Java-с целым букетом различных методов 439 00:32:07,600 --> 00:32:10,650 или поля и атрибуты, прикрепленные к нему. 440 00:32:10,650 --> 00:32:15,510 Когда я говорю EDITTEXT. это дает мне возможность доступа 441 00:32:15,510 --> 00:32:19,770 такой метод, как GetText, которая получит нынешний текст 442 00:32:19,770 --> 00:32:23,990 в этом EDITTEXT, а затем преобразовать, которые явно 443 00:32:23,990 --> 00:32:26,520 в строку, и мы спасли сообщении. 444 00:32:26,520 --> 00:32:32,730 Теперь мы действительно хотим сделать что-то с этим намерением мы создали всего несколько минут назад. 445 00:32:32,730 --> 00:32:40,250 Вложить дополнительные, как это называется в намерениях, 446 00:32:40,250 --> 00:32:43,330 которые, опять же, как я уже говорил, это способ создания расслоения 447 00:32:43,330 --> 00:32:45,980 с целой кучей данных. 448 00:32:45,980 --> 00:32:50,920 Дополнительное сообщение наш тег, поэтому мы знаем, что мы экономим под этим, 449 00:32:50,920 --> 00:32:56,700 и я в том числе сообщения. 450 00:32:56,700 --> 00:33:04,870 >> И тогда мы сможем реально начать деятельность, давая ему параметр myIntent. 451 00:33:04,870 --> 00:33:10,630 И это будет действительно запустить деятельности, так что теперь, так как я повышен до Windows 8 452 00:33:10,630 --> 00:33:15,870 там могут быть некоторые ошибки, которые показывают, на короткое время, но стараюсь не замечать их. 453 00:33:28,010 --> 00:33:30,310 И это эмулятор Android. 454 00:33:30,310 --> 00:33:33,540 Будем надеяться, что код будет на самом деле появляются в момент. 455 00:33:33,540 --> 00:33:36,680 Опять же, игнорируя все те мелочи. 456 00:33:36,680 --> 00:33:42,290 Но эмулятор Android вы можете эмулировать любую версию операционной системы 457 00:33:42,290 --> 00:33:45,180 от самых ранних, Donut, Gingerbread. 458 00:33:45,180 --> 00:33:49,640 Это Jelly Bean 4.1. 459 00:33:49,640 --> 00:33:53,150 Но, как вы можете увидеть прямо сейчас, это то, что мы сделали. 460 00:33:53,150 --> 00:33:55,780 Это имеет MainActivity, EDITTEXT, кнопка. 461 00:33:55,780 --> 00:34:01,550 Я могу напечатать что-то здесь, но то, что нам не хватает в данный момент? 462 00:34:01,550 --> 00:34:05,190 Мы сделали поле в MainActivity что происходит, чтобы отправить сообщение 463 00:34:05,190 --> 00:34:08,570 к другой деятельности, но в этот момент 464 00:34:08,570 --> 00:34:12,330 мы ничего не сделали в другой деятельности, так что он не собирается ничего получать. 465 00:34:12,330 --> 00:34:18,800 Давайте закончим эту часть прежде чем двигаться дальше. 466 00:34:18,800 --> 00:34:25,760 >> Этот результат деятельности, то, что нам нужно сделать, это нам нужно сделать, это нам нужно- 467 00:34:25,760 --> 00:34:30,070 мы также можем ссылаться на намерения в этой деятельности, 468 00:34:30,070 --> 00:34:33,580 так что мы должны захватить цель, которая на самом деле просто. 469 00:34:33,580 --> 00:34:40,780 Это функция включена в активности класса 470 00:34:40,780 --> 00:34:47,610 так что мы можем просто сказать: "получить сообщение от намерения". 471 00:34:47,610 --> 00:34:56,260 "Намерение myIntent = getIntent". 472 00:34:56,260 --> 00:35:00,030 И это даст нам теперь-myIntent является объектом, 473 00:35:00,030 --> 00:35:05,380 который является ссылкой на намерение, которое привело нас к этой деятельности. 474 00:35:05,380 --> 00:35:10,130 MainActivity звонит и дает дополнительную информацию привести деятельность. 475 00:35:10,130 --> 00:35:14,070 Результат деятельности теперь смотрит на намерение, которое привело его здесь, 476 00:35:14,070 --> 00:35:23,540 и мы можем получить доступ сообщение, которое мы создали в другой, 477 00:35:23,540 --> 00:35:26,370 getStringExtra, и это будет для меня автозаполнения. 478 00:35:26,370 --> 00:35:31,190 А потом помню, как мы метиться бит данных 479 00:35:31,190 --> 00:35:38,400 был, дав ему это поле прямо здесь, это общественное строки, 480 00:35:38,400 --> 00:35:42,080 которая служит ярлык строка, которую мы фактически включены. 481 00:35:42,080 --> 00:35:48,450 >> Если я скажу, MainActivity.Extra_Message 482 00:35:48,450 --> 00:35:52,200 это тут же, и это вроде как имя параметра 483 00:35:52,200 --> 00:35:55,330 когда мы прошли кода из контроллера в шаблон, 484 00:35:55,330 --> 00:35:57,680 когда мы что-то сказать название стрелки. 485 00:35:57,680 --> 00:36:01,140 Это такая же идея есть. 486 00:36:01,140 --> 00:36:07,130 Теперь, помните об этом. 487 00:36:07,130 --> 00:36:12,230 У нас также был создан этот автомобиль или автоматически сгенерированный код 488 00:36:12,230 --> 00:36:16,410 в результате активности, который включает в текстовом виде в середине 489 00:36:16,410 --> 00:36:19,690 , который говорит привет мир. 490 00:36:19,690 --> 00:36:27,510 Мы могли бы потенциально сделать, что большие. 491 00:36:27,510 --> 00:36:33,980 Давайте сделаем это первыми. 492 00:36:33,980 --> 00:36:39,550 Мы могли бы сделать это 40 Плотность независимых точках. 493 00:36:39,550 --> 00:36:42,670 Давайте посмотрим, это супер огромный. Это будет в порядке. 494 00:36:42,670 --> 00:36:48,180 И тогда для того, чтобы ссылаться на этот индивидуальный взгляд текст в наш код 495 00:36:48,180 --> 00:36:53,890 мы должны дать ему ID, 496 00:36:53,890 --> 00:36:58,350 и для того, чтобы делать, что мы говорим, @ ID +, что означает, мы назначаем ID. 497 00:36:58,350 --> 00:37:02,480 Если мы только что сказали, @ ID было бы предположить, мы ссылаемся на идентификатор, который уже существует, 498 00:37:02,480 --> 00:37:07,760 и назовем этот resultTextView наших. 499 00:37:07,760 --> 00:37:10,570 И заметьте, что в XML нет никакой необходимости запятой или что-нибудь. 500 00:37:10,570 --> 00:37:12,380 Все в пределах этих тегов. 501 00:37:12,380 --> 00:37:15,530 Он очень похож на HTML во многих смыслах. 502 00:37:15,530 --> 00:37:22,760 >> Это займет немного привыкнуть, но в итоге вы будете чувствовать себя очень комфортно с ним. 503 00:37:22,760 --> 00:37:31,320 Давайте обновим наш текст для просмотра текста результат, 504 00:37:31,320 --> 00:37:35,650 и, как мы сделали, когда мы получали, что поле ввода текста в других наших activity 505 00:37:35,650 --> 00:37:46,630 В MainActivity Здесь мы также рассмотрим также- 506 00:37:46,630 --> 00:37:54,890 мы узнаем результаты по ID. 507 00:37:54,890 --> 00:37:59,640 И R, в случае, если я не упомянул об этом раньше, является ссылка на наш folder ресурсов, 508 00:37:59,640 --> 00:38:05,350 а затем ID является ссылка на все, что в папке ресурсов, все идентификаторы, 509 00:38:05,350 --> 00:38:10,060 и resultTextView. 510 00:38:10,060 --> 00:38:13,010 И так же, как и раньше, resultTextView является объектом, 511 00:38:13,010 --> 00:38:15,780 а значит, имеет все эти свойства, связанные с ним. 512 00:38:15,780 --> 00:38:20,610 Когда мы используем getText для редактирования текста в этом поле текста или просмотра текста 513 00:38:20,610 --> 00:38:23,980 мы действительно можем использовать зейТех, 514 00:38:23,980 --> 00:38:26,960 и тогда мы уже нашли сообщение от намерений, 515 00:38:26,960 --> 00:38:35,760 Поэтому я могу сказать сообщение, и это будет на самом деле набор сообщений. 516 00:38:35,760 --> 00:38:41,820 >> Это воспользоваться моментом, чтобы начать, и тогда мы сможем увидеть или не он выходит из строя, 517 00:38:41,820 --> 00:38:48,670 но есть вопросы по поводу этого процесса тут же, такого рода взаимодействия? 518 00:38:48,670 --> 00:38:51,490 Во многих отношениях это просто. 519 00:38:51,490 --> 00:38:53,960 Поэтому я иду через что-то относительно простое 520 00:38:53,960 --> 00:38:57,330 , опять же, потому что вы можете видеть взаимодействие между макет, 521 00:38:57,330 --> 00:38:59,520 исходный код, как вам вещи ссылки 522 00:38:59,520 --> 00:39:07,680 и, возможно, получить мало воздействия на Java как там работает. 523 00:39:07,680 --> 00:39:16,500 Если я на самом деле что-то типа в здесь, как Ohai, а затем, нажав на кнопку, 524 00:39:16,500 --> 00:39:22,260 он запускает новый вид деятельности, и этот текст зрения говорит Ohai. 525 00:39:22,260 --> 00:39:27,640 Это очень простая, но, надеюсь, после этого примера 526 00:39:27,640 --> 00:39:32,310 вы как бы посмотреть, как это взаимодействие работает, и теперь, когда беспорядок из файлов 527 00:39:32,310 --> 00:39:36,870 на левой стороне для всех этих папках проекта, надеюсь, вы знаете, где искать сих пор. 528 00:39:36,870 --> 00:39:38,700 Это ваш исходный код области. 529 00:39:38,700 --> 00:39:41,760 >> Макет действительно единственное, что вы будете иметь дело с пока не включают в себя изображения 530 00:39:41,760 --> 00:39:46,370 и вводимого коэффициента или любой другой, и ценности, которые могут быть строки, 531 00:39:46,370 --> 00:39:51,960 как мы уже упоминали, а затем стилей является то, что вроде как CSS. 532 00:39:51,960 --> 00:39:56,410 Ее решения, когда вы хотите, но пока вы не почувствуете себя комфортно с добавлением дополнительного чутье 533 00:39:56,410 --> 00:40:02,520 для вашего приложения нет необходимости беспокоиться об этом слишком много. 534 00:40:02,520 --> 00:40:07,410 Просто, чтобы обернуть одну вещь, которую вы наверняка хотите, чтобы включать- 535 00:40:07,410 --> 00:40:13,010 если вы хотите интегрировать интересные функции и сэкономить немного дополнительного кодирования- 536 00:40:13,010 --> 00:40:16,460 будет включать в себя 3-х фирм. 537 00:40:16,460 --> 00:40:19,840 Вот маленький парень Android с Шерлоком Холмсом шляпу. 538 00:40:19,840 --> 00:40:23,040 Это действие баре Шерлок библиотеки, 539 00:40:23,040 --> 00:40:25,390 который в основном означает, что панель действий вы уже видели, 540 00:40:25,390 --> 00:40:29,590 которая в настоящее время стандартом в Ice Cream Sandwich, и Jelly Bean, 541 00:40:29,590 --> 00:40:33,100 Если вы хотите, чтобы принести такую ​​пользовательский опыт для пользователей на старых версиях 542 00:40:33,100 --> 00:40:39,290 и спасти себя от забот о том, как пользователь будет перемещаться 543 00:40:39,290 --> 00:40:42,490 на более старых версиях, когда эта вещь не есть вы можете включить эту библиотеку 544 00:40:42,490 --> 00:40:46,770 а затем вы просто должны справочно-а не по умолчанию Android 545 00:40:46,770 --> 00:40:50,250 библиотеки для панели действий, вы ссылаетесь на эту поддержку библиотек. 546 00:40:50,250 --> 00:40:53,090 >> Вещи, как Scoreloop, это здорово, если вы собираетесь включить в игру. 547 00:40:53,090 --> 00:40:57,280 Вы можете добавлять таблицы лидеров и достижения в играх. 548 00:40:57,280 --> 00:41:00,900 Admob это способ размещение рекламы в приложениях 549 00:41:00,900 --> 00:41:02,900 В случае, если вы хотите, чтобы сделать немного денег с него. 550 00:41:02,900 --> 00:41:05,730 Конечно, есть Facebook и Twitter для интеграции есть 551 00:41:05,730 --> 00:41:08,170 Если вы хотите поделиться вещи легко, и так далее. 552 00:41:08,170 --> 00:41:15,120 Dropbox, то же самое, и Google Analytics является то, что график ищет никого. 553 00:41:15,120 --> 00:41:19,070 Это будет очень важно, если вы действительно хотите, чтобы видеть, кто взаимодействует 554 00:41:19,070 --> 00:41:25,800 с вашим приложением или кто это, как они взаимодействуют, и так далее. 555 00:41:25,800 --> 00:41:30,650 Google, по умолчанию, говорит вам много статистики о том, кто установил приложение 556 00:41:30,650 --> 00:41:35,020 и то, что телефоны у них, что версия операционной системы у них есть. 557 00:41:35,020 --> 00:41:38,080 Но если вы хотите узнать, кто использует его на ежедневной основе, и как они используют его 558 00:41:38,080 --> 00:41:42,860 то вы хотите, чтобы включать в себя какие-то системы слежения подобное. 559 00:41:42,860 --> 00:41:44,990 >> Когда вы будете готовы, чтобы распространять свои приложения 560 00:41:44,990 --> 00:41:46,930 Мне не нужно идти в том, что в слишком большой глубине. 561 00:41:46,930 --> 00:41:49,090 Нажмите на ссылку здесь, Google Play. 562 00:41:49,090 --> 00:41:51,080 Раньше считалось, Android Market. 563 00:41:51,080 --> 00:41:53,470 Они все ребрендинг с Play Google, 564 00:41:53,470 --> 00:41:55,230 Итак, теперь вы представить, что. 565 00:41:55,230 --> 00:41:57,140 Это очень просто. 566 00:41:57,140 --> 00:42:01,070 Вы должны включать в себя описание, несколько скриншотов. 567 00:42:01,070 --> 00:42:05,660 Как я уже говорил, нет никакой процесс утверждения, как IOS. 568 00:42:05,660 --> 00:42:07,270 И куда идти дальше? 569 00:42:07,270 --> 00:42:09,450 Я показал вам очень простой пример. 570 00:42:09,450 --> 00:42:13,270 Надеюсь, если это кажется ужасно прост 571 00:42:13,270 --> 00:42:15,740 то это, наверное, хороший знак. 572 00:42:15,740 --> 00:42:20,080 Если вы вообще чувствовал себя немного путают или не уверены точно, что я печатал 573 00:42:20,080 --> 00:42:26,160 это тоже хорошо, но отсюда пойти в Google Справочники. 574 00:42:26,160 --> 00:42:28,330 Это прекрасное место для начала. 575 00:42:28,330 --> 00:42:31,460 Он будет говорить вам, что они ожидают с точки зрения разработки приложений, 576 00:42:31,460 --> 00:42:33,380 как пользователи обычно взаимодействовать с ним. 577 00:42:33,380 --> 00:42:36,450 Это гораздо более свободной форме, чем IOS, я бы сказал, 578 00:42:36,450 --> 00:42:41,330 которая кажется, что таблица взгляды-Я не знаю, это их хлеб с маслом. 579 00:42:41,330 --> 00:42:44,690 Все таблицы скольжения вверх и вниз. 580 00:42:44,690 --> 00:42:48,160 С Android они, безусловно, поощрять людей, чтобы посмотреть на это с 581 00:42:48,160 --> 00:42:51,720 целая куча разных точек зрения. 582 00:42:51,720 --> 00:42:56,000 >> При включении комплект разработки программного обеспечения в этой ADT 583 00:42:56,000 --> 00:43:03,010 По умолчанию у вас есть целая куча примеров проектов в Android. 584 00:43:03,010 --> 00:43:05,470 Прямо здесь, Android, Android Sample Project. 585 00:43:05,470 --> 00:43:11,870 Если я нажимаю на это, то я могу выбрать версию, для которой из примеров проектов применяются. 586 00:43:11,870 --> 00:43:13,300 Там целая куча разных вещей. 587 00:43:13,300 --> 00:43:16,690 Она начинается с действием совместимости бар, 588 00:43:16,690 --> 00:43:24,610 акселерометр игры, резервное копирование и восстановление, Bluetooth, жест строителя. 589 00:43:24,610 --> 00:43:28,930 Jetboy пример игру они дают вам, как LunarLander. 590 00:43:28,930 --> 00:43:31,250 Есть целая куча примеров приложений здесь, 591 00:43:31,250 --> 00:43:35,290 и все они ориентированы на различные аспекты API Android, 592 00:43:35,290 --> 00:43:41,520 и идея в том, что, как вы сделаете ваше приложение 593 00:43:41,520 --> 00:43:44,110 Вам не нужно, чтобы узнать все о Android сделать приложение Android. 594 00:43:44,110 --> 00:43:47,300 Вы только должны узнать о части, которые вы на самом деле собираетесь использовать. 595 00:43:47,300 --> 00:43:49,340 Посмотрите на эти примеры библиотек. 596 00:43:49,340 --> 00:43:51,510 Не стесняйтесь, чтобы скопировать и вставить код и повторно использовать это. 597 00:43:51,510 --> 00:43:53,850 Это отличная вещь, чтобы посмотреть на более трудным код 598 00:43:53,850 --> 00:43:57,060 и попытаться понять его, что, конечно, почему в CS50 599 00:43:57,060 --> 00:44:01,510 мы часто дают вам большое количество исходного кода. 600 00:44:01,510 --> 00:44:04,620 Посмотрите на некоторые из них, если вы собираетесь использовать подобные библиотеки 601 00:44:04,620 --> 00:44:08,630 , а затем применить его на свой собственный код. 602 00:44:08,630 --> 00:44:10,430 И, конечно, есть учебники. 603 00:44:10,430 --> 00:44:12,690 Искать учебники. 604 00:44:12,690 --> 00:44:17,020 Я нашел много хороших онлайн, который может принести вам до скорости 605 00:44:17,020 --> 00:44:20,080 с тем, что фрагменты самом деле и как их можно использовать. 606 00:44:20,080 --> 00:44:22,240 >> Некоторые из этих новых вещей дизайна, как фрагменты, 607 00:44:22,240 --> 00:44:26,840 Вы действительно не нужно беспокоиться о том, если вы не делаете 608 00:44:26,840 --> 00:44:30,560 довольно большой по своим масштабам проект. 609 00:44:30,560 --> 00:44:32,510 Они то, что Google пытается поэтапно дюйма 610 00:44:32,510 --> 00:44:35,570 Stackoverflow конечно, ваш друг. 611 00:44:35,570 --> 00:44:37,930 Надеюсь, я продал вам немного на Android, 612 00:44:37,930 --> 00:44:41,640 понимая это гораздо более легко подходить с точки зрения только кодирования языка. 613 00:44:41,640 --> 00:44:45,970 Java, я бы сказал, что гораздо легче понять, чем Objective-C. 614 00:44:45,970 --> 00:44:50,780 Android растет я думаю, гораздо больше, чем IOS. 615 00:44:50,780 --> 00:44:54,890 Я имею в виду, данные там тоже, кроме того, что я думаю. 616 00:44:54,890 --> 00:44:56,920 Это будет примерно в то время, 617 00:44:56,920 --> 00:45:00,880 и они несколько лет позади точки зрения их циклов проектирования, 618 00:45:00,880 --> 00:45:04,690 так это вроде понятно, что они все еще работают через некоторые из этих 619 00:45:04,690 --> 00:45:09,080 последовательность вопросов, как это действие баре новая вещь для них до сих пор, 620 00:45:09,080 --> 00:45:16,010 Сортировать создания подобный опыт пользователей во всех своих приложениях. 621 00:45:16,010 --> 00:45:20,650 Надеюсь, вы можете пойти вперед, то и открыть Затмение 622 00:45:20,650 --> 00:45:22,870 и сделать свои собственные приложения для Android. 623 00:45:22,870 --> 00:45:30,240 >> Кто-нибудь есть какие-либо вопросы, прежде чем мы итоговое ни о чем? 624 00:45:30,240 --> 00:45:34,410 Я могу сказать вам ответ 42. 625 00:45:34,410 --> 00:45:41,990 Ну, счастливого кодирования всех, и удача. 626 00:45:41,990 --> 00:45:44,990 [CS50.TV]