Как сделать гаджет часы для windows 7. Пишем гаджет Windows Sidebar с нуля

AppWidget, или просто «виджет» - один из самых эффектных и удобных элементов пользовательского интерфейса в операционной системе Android, который можно добавить на рабочий стол для быстрого доступа к тем или иным функциям соответствующего приложения. В данной статье мы разберемся, как собственноручно создать свой виджет.

Что виджет представляет из себя конструктивно? Виджет нужен для отображения той или иной информации, связанной с приложением, к которому он относится, или же для оперативного взаимодействия с данным приложением напрямую через рабочий стол. Самый простой пример – часы на рабочем столе. Естественно, виджеты без труда можно добавлять или удалять с рабочих столов.

Качественно выполненные виджеты заметно оптимизируют взаимодействие с устройством. Более того, очень часто самые удобные виджеты занимают на рабочем столе минимум пространства, и при этом наиболее информативны. Практически любой пользователь будет стараться разместить на рабочих столах своего Android-гаджета максимальное количество информации, и важный момент заключается в том, что пространство ограничено.

Начнем создание виджета мы с дизайна. Благо, компания Google предоставила весьма полезные UI Guidelines для разработчиков программного обеспечения, где подробно описан процесс создания дизайна и основные принципы эргономичности. Есть также и отдельная официальная инструкция для создания виджетов, с которой можно ознакомиться по ссылке: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html .

Виджет, занимающий одну «клетку» на рабочем столе, имеет разрешение 80х100 точек, соответственно, для создания продолговатый виджет длиной в 4 клетки и высотой в одну, то нужно, соответственно, 320х100 пикселей. Такой размер мы и возьмем за основу создаваемого нами виджета.

Теперь виджет нужно нарисовать. В принципе, виджет вполне может и не иметь никакой графической части, и отображать только текст или элементы управления, без фона и рамки, но, естественно, красивый и приятный глазу виджет просто обязан иметь качественный дизайн. Поэтому нарисуем фон. За основу возьмем фон из упомянутого выше UI Guideline. Открываем доступную нам заготовку в Photoshop или другом графическом редакторе и делаем всё, что заблагорассудится, после чего сохраняем полученное изображение в формате.png. Нужный нам формат PNG-24, с 8-битным цветом и прозрачным фоном. Вот и готова основа для нашего виджета.

Теперь перейдем к созданию программной части. Виджет может не иметь программной части. Проще говоря, в меню добавления виджетов он будет, но в основном меню приложений – нет. Мы создадим виджет именно такого типа. Создаем новый проект, и называем его для удобства так, чтобы основной класс имел имя widget.java.

Редактируем AndroidManifest . xml . Объявляем наш виджет:

Теперь редактируем widget.java. Тут необходимо описать, как будет реагировать виджет на различные условия. Класс AppWidgetProvider имеет такие методы:

onUpdate – метод вызывается при создании виджета, а также по истечении заданного времени. Время задается в конфигурационном файле данного виджета. Отметим, что используется чаще всего.

onDeleted – метод выполняется при удалении виджета с рабочего стола.

onEnabled – метод вызывается при первой активации виджета. Но если добавляется еще один точно такой же виджет, данный метод уже не выполняется.

onDisabled – метод выполняется тогда, когда удаляется последняя копия виджета с рабочего стола. Соответственно, данный метод является обратным onEnabled.

onReceive – метод вызывается одновременно со всеми остальными. Зачастую не используется вообще.

Сильно углубляться в программную часть виджета мы не будем, а потому не будем переполнять наш пример какими-либо обработчиками, а просто реализуем весь функционал посредством Layouts. Необходимо следующим образом объявить класс AppWidgetProvider:

package com.example.widget;

import android.appwidget.AppWidgetProvider;

public class widget extends AppWidgetProvider{

}

Далее, описываем наш виджет – это нужно для того, чтобы мобильный аппарат понимал, с чем имеет дело. Для этого нужно создать папку xml в папке res . В ней создаем файл с именем widget _ info . xml . Открываем созданный файл и прописываем в него вот такой код:

Приведем краткое описание заданных параметров:

minWidth – минимальная необходимая для работы виджета ширина.

minHeight – минимальная необходимая для работы виджета высота.

updatePeriodMillis – период, за который происходит обновления виджета, указывается в миллисекундах. Параметр весьма полезен, так как по истечении указанного временного промежутка срабатываем метод onUpdate объекта AppWidgetProvider.

