Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

Поиск пути в гексагональной сетке (AS3)

Время на прочтение2 мин
Количество просмотров14K
imageЭта статья представляет собой описание компонента HexaPath, реализующего поиск пути по алгоритму А* в гексагональной сетке. В сети мной было найдено большое количество описаний алгоритма на примере квадратной сетки и некоторое количество реализаций, но ни одного упоминания о шестиугольной сетке. И я написал свою реализацию. Выкладываю исходники. Вдруг кому-нибудь понадобится это, а писать самому будет лень.

Читать дальше →
Всего голосов 96: ↑88 и ↓8+80
Комментарии48

Пишем живые обои с часами

Время на прочтение4 мин
Количество просмотров25K
ClockНедавно я решил разобраться, как делать живые обои для андроида, а разбираться лучше всего на хорошем примере — таком, который потом пригодится. Я всегда хотел удобные часы. Для андроида уже существует достаточное количество подобных обоев, но обычно они рисуют большие часы в каком-нибудь фиксированном углу экрана и перекрываются виджетами, которых у меня немало. Мне хотелось, чтобы часы были разбросаны по всему экрану, тогда вероятность увидеть их будет выше.
Как сделать такое читайте дальше
Всего голосов 79: ↑76 и ↓3+73
Комментарии37

Что делать, если вы застряли с Большой и Сложной Программистской Задачей?

Время на прочтение5 мин
Количество просмотров8.7K
image

Иногда, решая непростую задачу, я застреваю с ней. Я понимаю это, когда начинаю заниматься пустячными делами, раздавать советы другим людям, пить много кофе, постоянно искать что бы перекусить и работать над низкоприоритетными вещами. Время идет, а сделано мало.

Когда я обратил на это внимание, я серьезно призадумался, взывая к собственной совести, чувству долга и гордости человека, который никогда не подводит себя и свою команду.

Со временем я выработал способ, позволяющий вернуть мне продуктивность в такой ситуации и суметь закончить непростую задачу. Этим опытом я и хочу поделиться.
Читать дальше →
Всего голосов 158: ↑145 и ↓13+132
Комментарии38

Учимся считать в hex, или реверс-инженеринг будильника

Время на прочтение13 мин
Количество просмотров54K

Введение


Недавно у меня появилась мысль научиться считать в шестнадцатеричной системе счисления. Так как я человек ленивый, такие способы, как выучить таблицу умножения меня не устраивали. Немного поразмыслив, я вспомнил, что каждое утро решаю (иногда несколько раз) несложный пример, чтобы отключить будильник. Помогает слабо, со временем я начал решать почти не просыпаясь. Так почему бы не совместить полезное с полезным?
Осталось выбрать способ реализации. Так как я не имею не малейшего представления о разработке под андроид (да и вообще с Java не сильно знаком), да и писать свое приложение ради такой мелочи — это стрельба из пушки по воробьям, было решено модифицировать уже имеющийся будильник.

Под катом вы найдете описание инструментов, процесса и результата перевода примера в hex. А также объяснение синтаксиса smali кода (язык опкодов для виртуальной машины dalvik). Картинок почти нет, буков много.
Читать дальше →
Всего голосов 77: ↑74 и ↓3+71
Комментарии20

Звук в Java

Время на прочтение2 мин
Количество просмотров14K
Часто в приложениях желательно использовать какие-то вспомогательные звуковые эффекты, например пикнуть динамиком при ошибке или проиграть мелодию на новое письмо.
Не все знают что в любом компьютере имеющем звуковую карту встроена большая библиотека звуков. Все звуковые платы поддерживают воспроизведение звука по стандарту MIDI (см. ru.wikipedia.org/wiki/MIDI) а это 128 обычных и 40 ударных инструментов.

Что такое MIDI — это стандарт на команды управления синтезатором или другими устройствами воспроизведения звука. Т.е. в .mp3, например, хранится оцифрованный звук а в файлах .mid только ноты которые воспроизводит звуковая карта.

Я опубликовал библиотеку для простого доступа к воспроизведению MIDI-звука:

