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

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

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

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

20.03.2013, 07:25. Просмотров 1312. Ответов 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);
}
Если кто может чем-то помочь, буду очень признателен.

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

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

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

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

.NET 4.x Имитация виджета рабочего стола - C# WPF
Добрый день! Собственно задача - написать приложение (WPF), которое по своему поведению имитировало бы виджет win7 (то есть при...

Заблокирована опция изменения фона рабочего стола - Windows 7
Здравствуйте, один умелец на компе с windows 7 поставил на рабочий стол картинку и заблокировал доступ к изменению изображения рабочего...

Синхронизировать размер рабочего стола и монитора - Linux GUI
здравствуйте. поставил себе Linux Mint 17.3 и столкнулся с такой проблемой, что правая сторона рабочего стола не влазит в монитор,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
20.03.2013, 22:09 #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;
    }
1
ArGet
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 3
20.03.2013, 22:28  [ТС] #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.
Не уверен, что с другими конфигурациями будет все нормально.

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

Win7 не видит часть диска С после изменения его размера в Acronis - Жесткие диски
Сразу скриншот: Как видно из скриншота в Acronis диск С - 100 гб, в системе win7 выдает 60 гб. Как такое получилось: Решил...

Размер обои рабочего стола пользователей домена - Администрирование Windows
Здравствуйте! Есть домен. Примерно 500 пользователей. Шеф приказал чтобы у всех было одинаковый фон. При помощи gpo всем установил. Вот...

В каком файле хранятся настройки размера значков рабочего стола и т. п. - Windows XP
В каком файле хранятся настройки которые делаются в: Рабочий стол=>Правый клик мышкой=>Оформление=>Дополнительно Тоесть все настройки...

Написание гаджета в С# и его использование с рабочего стола - C#
Можно ли написать вот такие гаджеты на языке С# и чтоб можно было добавить его на рабочий стол*?? Добавлено через 14 секунд


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

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

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