initialLayout – параметр указывает на ресурс с описанием интерфейса нашего виджета.

Формула подсчета размеров виджета имеет такой вид: (количество клеток * 74) - 2.

Приступим к описанию интерфейса создаваемого нами виджета. Здесь-то нам и пригодится созданный ранее фон. Импортируем рисунок фона в папку dwawable (или во всех три папки drawable для разных разрешений экрана). В папке layout создаем файл с именем widget . xml . Интерфейс описывается как для обычных Activity, но есть некоторые ограничения. Допустимы для использования такие элементы:

Создадим LinearLayout, к которому применим созданную картинку-фон и добавим для примера AnalogClock. Сами часы в рамку не влезут, но как наглядный пример вполне сгодятся. Итак:

Вот, в принципе, и всё. После установки виджета на Android-девайс или на эмулятор, его можно установить на один из рабочих столов. После добавления будем созерцать следующее.

Виджеты на рабочий стол Windows 7 или 10 предоставляют пользователям огромное количество возможностей, позволяя рационально настроить рабочее пространство . Вообще, в системе от Microsoft они называются гаджеты. И прежде чем мы перейдём к тому, как поставить виджеты на рабочий стол Windows 7 или 10, вам нужно узнать некоторую информацию.

Дело в том, что эта функция по умолчанию доступна только для пользователей семёрки от Домашней базовой до Профессиональной версии . А вот юзерам десятки придётся немного попотеть для установки гаджетов, так как им на замену в этой версии операционной системы пришли живые плитки. По сути, они выполняют ту же функцию, что и виджеты. Поэтому попробуйте сначала воспользоваться стационарными условиями Windows 10. Если вам всё же хочется попробовать что-то новое, то мы вам расскажем, как это сделать.

Windows 7

Итак, если вы любитель виджетов на рабочем столе и пользователь любой версии операционной системы Windows 7, то вы счастливчик. Потому что поставить гаджеты вам будет очень просто: достаточно нажать правой кнопкой мыши в любом месте рабочего стола (РС), выбрать «Гаджеты» и передвинуть любой понравившийся на РС. Проще некуда, не правда ли?

Windows 10

Юзерам десятки придётся прибегнуть к помощи дополнительных сторонних приложений. Наиболее популярным сегодня является программа Windows Desktop Gadgets, которую можно скачать с сайта http://gadgetsrevived.com/download-sidebar/. После чего у вас появится такая же вкладка, как и у пользователей семёрки. То есть, инструкция далее будет такая же. Ещё одно приложение, но уже с большим функционалом под названием 8GadgetPack. Доступен он для загрузки на официальном сайте разработчика http://8gadgetpack.net/. По сравнению с предыдущей программой, эта не до конца переведена на русский. Но если это не является для вас проблемой, то этот вариант для скачивания будет лучше.

Итоги

