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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
ArGet
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 3
#1

Размер виджета рабочего стола, после изменения его размера Android - Программирование Android

20.03.2013, 07:25. Просмотров 1285. Ответов 4
Метки нет (Все метки)

Здравствуйте, коллеги.

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

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


А идея в том, что при изменении размера виджета количество иконок будет изменяться, но четкое количество, а не так как реализовано в виджете "Сетка Evernote"
Кликните здесь для просмотра всего текста


Вот часть кода, который я смог написать не без помощи интернета, но он определяет минимальные и максимальные значения виджета и не решает главной проблемы, определения количества занимаемых ячеек:

Код
public void onAppWidgetOptionsChanged(Context ctxt, AppWidgetManager mgr, 
                                      int appWidgetId, Bundle newOptions){

    RemoteViews updateViews = new RemoteViews(ctxt.getPackageName(), R.layout.widget);

    String msg = String.format(Locale.getDefault(),
                      "[%d-%d] x [%d-%d]",
                      newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH),
                      newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH),
                      newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT),
                      newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT));

    updateViews.setTextViewText(R.id.size, msg);

    mgr.updateAppWidget(appWidgetId, updateViews);
}
Если кто может чем-то помочь, буду очень признателен.

С уважением, Гетьманенко Артем
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2013, 07:25     Размер виджета рабочего стола, после изменения его размера Android
Посмотрите здесь:

Открытие диалога при удалении виджета с рабочего стола - Программирование Android
Как открыть диалог при клике по виджету я умею, нашел пример. Там делается так Intent intent = new Intent(context, InputDialog.class);...

Почему Android Studio не сразу подхватывает изменения кода(только после переустановки apk)? - Программирование Android
Иногда после изменения кода в Android Studio (к примеру изменю вывод Log.d )и запуска его смартфоне или эмуляторе, приложение, как будто бы...

Не удаляется приложение с рабочего стола - Программирование Android
Свое приложение закинул на телефон,установил,проверил все работает. Решил удалить как обычно. Удерживаю иконку приложения и перетаскиваю в...

Как реализовать отслеживание изменения даты в android? - Программирование Android
В БД есть записи которые должны в программе изменятся в зависимости от текущей даты. То есть менять позицию в ExpandableListView в...

Отловить изменения в статус баре Android Java - Программирование Android
Привет, ребята. Появилась нужда в отлове оповещений в статус баре т.е. к примеру пришедшее сообщение из приложения vk, Hangouts или...

Одинаковый ли размер стека у разных версиях/девайсах Android? - Программирование Android
Столкнулся с проблеммой stack overflow... пришлось резать файлы на куски. Но все ровно в каждой части подхожу до предела стека. Тестирую на...

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

Как автоматически изменять размер текста в spinner в зависимости от размера экрана? - Программирование Android
Здравствуйте. В программе использую две темы светлую и темную: <style name="BlackTheme" parent="android:style/Theme.Holo"> <item...

Как обеспечить одинаковый размер картинки на разных экранах Android? - Программирование Android
Как?

Android label меняет размер текста при смене ориентации - Программирование Android
Я заметил что текст названия приложения меняет свой размер при смене ориентации. Но в большинстве приложений нет такого. Где находится...

Событие после изменения текста в TextView - Программирование Android
Подскажите пожалуйста, какое событие срабатывает после того как изменился текст в TextView, чтобы туда повесить действие. Цель такая, текст...

Не могу обновить RecyclerView после изменения item - Программирование Android
данные для списка берутся из Firebase, у DatabaseReference//Firebase, есть два метода: onChildAdd и onChildChanged, первый...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
20.03.2013, 22:09     Размер виджета рабочего стола, после изменения его размера Android #2
На хабре я нашел и использую вот такой код. Только он работает на дроиде начиная с версии 4.2 API 17
Java
1
2
3
4
5
6
7
8
9
@Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
        final String action = intent.getAction();
        if (action.equalsIgnoreCase("android.appwidget.action.APPWIDGET_UPDATE_OPTIONS")) {
            Bundle b = intent.getBundleExtra("appWidgetOptions");
            int col = (Integer) b.get("appWidgetMinWidth")/80;
            int row = (Integer)  b.get("appWidgetMaxHeight")/100;
    }
ArGet
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 3
20.03.2013, 22:28  [ТС]     Размер виджета рабочего стола, после изменения его размера Android #3
Цитата Сообщение от dubok79 Посмотреть сообщение
На хабре я нашел и использую вот такой код. Только он работает на дроиде начиная с версии 4.2 API 17
Java
1
2
3
4
5
6
7
8
9
@Override
    public void onReceive(Context context, Intent intent) {
        super.onReceive(context, intent);
        final String action = intent.getAction();
        if (action.equalsIgnoreCase("android.appwidget.action.APPWIDGET_UPDATE_OPTIONS")) {
            Bundle b = intent.getBundleExtra("appWidgetOptions");
            int col = (Integer) b.get("appWidgetMinWidth")/80;
            int row = (Integer)  b.get("appWidgetMaxHeight")/100;
    }
Спасибо, попробовал, но даже на стандартном казалось бы разрешении 1280х800(Nexus 7) есть загвоздка, от 1 до 5 ячеек все определяет правильно, а вот при 6 подсчитывает как 7.
Не уверен, что с другими конфигурациями будет все нормально.

Но это пока что лучшее, что есть для решения, еще раз спасибо!
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
20.03.2013, 22:31     Размер виджета рабочего стола, после изменения его размера Android #4
Люди писали, что ничего внятного из документации найти не удалось. параметры WidgetMaxWidth и WidgetMinHeight вообще оказались бесполезными. Методом научного тыка добились того, что написано выше. Видать тестировали не на планшетах.
ArGet
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 3
20.03.2013, 22:42  [ТС]     Размер виджета рабочего стола, после изменения его размера Android #5
Цитата Сообщение от dubok79 Посмотреть сообщение
Люди писали, что ничего внятного из документации найти не удалось. параметры WidgetMaxWidth и WidgetMinHeight вообще оказались бесполезными. Методом научного тыка добились того, что написано выше. Видать тестировали не на планшетах.
Насчет документации согласен, она сильно устарела, и даже противоречива в некоторых вопросах, а некоторое вовсе и не описано.
Yandex
Объявления
20.03.2013, 22:42     Размер виджета рабочего стола, после изменения его размера Android
Ответ Создать тему
Опции темы

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