Совместный перевод документации Android
На личном опыте убедился, что для изучения Андроид ничего лучше доки пока еще не придумали. Большинство книг — откровенная туфта, набитая какими-то отрывками информации и ориентированная исключительно на продажу. В то же время мой английский не насколько хорош, чтобы свободно читать документацию) а качественный перевод занимает много времени.
Думаю что не у меня одного возникли подобные проблемы. Поэтому хочу предложить всем, кого это может заинтересовать, небольшой совместный проект. Каждому взять по
30 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівВот две первые главы документации zalil.ru/31434429 Выкладываю в свободный доступ для начала. Кто хочет поучавствовать в проекте — пишите здесь или свяжитесь со мной по скайпу yvolohov или напишите на yvolohov[no_spam]gmail.com
Файлы наверное сохранены без поддержки старых версий ворда? Можете переделать?
В старом формате ворда
zalil.ru/31435001
Спасибо! Вы делаете большое дело.
По-любому, чтобы войти в Андроид — нужно иметь бэкграунд хотя-бы на C#, и бегло читать англ.документацию. Нубам с нуля будет тяжело.
Вот вы тут излагали
, а можна спросить, как жеж люди пишут игрушки на андроеде ?Ведь мне надо просто что-то типа канвас на всю репу, и что бы я читал с карточки из текстового файла тексты или из джипега спрайты, а не с ХМЛя, и репа что бы принимала мордотык, а уж на кого жали я и сам разберусь, мне бы координаты тыка, или если многопальцевый тык, тогда как? Или это только на С++, а не на джаве?
Звыняйте за трол’я.
Струдомпрасцал что ты написал. Реально, хрен понял. Напишешь по-русски — отвечу. Насчет игрушек —
«Create and port cool games like Space Blaster, classic Asteroids™,
Doom and Wolfenstein™ 3D using Android»
Apress±+Pro+Android+Games+_28December+2009_29+_28ATTiCA_29.pdf
гугел в помошь
Рассматривается неуправляемый код на С++
Так что получается, что в открытой документации нету чтения файла и вывода рисунка на канву? Надо отстёгивать гуглу за вывод картинок и за обработку многопальцевых жестов?
А чтобы поиметь доступ на запись к карте — надо поставить пермишн android.permission.WRITE_EXTERNAL_STORAGE.Для чтения боков быть не должно (она монтируется в /sdcard)
Джава не для хомячков. Многопальцевые жесты поддерживаются не всеми девайсами, если поддерживаются вообще (учи мат.часть)
канвас на всю репу — Theme.NotitleBar.Fullscreen
текущий мордотык — имплементи OnTouchListener (на многопальцевый тык не затачивайся — не все девайсы понимают Multitouch), и читай MotionEvent, а также View прокасти, чтоб узнать, вас из дас
спрайты — ембеди png, или используй XML анимацию, а там уже BitmapBuilder (или как его там), чтобы вернуть поток из ресурсов
Если знаешь, чем отличается код на джаве и С++ - таких вопросов не должно возникнуть
А все ресурсы, в т.ч. графические — по-нормальному должну быть embedded (откуда ты знаешь, куда поставят твое приложение — на карты или в основную память, даже если ты в манифесте разрешишь установку на карту? да и нафиг лишний пермишн типа чтения с карты)
p.s. Не путай Canvas и View — я про View писал в предыдущем посте
View в игрушках и картах нафик не нужен, как и embedded. Только карта. Ну если есть SSD приличного размера, тогда да. Дело в том, что ресурсы будут постоянно меняться или приниматься или по сети (знамо что по Wi-Fi) или с карты или через USB. И желательно в форматах, доступных быстро на РС, без всяких вывертов типа перевода из XML в текст или изображение. И зачем XML анимация? По таймеру с синхронизацией да и всё. А если аппарат не тянет, так снижаем количество кадров в секунду.
Не будут они постоянно меняться и ходить в апдейтах. Апдейтится только APK — исходя из версии в манифесте. И не у каждого юзера есть SD Card априори. Ресурсы — все embedded, как в jar, так и в apk JAR, APK — это зипованный файл, по известному алгоритму, получить сцылко — используются инфлатеры (учи мат.часть) А если ты провтыкал пермишн, и не указал, что приложение может ставиться на SD Card — что тогда — приплыли что ли?
Бальшое спасиба.
Если верить ваш текст, на Андроед нарисовать карты моно только в браузере, а мне написать свой никто не даст, то есть, с чего разговор начался, для рисования спрайтов в игрушках нужна только ЛИЦЕНЗИЯ.
А ведь мне надо так мало:1) нарисовать картинку в указаной точке
2) узнать, где ткнули пальчиком
3) прочитать из файла или из сети картинки и тексты для игрушки.
Юный друг, забудь про Андроед, пиши на РС, там вроде уже почти всё бесплатно.
developer.android.com/...-resources.html
и точка.
Тем более, что ты неявно указываешь, какой тянется конкретный ресурс — система сама разруливает из всех возможных, в зависимости от ее состояния.
И из сети нафиг читать ресурсы, если их нужно локально хранить? А если нет доступа к сети (бабло на телефоне закончилось), не думал об этом?
А если мне надо скачать пробки на карту или карту освежить? Или показать фотки из облака друзьям, как я отдыхал в Антарктиде, а потом скинуть им на карточку. Для печати фоток или отправки в МВД
Если у тебя графика — статическая (типа, децл в игре бегает, или background и т.д.), тебе не надо ее все время тянуть из интернета. И даже не надо ложить в отдельный package. Потому что есть туева хуча механизмов, как работать с графикой — от статических ресурсов, до BLOB и внешних библиотек типа com.google.android.maps (для твоего первого вопроса) Как
показать фотки из облака друзьямпрограммно отправляются ММС или емыло — в сети примеров навалом.Спасиба, убедил. Никогда не буду программировать для Андроеда.
А вот что надо — так это типа Tips and trics: по каждому визуальному компоненту сделать видео, что он из себя представляет. Типа ViewFlipper и т.д. А также, как же делается это интересный эффект, чтобы сделать всплывающее снизу окно с кастомным лэйаутом (типа, как ненавязчиво всплывает клавиатура, когда фокус в поле ввода). Я лично уже знаю как (через WindowManager), но гуглил прилично.
домприложение.Если не вдаваться в дебри, типа native приложение на С++, то разработчикам даны следующие кирпичи (их можно по пальцам перечесть):
— Activity (а также TabActivity — чтобы делать Активити с таб хостом,и вроде называется PropertiesActivity) — это содержимое экрана (аналог — System.Windows.Forms.Form :) Есть понятие стека активити, и их жизненного цикла. Ну и еще классная фича — AsyncTask
— Service (а также IntentService, Service bound и Service IPC remote через AIDL) — это сервисы: клиентский и удаленный. Это — логика приложения. Логику сервиса нужно писать в отдельном потоке и имплементить интерфейс Runable (аналог — backgroundworker), потому что если делать в одном, а работа займет более 3 секунд (например, опрос веб сервиса) — появится сообщение, что приложение не отвечает. IBinder — это RealProxy и TransparantProxy в одном флаконе.
— Intent — это типа оболочки для сериализуемых типов, в которую можно впихнуть свою инфу (а все невпихуемое — через Parcellable). Интенты обычно рассылаются широковещательно (например, IntentService — ждет соотв.Интент, если впоймал — сервис запустился. Или для запуска соотв. активити)
— BroadcastReceiver — приемник интентов (мы послали соотв. интент — запустили intentService. Далее, IntentService сделал свою работу — отправил соотв. броадкаст в виде интента, соотв.BroadcastReceiver, настроенный на «волну» соотв. интенте аего поймал). При этом, через интенты мы имеем асинхронное событийное поведение системы.
— Notification (это механизм уведомления пользователя, через верхний тайтл бар, который вниз тянется). А также сюда — тост, и билдер диалога
— ContentProvider — это механизм абстрактного асинхронного взаимодействия с каким-то хозяином данных, и у данных есть URI (например, нам пофигу, кто в системе заведует контактами адресной книги, но мы можем послать интент по типу contacts://blablabla — и нам прийдет ответ в виде курсоров, которые мы можем проскроллить)
Также, всякие вкусности, типа ArrayAdapter — это когда есть данные, и мы хотим в активити сделать их визуальное представление по xml шаблону — прибиндить массив соотв.Хранителя к лэйауту. Т.е., адаптер между конкретными данными, и их визуальным представлением.
Ну и все активити, все интенты, все сервисы, все броадкаст ресиверы, все пермишшны должны быть зарегисирированы в манифесте приложения.
Весь UI делается в XML (как в WPF), все текстовые ресурсы хранятся в XML, с именем, в зависимости от возможностей устройства, и от текущего языка. И вообще, как описывать UI — содрали с WPF.
Среда разработки — Eclipse Helios + соотв.плагин. Таже, нужно знать, что такое LogCat, и команды ADB. Чтобы делать background — нужно использовать только формат 9.png Встроенная база данных — SQLite.
Вот и все, что нужно знать на уровне мидла :) На уровне сеньора — нужно этим всем оперировать без подсмотра в документацию, плюс сделать что-то свое, и разместить на Маркете (и срубить бабла :)
вы начните, а мы подтянемся :)
Ок, сейчас перевожу intents and intent filters, как только будет готово, выкладываю здесь ссылку для начала.
а что вы за базу выбрали?
github, google translate, ...?
а и главное не париться, Линус начинал делать систему для себя, а не для других, ну и сейчас он делает систему для себя — так для опенсорса лучше.
ой да ладно :)
Оно никому не надо, под андроид можно писать зная java se и прочитав developer.android.com/...orials/notepad/index.html
Дальше используя подход из gaperton.livejournal.com/32772.html и скачав api demos можно писать код
Со знаниями Java SE и парой примеров можно начать писать, но не писать. Рано или поздно столкнешься с вопросом, на который нет ответа ни в демках ни в книжках.
например, что такое формат 9.png (NinePath), и как его применять, я для себя разрулил когда на ютубе посмотрел видео с начала создания, до имплементации. В документации — хрень какая-то.
У каждого свой подход к изучению, но лично мне документация очень помогла. А вот несколько книг на русском, которые скачал или купил, явно не стоят затраченных на них усилий. Переводить же книги с английского себе дороже, воды там очень много, так что напрасная трата времени. Обучающего видео к сожалению не находил.
ну зачитать текст и быстро написать прогу под фрапсом, тоже не неделю делать :)
... а потом издать книгу.
Потрать свое время на изучение английского, а не на перевод доки. будет полезней
Обновление доки происходит не так часто. К тому же гугл просто не может не соблюдать совместимость со старыми версиями API, так что эта информация еще долго будет актуальной.