Страница 1 из 3

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

Добавлено: 13 янв 2013, 23:00
damager82
В этом уроке:
- создаем простой виджет
- разбираемся в его Lifecycle


Click here to read this article!

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

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

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

Добавлено: 18 янв 2013, 20:58
dubok79
Что, никаких идей нету?

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

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

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

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

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

Добавлено: 25 фев 2013, 22:47
gera
Помоему RalativeLayout не может содержать атрибут android:orientation. так ведь?

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

Добавлено: 25 фев 2013, 23:29
rezak90
gera писал(а):Помоему RalativeLayout не может содержать атрибут android:orientation. так ведь?
содержать может только он ничего не будет значить, эклипс возможно даже подчёркнёт атрибут но приложение скомпилиться

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

Добавлено: 25 фев 2013, 23:32
dubok79
А причем тут виджеты?

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

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

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

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

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

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

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

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

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

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

Добавлено: 05 сен 2013, 00:04
michail89
у меня эмулятор валится с ошибкой "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. Название класса соответствует названию класса, указанному в манифесте.

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

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

Добавлено: 24 сен 2013, 20:08
shtil
michail89,
ты просто забыл свой файл класса Widget положить в package="com.example.simplewidget"

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

Добавлено: 07 окт 2013, 12:42
Isaev
damager82, вы бы сделали тему со списком уроков по порядку и прикрепили для упрощения навигации, а то очень не удобно уже становится восстанавливать последовательность

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

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

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

Добавлено: 07 окт 2013, 13:36
Isaev
а, с сайта! я про сайт то и не знал, пользуюсь только форумом) спасибо

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

Добавлено: 07 окт 2013, 13:38
Foenix
а зря, там много интересного еще есть ;)

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

Добавлено: 07 окт 2013, 13:58
anber
Форум становится популярнее сайта, есть повод для гордости :lol:

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

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

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

Добавлено: 07 окт 2013, 14:07
anber
Foenix писал(а):
anber писал(а):Форум становится популярнее сайта, есть повод для гордости :lol:
иногда кажется, что это наоборот, не очень хорошо. Народ уже спрашивает зачастую не только то, что можно быстро нагуглить, но и то, что разобрано по косточкам на тутошних уроках.. Все куда-то торопятся)
Хорошо хоть пока еще немного вузов где преподают программирование на андроиде, ато ближе к сессии форум лег бы 8-)