Урок 117. Виджеты. Создание. Lifecycle

Обсуждение уроков
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 117. Виджеты. Создание. Lifecycle

Сообщение damager82 » 13 янв 2013, 23:00

В этом уроке:
- создаем простой виджет
- разбираемся в его Lifecycle


Click here to read this article!
Последний раз редактировалось damager82 25 май 2017, 13:39, всего редактировалось 6 раз.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

dubok79
Сообщения: 12
Зарегистрирован: 24 ноя 2012, 13:41

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение dubok79 » 17 янв 2013, 18:34

Есть такая замечательная программа ByBalance, так вот там виджет занимает почти все отведенное ячейкой пространство причем это никак не зависит от лончера или версии андроида. Если виджет делать как в вашем уроке, все вроде бы замечательно, но в некоторых лончерах таких прошивок как MIUI или EMUI виджет сжимается до неприличия, а вышеуказанный ведет себя нормально. Пробовал в разных лончерах виджет занимает не всю ячейку. На эмуляторе все нормально работает, т.е. ожидаемо. Может быть вы в курсе как сделать размеры виджета максимальными и не зависеть от лончеров и прочего. Спасибо.

dubok79
Сообщения: 12
Зарегистрирован: 24 ноя 2012, 13:41

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение dubok79 » 18 янв 2013, 20:58

Что, никаких идей нету?

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение damager82 » 18 янв 2013, 23:19

dubok79 писал(а):Что, никаких идей нету?
Походу создатели этих прошивок использовали другой алгоритм рассчета ячеек, чем указано в хелпе. Я когда-то в литературе встречал еще формулу 74 * х - 2. Попробуйте ее использовать. Если тоже не катит, то выясните, плз, опытным путем, какое кол-во dp соответствует одной ячейке в этих прошивках.
Это будет полезная инфа, я добавлю ее в Урок.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

dubok79
Сообщения: 12
Зарегистрирован: 24 ноя 2012, 13:41

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение dubok79 » 21 янв 2013, 20:10

damager82 писал(а):
dubok79 писал(а):Что, никаких идей нету?
Походу создатели этих прошивок использовали другой алгоритм рассчета ячеек, чем указано в хелпе. Я когда-то в литературе встречал еще формулу 74 * х - 2. Попробуйте ее использовать. Если тоже не катит, то выясните, плз, опытным путем, какое кол-во dp соответствует одной ячейке в этих прошивках.
Это будет полезная инфа, я добавлю ее в Урок.
Я имел ввиду не совсем это. Но не суть важно. Если лайот виджета растянуть match_parent, то лончер будет сам руководить этим виджетом. Если задать размер, то он будет жестким, но опять же не везде, например на EmotionUI или MIUI китайских брендов HUAWEI и Xiaomi. Вообще формула 74*x-2 работает только по высоте, если же использовать ее по ширине, то андроид будет неверно расчитывать занимаемое место. Т.е. если указать в файле provider размер 72dp x 72dp, то это будет размер 2х1, а не ожидаемый 1х1. Опытным путем получилось если ячейку считать 64dp, то на любых SDK расчитывается верно. Ну а дальше размер виджета будет во многом зависеть от лончера, НО указанный мною в первом посте виджет стабилен ВЕЗДЕ. Связывался с разработчиком, он молчит, а жаль...

gera
Сообщения: 9
Зарегистрирован: 11 окт 2012, 23:30

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение gera » 25 фев 2013, 22:47

Помоему RalativeLayout не может содержать атрибут android:orientation. так ведь?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение rezak90 » 25 фев 2013, 23:29

gera писал(а):Помоему RalativeLayout не может содержать атрибут android:orientation. так ведь?
содержать может только он ничего не будет значить, эклипс возможно даже подчёркнёт атрибут но приложение скомпилиться
R.id.team
Политика на форуме запрещена

dubok79
Сообщения: 12
Зарегистрирован: 24 ноя 2012, 13:41

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение dubok79 » 25 фев 2013, 23:32

А причем тут виджеты?

Prospekt
Сообщения: 41
Зарегистрирован: 30 май 2012, 23:06

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение Prospekt » 11 мар 2013, 09:01

Имеется: Виджет аля часы с анимацией.
Вроде работуют, но есть но. Т.к. анимация включается 4 раза за секунду (или чаще), не хотелось бы каждый раз лезть в SharedPreferences и смотреть какие параметры для анимации установлены там для конскретного id выджета. Согласитесь, каждый раз из-за такой ерунды запускать инициализацию SharedPreferences, а это и чтение с диска (лишний раз) и парсинг. Решил в свой виджет добавить некий Хэш, в котором для id возвращаются нужные данные. Т.е. если ничего перезаписывать не нужно, то можно прочитать быстро какие были последние настройки. Эти настройки изменяются после каждого измениея вместе с записью вSharedPreferences. Я хочу сказать, что записывать значения - это редко, но часто только читать.

Но тут меня ждало разочарования. Дело в том, что для каждого вызова (буть то анимация или обнавления) виждет как объект создается занова и соотвественно хэш пропадает. Можно ли как-нибудь (флагами какиминибудь) сделать так, чтобы виждет (сам BroadcastReseiver) висел в памяти, а не воссоздавался?

Может есть другие подходы к анимированию виждета?

*******
Вопрос решён, элементарно, надо было юзать static.

Аватара пользователя
shubniggurath
Сообщения: 7
Зарегистрирован: 09 авг 2013, 11:52
Контактная информация:

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение shubniggurath » 12 авг 2013, 16:20

Здравствуйте. Спасибо большое за ваши уроки- пока что полезнее чем они ничего не встретил.
В своем уроке №117 вы написали следующее:
" Они позволяют просмотреть какую-либо информацию из основных приложений, либо повлиять на поведение этих приложений."
А где можно более подробно узнать именно про то, как влиять на поведение приложений? Например когда ставится и приложение и виджет для него, какой механизм взаимодействия?
http://playnoread.ru - леплю, творю, малюю

Аватара пользователя
mrJack
Сообщения: 11
Зарегистрирован: 27 ноя 2012, 19:38
Откуда: Сыктывкар
Контактная информация:

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение mrJack » 27 авг 2013, 19:17

shubniggurath писал(а):Здравствуйте. Спасибо большое за ваши уроки- пока что полезнее чем они ничего не встретил.
В своем уроке №117 вы написали следующее:
" Они позволяют просмотреть какую-либо информацию из основных приложений, либо повлиять на поведение этих приложений."
А где можно более подробно узнать именно про то, как влиять на поведение приложений? Например когда ставится и приложение и виджет для него, какой механизм взаимодействия?
Хороший вопрос! Тоже заинтересовало :geek:

michail89
Сообщения: 1
Зарегистрирован: 04 сен 2013, 23:33

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение michail89 » 05 сен 2013, 00:04

у меня эмулятор валится с ошибкой "Sorry! The aplication xxxx (process yyyyy) has stopped unexpectedly. Please try again."

В логах грязно ругается на то, что якобы класс найти не может:
09-04 21:01:19.896: E/AndroidRuntime(319): Caused by: java.lang.ClassNotFoundException: com.example.widget.Widget in loader dalvik.system.PathClassLoader[/data/app/com.example.widget-2.apk]

В манифесте всё прописано верно - для ресивера класс указан. этот класс наследует AppWidgetProvider. Название класса соответствует названию класса, указанному в манифесте.

Подскажите пожалуйста что я упустил?

Аватара пользователя
shtil
Сообщения: 27
Зарегистрирован: 04 июл 2013, 10:01

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение shtil » 24 сен 2013, 20:08

michail89,
ты просто забыл свой файл класса Widget положить в package="com.example.simplewidget"

Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение Isaev » 07 окт 2013, 12:42

damager82, вы бы сделали тему со списком уроков по порядку и прикрепили для упрощения навигации, а то очень не удобно уже становится восстанавливать последовательность

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение Foenix » 07 окт 2013, 13:22

Isaev писал(а):damager82, вы бы сделали тему со списком уроков по порядку и прикрепили для упрощения навигации, а то очень не удобно уже становится восстанавливать последовательность
вообще-то на сайте стартандроид есть список всех уроков, оттуда, из каждого, в конце есть ссылка на переход в соответствующую тему-обсуждение.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение Isaev » 07 окт 2013, 13:36

а, с сайта! я про сайт то и не знал, пользуюсь только форумом) спасибо

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение Foenix » 07 окт 2013, 13:38

а зря, там много интересного еще есть ;)
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
anber
Сообщения: 584
Зарегистрирован: 10 июн 2013, 15:05
Откуда: UA

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение anber » 07 окт 2013, 13:58

Форум становится популярнее сайта, есть повод для гордости :lol:
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение Foenix » 07 окт 2013, 14:03

anber писал(а):Форум становится популярнее сайта, есть повод для гордости :lol:
иногда кажется, что это наоборот, не очень хорошо. Народ уже спрашивает зачастую не только то, что можно быстро нагуглить, но и то, что разобрано по косточкам на тутошних уроках.. Все куда-то торопятся)
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
anber
Сообщения: 584
Зарегистрирован: 10 июн 2013, 15:05
Откуда: UA

Re: Урок 117. Виджеты. Создание. Lifecycle

Сообщение anber » 07 окт 2013, 14:07

Foenix писал(а):
anber писал(а):Форум становится популярнее сайта, есть повод для гордости :lol:
иногда кажется, что это наоборот, не очень хорошо. Народ уже спрашивает зачастую не только то, что можно быстро нагуглить, но и то, что разобрано по косточкам на тутошних уроках.. Все куда-то торопятся)
Хорошо хоть пока еще немного вузов где преподают программирование на андроиде, ато ближе к сессии форум лег бы 8-)
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.

Ответить