Теперь вы знаете, как включить виджеты на рабочий стол (например, погода). В системе представлены следующие гаджеты:

  • Валюта. Предоставляет информацию о курсе основных валют в режиме реального времени. То есть, всё что вы видите в зоне золотой карты с картой мира - последняя на данный момент информация. Для работы гаджета требуется наличие подключения к интернету.
  • Головоломка. Это прикольная мини-игра, целью которой является собрать пазл из картинки. По умолчанию стоит красочная картинка с птицей. Вам нужно передвигать квадратики так, чтобы восстановить исходный рисунок . В настройках виджета вы можете выбрать любое из одиннадцати изображений. После того как вы начнёте смещать квадратики, наверху наступит отсчёт времени. Тогда вы сможете соревноваться с друзьями, ставить собственные рекорды.
  • Заголовки новостей. Для работы этого гаджета также необходимо наличие подключения к интернету. Он показывает данные с RSS-каналов, на которые пользователь системы осуществил подписку. Получается, отныне вы всегда будете в курсе последних новостей, тематику которых вы выбираете самостоятельно.
  • Индикатор ЦП. Здесь ЦП - это центральный процессор. Виджет показывает его нагруженность в процентах. То есть вы сможете отследить насколько забивается ваш компьютер или ноутбук и даже оценить, при запуске и работе каких именно программ процессор нагружен больше всего.
  • Календарь. Суть этого виджета объяснять не нужно: это просто симпатичный календарь, который показывает месяцы, день недели, год (в общем, всё что нужно, чтобы не потеряться во времени).
  • Погода. Гаджет предоставляет последнюю информацию о погоде в том месте, где вы находитесь. В настройках вы можете либо сами поставить нужный город, либо настроить автоматическое обнаружение местоположения.
  • Показ слайдов. По сути, этот виджет является своеобразной фоторамкой на рабочий стол Windows 7 или 10. В настройках вы можете установить интервал времени, с которым картинки будут меняться, а также выбрать библиотеку изображений для показа слайдов.
  • Ну и последнее - часы. Как ни странно, они показывают время. В параметрах вы можете выбрать один из восьми видов часов, который больше всего подойдёт под дизайн вашего рабочего стола.
  • Приятной работы, дорогие друзья! Не забываем делиться своим мнением в комментариях: расскажите, какой из виджетов самый полезный для вас. Для многих таковым является гаджет «Погода».

    Основные шаги

    Здесь описано несколько основных шагов при создании и размещении гаджетов.

  • Составьте спецификацию гаджета в текстовом редакторе, а затем сохраните ее на общедоступном веб-сервере.
  • Добавьте гаджет в контейнер, например iGoogle или Orkut. Контейнер – это приложение или сайт, которые могут выполнять гаджеты.
  • Структура гаджета

    Разобравшись в способах изменения и публикации гаджетов, можно начинать включать в спецификации гаджетов более "продвинутые" функции. XML-cпецификация гаджета состоит из 3 основных частей.

    • Раздел содержания. Раздел – то место, где происходит настоящая работа вашего гаджета. Здесь следует указывать тип гаджета, логику программирования, а также зачастую элементы HTML, определяющие его внешний облик.
    • Пользовательские настройки. В разделе определены функции, которые дают пользователям возможность выбирать настройки гаджета. Например, в гаджете персонального приветствия может находиться текстовое поле, в котором пользователям следует указывать, как их зовут.
    • Настройки гаджета. В разделе XML-файла указаны характеристики гаджета (например, название, автор, предпочитаемый размер и т.д.).

    Создавая гаджет, следует начинать с раздела .

    Определение содержания

    Раздел представляет собой "мозг" гаджета. Раздел определяет тип содержания и содержит само содержание или ссылается на внешнее содержание. Раздел – это место, где атрибуты гаджета и пользовательские настройки объединяются с логикой программирования и сведениями о форматировании в работающий гаджет.

    Простейший способ создать гаджет – просто поместить HTML (а возможно и JavaScript или Flash) в раздел . Опытные веб-разработчики могут почитать , где описаны другие варианты контроля доступа, удаленного хостинга, использование других языков создания сценариев и многое другое. Вот простой пример гаджета. В этом гаджете имеется фотография, которую нужно нажать, чтобы открыть фотоальбом на новой странице HTML:

    Определение пользовательских настроек

    Некоторые гаджеты должны давать пользователям возможность вводить сведения о себе. Например, игровой гаджет может поддерживать ввод предпочитаемого уровня сложности. В разделе пользовательских настроек () XML-файла приведены поля ввода пользовательской информации, которые появляются в интерфейсе пользователя, запустившего гаджет. Пользовательские настройки сохраняются постоянно.

    Например, в этом гаджете личное приветствие изменяется в зависимости от времени суток. При этом пользователи могут указать следующие данные.

    • Имя, используемое в приветствии. Это имя пишется также в строке заголовка.
    • Цвет фона.
    • Нужно ли показывать фотографию.

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

    В спецификации формата XML определены элементы управления в интерфейсе включенного гаджета, которые отвечают за пользовательские настройки.





    Необходимо учесть следующее.

    Вот весь гаджет, вместе с кодом JavaScript, который отображает текст приветствия для этого гаджета.

    Список атрибутов см. в .

    Пользовательские настройки можно вызывать из своего гаджета с помощью специальных API JavaScript, например:

    var prefs = new gadgets.Prefs(); var someStringPref = prefs.getString("StringPrefName"); var someIntPref = prefs.getInt("IntPrefName"); var someBoolPref = prefs.getBool("BoolPrefName");

    Список всех функций JavaScript см. в .

    Подстановка переменных для пользовательских настроек

    Вы можете использовать подстановку переменных формата __UP_userpref __ в разделах или , где userpref соответствует названию атрибута пользовательской настройки. После запуска гаджета строковое значение соответствующей пользовательской настройки подставляется вместо переменной, без перевода. Например, в этом фрагменте значение, представляемое пользователем во время выполнения для пользовательской настройки projects подставляется вместо __UP_projects__ в строке title_url :

    Ниже приводится общее руководство по применению подстановки переменных для пользовательских настроек.

    • Для атрибута title используйте __UP_name __ . Это переведено в HTML .
    • Для атрибута title_url используйте __UP_name __ . Это переведено в HTML .
    • В HTML в разделе используйте __UP_name __. Это переведено в HTML.
    • В коде JavaScript в разделе используйте функцию gadgets.Prefs() .
    Совместный доступ к настройкам пользователей

    С помощью функции shareable-prefs можно предоставить нескольким пользователям возможность изменять настройки гаджета. Таким образом, пользователи могут совместно пользоваться гаджетом и видеть, кто что изменил. Например, члены семьи могут иметь общий гаджет со списком покупок и каждый человек может добавлять свои любимые продукты. Данные настроек пользователей – часть состояния гаджета, хранящаяся на iGoogle. Дополнительные сведения о пользовательских настройках можно найти в .

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

    Вот код гаджета:

    ]]>

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

    Шаг 1 : Нажмите треугольник на том гаджете, к которому нужно предоставить совместный доступ, и выберите Открыть доступ к этому гаджету .

    Шаг 2 : Если вы используете Gmail, выберите друзей, которым вы хотите открыть доступ к гаджету или введите их адреса электронной почты.

    Шаг 3: Решите, смогут ли друзья редактировать содержание гаджета или только просматривать его на своих страницах iGoogle.

    • При выборе Просматривать и редактировать содержание друзья смогут редактировать пользовательские настройки гаджета. Их изменения будут отражаться в вашей версии гаджета и во всех остальных совместно используемых версиях этого гаджета.
    • При выборе Просматривать содержание друзья не смогут изменять как сам гаджет, так и его копии на собственных страницах. Только вы сможете изменять гаджет, а ваши изменения будут применены ко всем совместно используемым версиям гаджета.

    Нажмите Отправить приглашения . Друзья получат от вас письмо с приглашением добавить гаджет на свои страницы iGoogle.

    Друзья, которым вы разрешили изменять гаджет, могут редактировать пользовательские настройки и публиковать изменения во всех совместно используемых версиях гаджета.

    Определение настроек гаджетов

    В разделе XML-файла указаны характеристики гаджета (например, название, автор, предпочитаемый размер и т.д.). Например:


    30) then "таймаут timerFirstRun = window.SetTimeout("Update", 60000) "попытка повторного обновления через минуту else "таймаут еще не достигнут, продолжаем считать секунды iTimeoutID = window.SetTimeout("mySleep", 1000) end if end if End Sub

    В случае успешного скачивания objXML.readyState будет равен четырем, а статус (objXML.status) вернет значение 200.

    Function objXML_onreadystatechange() If (objXML.readyState = 4) Then "msgbox objXML.statusText If (objXML.status = 200) Then bRespReceived=true SaveFile(objXML.responseText) else timerFirstRun = window.SetTimeout("Update", 60000) "попытка повторного обновления через минуту End If End If End Function

    В этом случае сохраняем файл во временную папку Windows

    Function SaveFile(what) Set fso = CreateObject("Scripting.FileSystemObject") tempFolder = fso.GetSpecialFolder(2) filepath = tempFolder+"\weather.xml" Dim fso1, tf Set fso1 = CreateObject("Scripting.FileSystemObject") Set tf = fso1.CreateTextFile(filepath, True, True) "rewrite, unicode tf.Write(what) tf.Close ParseXML End Function

    И начинаем парсить файл.

    Sub ParseXML Set fso = CreateObject("Scripting.FileSystemObject") tempFolder = fso.GetSpecialFolder(2) filepath = tempFolder+"\weather.xml" Set xmlDoc = CreateObject("Msxml2.DOMDocument") xmlDoc.async="false" xmlDoc.load(filepath) "главная нода – в нашем случае Set currNode = xmlDoc.documentElement "дни недели – Set dayNode = currNode.firstChild While Not dayNode Is Nothing Set currNode = dayNode.firstChild While Not currNode Is Nothing if currNode.parentNode.getAttribute("id") = "today" then "сегодняшний день if currNode.nodeName = "temp" then document.getElementById(prefix+"maintemp").innerHTML = currNode.childNodes(0).text+Chr(176) "отображаем остальные элементы Else "не сегодняшний день, отображаем более мелко "... end If Set currNode = currNode.nextSibling Wend Set dayNode = dayNode.nextSibling Wend End Sub

    Проверка на новые версии производится точно таким же способом.
    Не забываем создать файл настроек - settings.html, о существовании которого мы объявили выше.

    Настройки

    Вот, собственно, и все. Буду рад, если моя (первая:)) статья оказалась кому-то полезной.

    Использованные источники.

    Можно регулировать. Если непрозрачность гаджета составляет менее 100%, он становится полностью непрозрачным при наведении курсора. Казалось бы, таким способом можно сделать гаджет вовсе невидимым, чтобы он появлялся только при наведении курсора. Проблема в том, что значение непрозрачности 0% для гаджетов не предусмотрено. Тем не менее, сделать гаджет полностью прозрачным вполне возможно, и в этой статье я расскажу, как именно.

    Добавление гаджетов на рабочий стол

    На случай, если вы до сих пор не пользовались гаджетами, объясню, как добавлять их на рабочий стол. Чтобы сделать все гаджеты видимыми, нажмите на столе правой кнопкой мыши и выберите опцию «Вид | Отображать гаджеты рабочего стола» (View | Show Desktop Gadgets, рис. A).

    Рисунок A. Это единственный способ включать/отключать гаджеты. Вместо того, чтобы делать гаджеты полностью прозрачными, их все можно скрыть, воспользовавшись данной опцией.

    Чтобы добавить гаджеты на рабочий стол, нажмите на нем правой кнопкой мыши и выберите опцию «Гаджеты» (Gadgets). Появится новое окно (рис. B), из которого гаджеты можно перетаскивать на рабочий стол.


    Рисунок B. Нет нужного гаджета? Нажмите ссылку «Найти гаджеты в Интернете» (Get More Gadgets Online).

    В Галерее Windows Live представлены сотни гаджетов. Прежде чем устанавливать загруженные из Интернета гаджеты на рабочий стол, обязательно сканируйте их антивирусом - хоть они и размещены на официальном ресурсе, это не гарантирует их безопасности.

    Чтобы изменить прозрачность гаджета, нажмите на нем правой кнопкой мыши и выберите опцию «Непрозрачность | X%» (Opacity | X%), где X - числовое значение (рис. C).


    Рисунок C. Почему разработчики Microsoft не предусмотрели возможность делать гаджеты полностью прозрачными, для меня остается загадкой. К счастью, эту проблему можно решить.

    Настройка

    Теперь давайте посмотрим, как делать гаджеты полностью прозрачными. Нажмите на нужном гаджете правой кнопкой мыши и присвойте ему значение непрозрачности 20%. После этого проделайте следующие действия:

    Шаг первый. Завершите работу боковой панели Windows. Для этого нажмите правой кнопкой мыши на панели задач, выберите опцию «Запустить Диспетчер задач» (Start Task Manager), найдите в списке процесс «sidebar.exe» и завершите его. При этом все гаджеты с рабочего стола пропадут. Если этого не сделать, вам не удастся отредактировать конфигурацию.

    Шаг второй. Найдите файл настроек гаджетов рабочего стола «Settings.ini». Как правило, он хранится в папке «C:\Пользователи\{имя пользователя}\AppData\Local\Microsoft\WindowsSidebar\» («C:\Users\{имя пользователя}\AppData\Local\Microsoft\WindowsSidebar\» для англоязычного интерфейса). Откройте этот файл в Блокноте (Notepad), отыщите в нем строку «PrivateSetting_GadgetOpacity=”{20}”» и замените “20” на “1”. Должно получиться так: «PrivateSetting_GadgetOpacity=”{1}”». После этого сохраните изменения и закройте Блокнот.

    Шаг третий. Теперь снова запустите процесс, отвечающий за отображение гаджетов. Для этого введите «sidebar.exe» (без кавычек) в строке поиска меню «Пуск» (Start) и нажмите . На рабочем столе появятся все гаджеты, за исключением того, для которого было выставлено значение непрозрачности 20%. Но на самом деле он никуда не делся: подведите курсор туда, где должен размещаться этот гаджет, и он тут же станет видимым. Поставленная задача решена!

    Таким же способом можно скрыть все остальные гаджеты. Только не забудьте выставить для каждого из них значение непрозрачности 20% и обязательно завершите процесс «sidebar.exe», чтобы отредактировать файл настроек, а потом запустите его снова.

    В заключение

    Я очень люблю мини-приложения и в

    Статьи по теме: