Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.82
alla_tre
1 / 1 / 0
Регистрация: 25.05.2013
Сообщений: 11
#1

Написание календаря на Android - Программирование Android

07.12.2013, 22:40. Просмотров 3900. Ответов 5
Метки нет (Все метки)

Здравствуйте, очень нужна ваша помощь: для приложения нужен календарь на пол экрана, желательно написанный с нуля, а не встроенный. При заходе в приложение, календарь должен показывать текущий месяц с подсвеченной текущей датой, должна быть возможность либо "прокручиванием", либо другими кнопками менять месяц. Также можно выбирать даты нажатием (с соответствующими визуальными эффектами). На андроид пишу первый раз, поэтому имеется несколько вопросов:
1) сам календарь думала реализовать как набор 42 кнопки (6 рядов по 7 штук, в одной ряду дни от пнд до воскресенья) на TableLayout, не знаю, хороший ли это вариант, может кто-то посоветует лучше?
2) при нажатии на кнопку с датой она должна подсвечиваться и оставаться другого цвета после нажатия. Нашла про селектор, пробовала разные комбинации со state_pressd, state_selected и т.д., но никак не получается этого добиться. Когда нажимаешь, она меняет цвет, но после того как отпустишь, возвращается к исходному. В итоге в обработчик нажатия кнопки запихнула функцию SetActivated(true), с которой в селекторе с state_activated всё нормально, но получается, что при нажатии на другую кнопку надо сбрасывать Activated у предыдущей, а как это реализовать, не знаю. И вообще, стоит ли использовать setActivated?
3) есть ли способ создать 42 кнопки программно? И как лучше организовать присвоение кнопкам чисел месяца?

Очень надеюсь на Ваше небезразличие.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2013, 22:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написание календаря на Android (Программирование Android):

Android Studio, по поводу календаря? - Программирование Android
Всем доброго времени суток) Скажите пожалуйста люди, как в Android Studio сделать календарь? Но чтобы он находился в кнопке и когда на него...

Откуда берутся атрибуты android:layout_width и android:layout_height в элементе LinearLayout? - Программирование Android
Недавно начал изучать Android API, а сегодня более менее разобрал основы синтакиса XML. Затем стал разбирать следующий пример: ...

Android studio, как запускать программу сразу на android смартфоне подключенному к usb? - Программирование Android
android studio, как запускать программу сразу на android смартфоне подключенному к usb?

Ошибка: Caused by Android java.lang.ClassCastException: android.app.Application cannot be cast - Программирование Android
Здравствуйте. Очень нужен ваш совет. При запуске приложения появляется ошибка: Caused by: java.lang.ClassCastException:...

Создание календаря - Программирование Android
Из каких компонентов кроме CalendarView создаётся календарь? Хочу создать календарь наподобие стандартного в Android (клацнул на дату -...

Как приложение Android написать на С++ в Android NDK, чтоб получить *.apk? Нужен мануал - Программирование Android
Уже не в первый раз задаю вопрос. Молчание. В лучшем случае - "RTFM" и точка. Так вот, официального мануала, где есть ответ на...

5
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
08.12.2013, 03:26 #2
сам календарь еще не писал (на андроиде), но...
1) вполне можно. Я бы попытался нарисовать самому на канвасе - будет "гибче" дизайн, легче вставить картинки, но с кнопками проще.
2) можно и так. запоминаете в общей переменой прошлую нажатую и при следующем нажатии (если !=nul) отжимай ее. могу еще предложить что-то вроде этого:
((LinearLayout) findViewById(R.id.LinearLayout_1)).setBackgroundResource(R.drawable.selector_pressed);
3.1) знаю что можно задать програмно.
3.2) циклом по дням в пределах месяца. ловиш начальный день недели этого месяца, дней в прошлом месяце... а дальше простая формула. вполне можно зафиксировать названия кнопок как bt_1_1..bt_1_7, bt_2_1..bt_6_1 и заполнять их используя имена

Добавлено через 4 минуты
3.1) сам не пробовал, но возможно поможет http://startandroid.ru/ru/uroki/vse-...ilozhenii.html
1
alla_tre
1 / 1 / 0
Регистрация: 25.05.2013
Сообщений: 11
08.12.2013, 18:26  [ТС] #3
Спасибо огромное!
0
GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.12.2013, 11:21 #4
Лично я для календаря юзал GridView, генерировал одним циклом 42 кнопки. Самая сложность была в том, чтобы узнать день недели первого дня месяца, пришлось заюзать библиотеку joda-time, так как в стандартных функциях календаря такого я просто не мог найти (если кто знает - подскажите).

Для нажатий и подсветки одного дня, а также выделения недели или всего месяца сразу, я использовал кастомный item + немного шаманства.
Кастомный item подставлял в BaseAdapter GridView и менял у него бекграунд. У меня правда там еще иконки разные алармов были. А чтобы убрать кликнутый месяц - я просто пробегался по 42 дням и очищал бекграунд)

Ну а дальше уже дело техники)
Если возникнут вопросы - пишите.

Добавлено через 50 минут
чтобы календарь был на полэкрана, то надо создать parent например LinearLayout, положить в него два лайаута и задать им weight = 1.

Чтобы подстроить высоту GridView под высоту экрана, необходимо высчитать высоту LinearLayout. Это возможно сделать только после отрисовки LinearLayout.

Поэтому юзаем простую штуку LinearLayout.post(new Runnable( ... здесь получаем getMeasureHeight, делим его на количество строк календаря и применяем к item.... ));
1
alla_tre
1 / 1 / 0
Регистрация: 25.05.2013
Сообщений: 11
10.12.2013, 22:10  [ТС] #5
И Вам спасибо огромное! Думаю, что обязательно обращусь к Вам с вопросами.
0
alla_tre
1 / 1 / 0
Регистрация: 25.05.2013
Сообщений: 11
22.12.2013, 01:38  [ТС] #6
Кое-как разбираюсь с чужими подсказками, в итоге сделала календарь через GridView, где каждый item - LinearLayout c TextView на нём. Вроде всё более-менее нормально, но есть несколько разномастных вопросов:
1. Селектор. Взяв за основу http://stackoverflow.com/questions/7...-draw-dividers, а затем меняя последовательность состояний в селекторе, всего раз удалось добиться, чтобы кнопка после нажатия оставалась другого цвета. К сожалению, этот момент канул в лету( Я не знаю, в чём дело, я уже и селектор меняла, и GridView настраивала по-разному, и всё равно не выходит толком. Хотелось бы, чтобы кто-нибудь или указал, как правильно, или предложил альтернативный вариант)
2. Реально ли сделать, например, чтобы при движении пальцем на GridView, например, слева направо его содержимое менялось? Желательно, с какими-нибудь красивыми визуальными эффектами, если там есть такая возможность (что-то наподобие проигрывателя на андроиде: проводишь слева направо по обложке композиции - переключает на следующую, обложечка при этом мягко заменяется на другую). Нашла ViewPager, но не знаю, получится ли с ним сделать (и если получится, то сколько надо будет создавать фрагментов - 3 с текущим, предыдущим и следующим месяцами, а потом динамически их менять??)
3. TextView.setText. Метод работает очень странно, на одним строках работает, на других вылетает, на одних CharSequence работает нормально, на других - вылетает. В чём может быть дело?

Заранее спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2013, 01:38
Привет! Вот еще темы с ответами:

Android NDK. Как пользоваться? Когда стоит использовать его вместо Android SDK? - Программирование Android
Можно ли писать в нем готовые приложения Android?

Android.support.v4.app.FragmentActivity не работает в Android Studio - Программирование Android
объясните пожалуйста,как в андроид студио добавить вышеуказанную библиотеку,чтобы работало у меня вот это Активити package...

Выбор мощного android смартфона до 10 рублей, для тестирования проектов Android Studio, что посоветуете? - Программирование Android
Какую фирму посоветуете?

Запуск игры mr.Nom через Android Studio (по книге марио цехнер программирование игр под android) - Программирование Android
Привет всем! Для тех кто читал книгу - в конце 6ой главы мы закончили писать код игры. В книге написано что - игра готова. Но в самих...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
22.12.2013, 01:38
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru