- PVSM.RU - https://www.pvsm.ru -

Путаница на хакатоне в Омске

Путаница на хакатоне в Омске
Я думаю многие знают, что такое хакатон [1], более того о глобальном GTUG хакатоне (18-19 февраля) в Москве [2], Питере [3] и Киеве [4] уже писали на хабре. Я хочу рассказать о своем участии в омском android хакатоне и о том, что из этого вышло.

Фотографии, рассказ и ссылка на готовое приложение в маркете под катом.

До хакатона

Когда я узнала, что мой коллега Алексей Коровянский организовывает android хакатон, я сразу же захотела участвовать. Даже несмотря на то, что работаю ios-разработчиком и ничего про android тогда еще не знала. Позвала своего брата kmmbvnr [5]. И мы стали думать над идеей… Вариантов была масса — от приложения с расходами до чата для поклонников формулы 1. Все идеи казались сырыми и сложными для людей без опыта android разработки. Хотелось что-то простое и классное. Ответ мы нашли рядом. Моя племянница (3 года) обожает игру на ipod-e, в которой можно составлять животных, меняя им головы, туловища и ноги. И всегда спрашивает родителей, кто получился в итоге. Так мы пришли к “Путанице”. Главной фичей решили сделать озвучку (чтобы племянница лишний раз не отвлекала папу). Подумали, что под андройд это сделать несложно даже новичку и, догорившись с дизайнером, стали ждать сам хакатон.

Первый день

Хакатон в Омске собрал более 15 команд с самыми разными идеями проектов — например, гео помощник, который посылает тебе напоминания в зависимости от твоего местоположения, или игра с дополненой реальностью и даже приложение учета расходов ;)
Все идеи были классные, всем очень хотелось скорее взяться за дело!

Для начала нам надо было сделать бесконечный скроллер с разными картинками — все из чего игра и состоит :)
Для этого использовали ViewPager. Немного колдовства и к обеду мы заставили его быть бесконечным — в FragmentPagerAdapter первым элементом массива делаем последнюю картинку, а последним — первую. И в OnPageChangeListener-е просто перескакиваем на начало или конец, смотря до чего доскроллили.

public void onPageScrollStateChanged(int state) {
	int itemCount = mPagerAdapter.getCount();
	 if (state == ViewPager.SCROLL_STATE_IDLE) {
		 int currentItem = mViewPager.getCurrentItem();
		 if(currentItem == 0) {
			 mViewPager.setCurrentItem(itemCount-2, false);
		 }
		 else if(currentItem == itemCount-1) {
			 mViewPager.setCurrentItem(1, false);				 
		 }
	 }	
}

Потом разобрались как в layout правильно скейлить картинки, оказалось даже проще, чем думали — поставили layout_weight.

    <android.support.v4.view.ViewPager
	        android:id="@+id/top_pager"
	        android:layout_width="fill_parent"
        	android:layout_height="0dip"
       	  	android:layout_weight="1.65"
        	/>
    
    <android.support.v4.view.ViewPager
	        android:id="@+id/middle_pager"
        	android:layout_width="fill_parent"
        	android:layout_height="0dip"
        	android:layout_weight="1"
        	/>    
    <android.support.v4.view.ViewPager
	        android:id="@+id/bottom_pager"
        	android:layout_width="fill_parent"
        	android:layout_height="0dip"
        	android:layout_weight="0.88"
        	/>

Вот в общем-то и все приложение — когда у нас все это наконец-то получилось, мы были очень рады!
К концу первого дня мы добавили трех животных, нарисованных нашим дизайнером и научили наше приложение мяукать, а точнее мы научились проигрывать звуки на android-e.

К слову сказать, организаторы постарались — был и обед и развлекательная программа (играли в игру “Завалинка [6]”).

Второй день

Второй день начался активно — все с энтузиазмом продолжили кодить.

Путаница на хакатоне в Омске

Просто менять картинки и слушать название — это для подрастающего ребенка скучно. Решили, что нужно внести какой-то challenge. Придумали уровень — собери животного на время. При этом время уменьшается, а сложность увеличивается (от кота до гусе-дельфино-пчелы).
В темпе хакатона мы справились быстро (но код с таймером мы никому не будем показывать. Никому и никогда — run в run-e это слишком).

Оставалось самое сложное — озвучка. Записали голос kmmvbnr, убрали шумы, разрезали, добавили в приложение. В итоге получилось 2 варианты игры — меняешь голову, туловище или ноги животному и слушаешь название (например кото-гусе-лошадь или дельфино-пчела) или наоборот, слушаешь задание (а как выглядит кот?) и собираешь кота.

Для самых маленьких добавили: картинки меняются, если потрясти девайс. Кстати, shake detection в iOS [7] заметно легче, чем в android [8].

Ну и эксперты [9] тоже не сидели без дела и за время хакатона написали игру — нужно было очистить экран на скорость. Победители получили призы.

Путаница на хакатоне в Омске

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

image

image

image

Итоги хакатона

Наше приложение понравилось не только другим участникам, но и экспертам — наша игра заняла первое место!

image

Узнать android, написать приложение и все за 2 дня возможно только на хакатоне. Хакатон в Омске удался на 100%!

image

Все фотографии с хакатона [10] и отзывы участников [11].

После хакатона

Хоть наше приложение и выглядело законченым, оставалось еще много чего доделывать. При тестировании на смартфонах выяснилось, что памяти не хватает, пришлось ужимать картинки для разных экранов. Долго боролись с проблемой, чтобы на разных девайсах все выглядело красиво (ресурсы заметно разрослись: от одной папки drawable до семи). Поменяли озвучку, добавили картинок. Наконец 29 февраля решили, что русская версия готова и выложили в маркет.

Вот, что вышло в итоге

Путаница в маркете [12]

Планы

В ближайших планах добавить английскую озвучку и сделать ios приложение (которое уже почти готово, проходит бета-тестирование племянницей).
И, естественно, выступить на финальном демофесте 18го марта и побороться за главный приз :)

Автор: vitaa


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/android/3349

Ссылки в тексте:

[1] хакатон: http://www.google.com/url?q=http%3A%2F%2Fomskgtug.blogspot.com%2F2012%2F01%2Fandroid-18-19.html

[2] Москве: http://www.google.com/url?q=http%3A%2F%2Fhabrahabr.ru%2Fblogs%2Fi_am_advertising%2F138190%2F&sa=D&sntz=1&usg=AFQjCNGl0Jr9OyojmLCHa3hxFmel0HXqQg

[3] Питере: http://habrahabr.ru/blogs/i_am_advertising/138200/

[4] Киеве: http://www.google.com/url?q=http%3A%2F%2Fhabrahabr.ru%2Fblogs%2Fandroid%2F138474%2F&sa=D&sntz=1&usg=AFQjCNF0Dy91fTRdUocEb8oKbi23KM0TXg

[5] kmmbvnr: http://habrahabr.ru/users/kmmbvnr/

[6] Завалинка: http://www.google.com/url?q=http%3A%2F%2Fru.wikipedia.org%2Fwiki%2F%25D0%2597%25D0%25B0%25D0%25B2%25D0%25B0%25D0%25BB%25D0%25B8%25D0%25BD%25D0%25BA%25D0%25B0_%2528%25D0%25B8%25D0%25B3%25D1%2580%25D0%25B0%2529&sa=D&sntz=1&usg=AFQjCNE8PXl0s_ryxLl3rpmI9buTOFTXIQ

[7] iOS: https://developer.apple.com/library/ios/#DOCUMENTATION/EventHandling/Conceptual/EventHandlingiPhoneOS/MotionEvents/MotionEvents.html

[8] android: http://stackoverflow.com/questions/2317428/android-i-want-to-shake-it

[9] эксперты: http://www.google.com/url?q=http%3A%2F%2Fomskgtug.blogspot.com%2F2012%2F02%2Fblog-post.html

[10] Все фотографии с хакатона: https://plus.google.com/u/0/?tab=wX#photos/102520175692033125056/albums/posts

[11] отзывы участников: http://omskgtug.blogspot.com/2012/03/blog-post.html

[12] Путаница в маркете: https://play.google.com/store/apps/details?id=cc.wthr.mixup