Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
ArGet
0 / 0 / 0
Регистрация: 20.03.2013
Сообщений: 3
1

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

20.03.2013, 07:25. Просмотров 1504. Ответов 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-проект в Eclipse с Android SDK, чтобы после его можно было запустить на виртуальной машине?
Вот у меня с интернета скачан готовый андрой-проект, но я не знаю как его...

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

Не удаляется приложение с рабочего стола
Свое приложение закинул на телефон,установил,проверил все работает. Решил...

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

4
dubok79
324 / 122 / 10
Регистрация: 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
324 / 122 / 10
Регистрация: 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
20.03.2013, 22:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2013, 22:42

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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