image

Читать дальше →
Всего голосов 59: ↑44 и ↓15+29
Комментарии49

Настройки в Android-приложениях

Время на прочтение6 мин
Количество просмотров72K
Интересуюсь темой разработки под Android. Пишу небольшое приложение. Столкнулся с тем, что не до конца понимаю как правильно делать настройки для приложения. Немного погуглил, нашел статью, которая помогла разобраться. Решил перевести статью для русскоязычного сообщества, включив некоторые комментарии к оригиналу.

Настройки являются важной частью приложений на Android (и не только на Android — здесь и далее примечание переводчика). Это очень важно — позволять пользователям изменять настройки приложения, в зависимости от их предпочтений.

Существует два пути работы с настройками в Android — можно создать файл preferences.xml в директории res/xml, либо работать с настройками из кода. В данной статье я покажу как работать с настройками, используя preferences.xml файл.

Читать дальше →
Всего голосов 43: ↑38 и ↓5+33
Комментарии61

Работа с SurfaceView в Android

Время на прочтение5 мин
Количество просмотров100K
Здравствуйте, Хабравчане!
При работе с 2D графикой в Android отрисовку можно выполнять используя Canvas. Проще всего это сделать с помощью своего класса, унаследованного от View. Необходимо просто описать метод onDraw(), и использовать предоставленный в качестве параметра canvas для выполнения всех необходимых действий. Однако этот подход имеет свои недостатки.
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии20

Мои экзерсисы. PaintUp — раскраска разноцветных эскизов

Время на прочтение2 мин
Количество просмотров1.8K

Я уже несколько раз упоминал о своем приложении в контексте – напишу теперь более популярно. Под катом немного подробностей, статистики, ссылки и скринкаст процесса рисования.

Еще в студенческие годы мне пришлось возится с созданием 3д модели рельефа по изолиниям. Задача свелась к моделированию сеточной функции 2-х переменных. Т.е. на вход есть набросанные на плоскость точки и линии (замкнутые и незамкнутые) со значениями в них высоты и нужно интерполировать эти значения в узлы некоторой сетки на той же плоскости.

В посленовогодние выходные появилось немного свободного времени для экзерсисов и я решил попробовать пописАть под Андроид. В качестве прикладной задачи решил сделать какую-то рисовалку. Вот тут мне и пригодился опыт работы с рельефом – пришла идея сделать рисовалку-раскраску. Чтобы можно было на холсте нарисовать множество разноцветных линий, а затем приложение само раскрасило бы этот эскиз в цветовой градиент от этих цветовых источников. По сути построение градиента сводилось к моделированию сеточной функции 2-х переменных: сетка – это пиксели растра, изолинии – это линии эскиза, высота изолинии – это 3-х мерный вектор RGB-цвета.
Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии11

Смена языка приложения в настройках

Время на прочтение3 мин
Количество просмотров123K
В системе Android очень удобная для использования система локализации, достаточно создать папку и в ней файл со строками. Но в приложение сложно встроить все возможные языки, и не плохо бы предоставить пользователю выбор языка, отличного от стандартного.
Приведу пример такой ситуации:
В приложении есть 2 языка стандартный английский и русский. Это приложение решил установить украинец, у которого аппарат на украинском языке, но так же он хорошо знает русский, а английский не очень. Но вот Андроид, обнаружив, что в приложении нет украинского языка, запустит приложение со стандартным языком, который в нашей ситуации — английский, а для того, что бы приложение запустить на русском, необходимо менять язык системы, что не очень хорошо.
Вот для этой и многих подобных ситуаций есть решение, в настройки вывести пункт выбора языка, который включает автоматический выбор языка, английский, русский, etc. (смотря какие требуются).

Читать дальше →
Всего голосов 51: ↑40 и ↓11+29
Комментарии42

Наш опыт участия в 10K Apart или как ужать 40 Кбайт кода в 10

Время на прочтение6 мин
Количество просмотров8.7K
Не так давно на Хабре уже писали о контесте 10К Apart — соревновании на лучшее веб-приложение общим объемом до 10К, созданное с использованием только клиентских технологий: (HTML, CSS, Javascript, SVG и т.д).

image

Я хочу представить вашему внимаю нашу работу для этого контеста, которую мы с private_face делали по вечерам в течение двух недель: адвенчуру в стиле dungeon-crawler под названием «Fontanero» (исп. водопроводчик).
Читать дальше →
Всего голосов 266: ↑264 и ↓2+262
Комментарии123

Правильная работа с БД в Android

Время на прочтение7 мин
Количество просмотров153K
Приветствую всех дроидеров в эти непростые для нас времена.
Честно говоря, заколебала эта шумиха о патентах, войнах и т.д., но в данной статье речь пойдет не об этом.
Я не собирался писать статью на данную тему, так как везде всего полно о работе с базой данных в Android и вроде бы все просто, но уж очень надоело получать репорты об ошибках, ошибках специфичных и связанных с БД.
Поэтому, я рассматрю пару моментов с которыми я столкнулся на практике, чтобы предостеречь людей, которым только предстоит с этим разбираться, а дальше жду ваших комментариев на тему решения указанных проблем после чего внесу изменения в пост и мы сделаем отличный туториал, который будет образцом работы с SQLite в Android не только для начинающих, но и для тех, кто уже знаком с основами и написал простые приложения.
Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии31

Как мотивировать себя, когда кончился энтузиазм

Время на прочтение3 мин
Количество просмотров17K
Прочитал один из вопросов в разделе q&a и решил перевести статью на эту тему. Кто знает, может эти советы помогут человеку

Вас когда-нибудь переполнял энтузиазм и вдохновение для новых достижений?

Допустим, вы почувствовали такое в начале большого дела. К примеру, вы определились, что хотите наконец похудеть, или в этом году вы задумали открыть небольшой бизнес, о котором вы мечтали.

Мотивация может дать вам большое количество энергии, когда вы приступаете к чему-то новому. Но проблема в том, что она имеет свойство заканчиваться. После нескольких недель диеты или упорного труда над своим бизнесом очень легко почувствовать себя удрученным.
Читать дальше →
Всего голосов 73: ↑52 и ↓21+31
Комментарии59

Об опыте написания AI к простенькому 2D шутеру

Время на прочтение3 мин
Количество просмотров5.5K
Приветствую хаброчитателей, хочу вам рассказать об опыте написания AI к простенькой 2D игрушке в далеких уже 2003-2004 годах. Скажу сразу что написание сочинений в жизни мне никогда не удавалось, однако я буду стараться.
Скорее всего специалистам геймдева данный пост покажется нубским, но надеюсь что остальным будет интересно, итак, начнем с начала.
Читать дальше →
Всего голосов 76: ↑74 и ↓2+72
Комментарии22

Сравнение потребления памяти у разных структур хранения данных

Время на прочтение2 мин
Количество просмотров25K
Различные структуры в Java потребляют разное количество памяти. Поэтому для нас очень важен выбор наиболее эффективного метода хранения данных.

Какая будет разница по потреблению памяти между конструкциями `new int[1024]` и `new Integer[1024]`?

int[] ints = new int[1024];
for (int i = 0; i < ints.length; i++) ints[i] = i;

Integer[] ints = new Integer[1024];
for (int i = 0; i < ints.length; i++) ints[i] = i;

Узнать
Всего голосов 50: ↑41 и ↓9+32
Комментарии43

Создание композитных компонентов на Android

Время на прочтение8 мин
Количество просмотров40K
Приветствую всех Хабра-жителей и Андроид-ценителей!
Композитный в нашем случае означает «состоящий из нескольких», но вы это и так знаете.
Итак, есть Задача:
  • Необходимо вывести блок данных, включающий в себя текст, картинки, кнопки и т.д.
    (В нашем случае это будет короткий анонс передачи по ТВ)
  • дизайн блока нарисован специально нанятым дизайнером и вам нельзя отсупать от него ни на пиксель
  • Это блок может иметь какую-то внутреннюю логику работы и компоненты могут влиять друг на друга (у нас «внутренней логикой», будет установка символа "*" в заголовок передачи и смена цвета фона если была нажата кнопка «Буду смотреть»)
  • Таких блоков может быть много и информация для них получается уже в процессе работы приложения
  • как всегда, в процессе работы, дизайн может быть пересмотрен, и вам надо быстро внести изменения в программу не переписывая все с самого начала


Читать дальше
Всего голосов 35: ↑32 и ↓3+29
Комментарии10

Механика казуальных игр

Время на прочтение16 мин
Количество просмотров15K
На хабрахабре периодически предпринимаются попытки описания процесса игроделания с самых разных сторон — от воплощения 3D-графики до создания сетевых протоколов. Эти темы, безусловно, важны, однако довольно узкие. В данной статье я попробую использовать более широкий подход — рассмотрю принцип создания игрового движка для т.н. казуальных игр. Описываемая механика вполне подойдет для создания всяческих пакманов, арканоидов, платформеров и пр. Описание процесса будет на примере примитивного scrolldown шутера (из ностальгических чувств к Zybex и Xevious) — летаем по полю, сбиваем метеориты. Инструмент — Qt.
Читать дальше →
Всего голосов 63: ↑56 и ↓7+49
Комментарии38

Sliding экранов внутри приложения

Время на прочтение6 мин
Количество просмотров54K


Здравствуйте!

Современные мобильные устройства в первую очередь ориентированы на управление пальцами, в частности жестами и прикосновениями. Эта особенность добавляет определенную специфику в организацию пользовательских интерфейсов. На главную роль выходят интуитивно понятные решения, требующие от пользователя наименьших усилий и при этом ненавязчивые, сохраняющие максимум полезного пространства, т.е. не загромождающие пользовательский интерфейс.

Примером таких решений является переключение между рабочими экранами в Android, где для перемещения от одного экрана к другому достаточно выполнить жест вправо или влево. О возможной реализации подобного решения и пойдет речь в данном посте.
Читать дальше →
Всего голосов 42: ↑38 и ↓4+34
Комментарии33

Как оформить своё дело (в Украине)

Время на прочтение7 мин
Количество просмотров11K
В этом посте я написал длинный текст о том как:
  • оформиться в Украине
  • стать физическим лицом-предпринимателем
  • платить единый налог
  • упростить себе жизнь при помощи интернет отчётности

Я описываю свой личный опыт. Простите за возможные ошибки. Навеяно этим постом
Исходные данные такие: Украина, удаленная работа с иностранным заказчиком, разработка сайтов.
Читать дальше →
Всего голосов 119: ↑105 и ↓14+91
Комментарии154

In-app purchasing или внутренние платежи в приложениях для Android

Время на прочтение7 мин
Количество просмотров57K

О чем это вообще?



С версией приложения Android Market 2.3.0 для разработчиков приложений для платформы Android открылась возможность предоставлять пользователям платежи внутри самих приложений. Теперь можно продавать уровни и артефакты, видео, музыку, плагины и прочее, пользуясь лишь встроенными средствами платформы. Давайте увидим, как это можно сделать.

Что нам понадобится?



Как обычно, любимая IDE, Android SDK и пример приложения.
Так же будет полезным представлять себе, что такое Service, BroadcastReceiver и, конечно, Activity.

Так же нам понадобится разрешение в файле манифеста —

<uses-permission android:name="com.android.vending.BILLING"/>, без него ничего не заработает.

Как это в принципе работает?



Читать дальше →
Всего голосов 42: ↑39 и ↓3+36
Комментарии22

In-App Purchase в Android приложениях

Время на прочтение3 мин
Количество просмотров91K
1. Что это такое и зачем это нужно?

In-App Purchase, грубо говоря, представляет собой сервис покупки виртуальных товаров внутри приложения (например игровой валюты, новых уровней, игровых предметов и т.д.). Применяется он в основном в играх, в тех случаях, когда встает вопрос о необходимости заработка на своем творении, а распространять его платно не особо хочется (или нет смысла).
Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии3

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность