Създаване на джаджа за вашия работен плот. Писане на притурка за странична лента на Windows от нулата Създаване на приспособления




Днес ще разберем как да създадете своя собствена джаджа на устройство с Android. Уиджетът е познат елемент на работния плот, с който можете да получите достъп до някои функции на приложение: преглед на новини в прозореца на уиджета, прогноза за времето, актуализиране на новини за различни услуги, управление на различни функции на устройството (заключване на екрана, включване на радиото, Интернет и много много други). Този път няма да създадем нещо грандиозно и много полезно, като фенерче :), а ще направим проста джаджа, която ще бъде внедрена под формата на бутон, когато щракнем върху него, ние, използвайки стандартен браузър, ще бъдем отведени до любимият сайт на всички Разбира се, можете да персонализирате всеки уебсайт.

Създайте нов проект, изберете Празна активност, минимална версия Android 2.2+. Когато създавате джаджа, първото нещо, което трябва да направите, е да създадете обект AppWidgetProviderInfo, в който ще посочим xml файла, от който ще се попълва изгледа на самата джаджа. За да направите това, създайте папка в проекта res/xmlи в него създаваме нов xml файл с име widget.xmlсъс следното съдържание:

< appwidget- provider xmlns: android= android: minWidth= "146dp" android: updatePeriodMillis= "0" android: minHeight= "146dp" android: initialLayout= "@layout/activity_main" > < / appwidget- provider>

Сега да отидем на файла activity_main.xmlи създайте интерфейса на нашата джаджа, той ще се състои от бутон Бутон:

< LinearLayout xmlns: android= "http://schemas.android.com/apk/res/android" xmlns:инструменти= "http://schemas.android.com/tools" android: layout_width= "match_parent" android: layout_height= "match_parent" android: gravity= "top" tools: context= ".MainActivity" >< Button android: id= "@+id/button" android: layout_width= "wrap_content" android: layout_height= "wrap_content" android: layout_marginLeft= "5dp" android: text= "@string/app_name" / > < / LinearLayout >

Както можете да видите, създадохме обикновен бутон и това ще бъде нашата джаджа:

Тоест след това можете да правите каквото искате вместо този бутон.

Да преминем към работа с кода във файла MainActivity.java. Трябва да наследява от класа AppWidgetProvider, за който съществува неговият основен метод onUpdate(). В този метод трябва да дефинираме два обекта: Чакащо намерениеИ RemoteViews. В края на тяхното използване трябва да извикате метода updateAppWidget(). Файлов код MainActivity.java:

импортиране на android.net.Uri; импортиране на android.app.PendingIntent; импортиране android.appwidget.AppWidgetManager; импортиране android.appwidget.AppWidgetProvider; импортиране на android.content.Context; импортиране на android.content.Intent; импортиране на android.widget.RemoteViews; импортиране на android.widget.Toast; import com.example.widget.R; публичен клас MainActivity разширява AppWidgetProvider( @Override public void onUpdate (Context context, AppWidgetManager appWidgetManager, int appWidgetIds) ( for (int i= 0; i< appWidgetIds. length; i++ ){ int currentWidgetId = appWidgetIds[i]; //Направете проста http заявка към посочената връзка и я последвайте: String url = "http://site" ; Намерение за намерение = ново намерение (Намерение . ACTION_VIEW); намерение. addFlags(Намерение . FLAG_ACTIVITY_NEW_TASK); намерение. setData(Uri . parse(url)); //Дефинираме два необходими обекта от класа PendingIntent и RemoteViews: PendingIntent pending = Очакващо намерение. getActivity(контекст, 0, намерение, 0); RemoteViews изгледи = нови RemoteViews(context. getPackageName(),R. layout. activity_main); //Конфигуриране на обработката на кликване за добавяне на джаджа:изгледи. setOnClickPendingIntent(R . id. бутон, в очакване); appWidgetManager. updateAppWidget(currentWidgetId,views); Тост. makeText(контекст, „Добавена джаджа“, Тост . LENGTH_SHORT). покажи (); ) ) )

За да работи успешно нашата джаджа, се нуждаем от малко магия във файла на манифеста AndroidManifest.xml. Трябва да изглежда така:

< manifest xmlns: android= "http://schemas.android.com/apk/res/android"пакет ="com.example.widget" android: versionCode="1" android: versionName="1.0" >< uses- permission android: name= "android.permission.INTERNET" / > < application android: allowBackup= "true" android: icon= "@drawable/ic_launcher" android: label= "@string/app_name" android: theme= "@style/AppTheme" > < receiver android: name= "home.study.MainActivity" > < intent- filter> < action android: name= "android.appwidget.action.APPWIDGET_UPDATE" / > < / intent- filter> < meta- data android: name= "android.appwidget.provider" android: resource= "@xml/widget" / > < / receiver> < / application> < / manifest>

Както се досещате, джаджата е дефинирана в тага<приемник> .

Единственото нещо, което остава да коригирате, е да редактирате файла strings.xml, добавяйки редовете, които използвахме там:

< ? xml version= "1.0" encoding= "utf-8" ? > < resources> < string name= "app_name" >УЧА. ANDROID < string name= "action_settings" >Настройки < string name= "hello_world" >Здравей свят!< / string> < / resources>

внимание! Android Studio може да ви ругае, когато стартирате програмата, изисквайки да посочите дейност по подразбиране. Изберете реда „Не стартирайте дейност“:

Сега инсталирайте приложението на емулатора или устройството, добавете джаджата към работния плот:

И щракнете върху него:


Както можете да видите, всичко работи чудесно.

И така, в този урок създадохме прост Android Widget, състоящ се от бутон, когато щракнете върху нашия widget, ние създаваме проста http заявка и следваме дадената URL връзка. Можете да тренирате с други елементи, а не с бутон, и да измислите интересна функционалност за тях. Късмет!

За да направете джаджа в AndroidИзобщо не е необходимо да знаете как да програмирате. Има няколко приложения за дизайн, които улесняват рисуването на джаджа и й дават желаната функционалност.

Минималистичен текст

Приложението ви позволява да създавате минималистични джаджи, състоящи се от текст и числа. Въпреки името, тези джаджи имат много широки възможности.

След инсталирането добавете минималистичен текстов модул с необходимия размер към вашия работен плот. Ще се отвори прозорецът с настройки на притурката.

В настройките можете да изберете фон, ориентация, шрифт, действие при щракване и т.н. Също така в настройките има предварително зададени оформления за попълване:

  • време.
  • Дата на.
  • Ниво на зареждане.
  • температура.

Допълнителни опции за попълване на джаджата са налични, когато създавате собствено оформление на джаджа:

  • Текст.
  • Свободно/използвано място на SD картата.
  • Време на работа на системата.
  • Количеството данни, прехвърлени през мобилната мрежа и др.
  • Име на Wi-Fi мрежата, IP адрес в Wi-Fi мрежата.
  • Количество използвана RAM.

Всички стойности могат да бъдат показани в текст и в числа.

Ultimate custom widget (UCCW)

Това приложение ви позволява да правите джаджи не само от текст, но и с графично съдържание.

При стартиране се отваря прозорецът за създаване на джаджа. За да добавите обект към изпълнимия модул, щракнете върху бутона +/- в горната част. За да го преместите и редактирате по някакъв начин, щракнете върху бутона „Избор на обект“ в горната част и изберете добавения обект.

Можете да поставите следните обекти върху джаджи:

  • Час, дата и ден от седмицата.
  • Аналогов часовник.
  • Персонализиран текст.
  • Нивото на зареждане в числа или графично показване на това.
  • Цялата информация за времето - температура, влажност, скорост на вятъра и др.
  • Геометрични фигури.
  • Изображения.
  • Брой непрочетени имейли в Gmail, sms и пропуснати повиквания.
  • Времето, когато будилникът ще звъни.

Всеки елемент може да се върти, разтяга, огъва и цвета му да се променя. Разбира се, можете да конфигурирате действието при щракване (Избор на обект->Горещи точки). Поддържа се импортиране и експортиране на създадени джаджи.

Операционната система Android има много функции и възможности. Един от тях са widgets – прозорци, които ви позволяват да използвате част от функционалността на приложението, без да го стартирате.

По принцип джаджите идват в комплект с приложението. Има обаче програми, които нямат тази опция. Това означава, че трябва да вземете нещата в свои ръце!

  • Използвайки Play Market, изтегляме безплатното приложение „KWGT Kustom Widget Maker“, което може да бъде закупено безплатно, но някои функции ще бъдат достъпни само след закупуване на добавката.

Програмата действа като платформа за стартиране на джаджи на трети страни от различни разработчици. Освен това можете да промените външния вид на джаджи и да им дадете допълнителна функционалност.


Първоначално може да си помислите, че „KWGT Kustom Widget Maker“ е сложно приложение, което прилича на програми за разработка на софтуер. Да и не: интерфейсът е подобен, но тук няма нищо сложно.


За да започнете да редактирате уиджети:

  • отидете на работния плот и извикайте менюто за редактиране на работни плотове, като задържите бутона за меню или продължително докосване на екрана;
  • намерете рамката на джаджа „KWGT“ и задайте необходимия размер, например - 4x2. След това на работния плот се появява прозорец;
  • Щракнете върху прозореца, като по този начин отворите менюто за избор на джаджи;
  • Изберете оформлението, което харесвате, и щракнете върху него (Допълнителни оформления могат да бъдат изтеглени от Play Store. За да направите това, посочете „KWGT widgets“ в лентата за търсене на приложения);
  • След като изберете оформлението, което харесвате, приложението ще продължи да го редактира. Ще бъдат налични следните настройки:
  1. Елементи, отговорни за настройката на геометричните параметри на джаджата;
  2. Background, отговорен за фоновото изображение на джаджата;
  3. Докосване, което указва действията, които ще бъдат извършени, когато джаджата е активирана;
  4. Слоят, отговорен за мащаба на джаджата;

В резултат на това ще получим уникална джаджа с необходимата функционалност.

Наскоро трябваше да създам притурка за страничната лента на Windows. Нямах никакви умения в това, така че след като потърсих малко в Google и прочетох документацията, нека да започнем.

Веднага ще ви покажа до какво стигнах.


Притурката ще получи информация от сайта в xml форма, ще я анализира и всъщност ще я покаже. Притурката също ще проверява за нови версии и ако има такива, отказва да работи :)
Първоначално, за да натрупам опит, исках да напиша притурка изцяло на VBScript (тъй като все още не се бях занимавал с него), но в крайна сметка трябваше да направя вмъквания в JavaScript.
Да преминем директно към кода. Няма да разглеждам целия код тук, ще покажа само основните моменти. Връзката към готовата притурка е в края на статията.
Основният файл на една притурка е нейният манифест - файлът Gadget.xml. Трябва да се казва точно така и да се намира в корена на нашия архив (джаджата не е нищо повече от ZIP архив с разширение .gadget).

Времето от Info.Denms.Ru 1.0.1232 Пълна джаджа за времето (Info.Denms.Ru)

Нека го разгледаме по-подробно.
елемент трябва да съдържа apiVersion, равна на 1.0.0 (в момента), както и атрибута src, който указва главния файл на нашата притурка;
Разрешения за притурката. Задайте равно на пълно;
Минимална версия на Windows Sidebar. В момента – 1.0;
Настроики - име на притурката, - версия, - информация за автора, - връзка към страницата с притурката, - икона на притурка и ще се покаже на панела с инсталирани притурки.

Файлът main.html е обикновен html файл, няма да го изброявам изцяло, ще се спра само на някои точки.
Елементът g:background се използва за задаване на фона на притурката. Нека го направим прозрачен.

Притурката може да бъде в две състояния – закачена (отляво на екранната снимка по-горе) и разкачена (отдясно). Ще съхраним текущото състояние на притурката в закрепената променлива на JavaScript.

В бъдеще ще ни трябва функцията за обвивка isDocked, за да разберем текущото състояние на притурката от VBScript (колкото и да се опитвах, не можах да внедря това в чист VBScript). Още една забележка - скриптовете работят правилно в този ред, т.е. Първо описваме VBScript скриптове, след това JavaScript.

Останалите елементи в main.html са абсолютно позиционирани DIV елементи. Впоследствие от скриптове ще имаме достъп до тях чрез техния id.

С помощта на JavaScript ще зададем закачени и незакачени състояния за притурката и също така ще посочим файла с настройки (main.js)

System.Gadget.onDock = преоразмеряване; System.Gadget.onUndock = преоразмеряване; System.Gadget.settingsUI = "settings.html"; System.Gadget.onSettingsClosed = Настройките са затворени; закачен=0; //начално състояние на притурката resize(); //инициализация

Както можете да видите от горния списък, когато състоянията на притурката се променят, ще бъде извикана функцията resize().

Функция resize() ( bd = document.body.style; System.Gadget.beginTransition(); if (System.Gadget.docked) ( // малко състояние bd.width=148; // задаване на размера на притурката bd.height= 201 ; закачено = 1; bd.background="url(images/gadget.png) no-repeat"; //задаване на фона //следва прехвърляне на стойности от закачено състояние и нулиране на елементите за незакрепеното състояние document.getElementById("small_needupdate").innerHTML = document.getElementById("big_needupdate").innerHTML; document.getElementById("big_needupdate").innerHTML = ""; //... ) else ( // big bd.width=230; bd.background="url(images/gadgeth.png) no-repeat"; //прехвърляне на стойности от закачени към незакрепени state document.getElementById("big_needupdate") innerHTML = document.getElementById("small_needupdate").innerHTML; document.getElementById("small_needupdate").innerHTML = ""; //... ) System.Gadget.endTransition(System .Gadget.TransitionType.morph,1); )

Можете също така да опишете функцията за запазване на настройките. Моята джаджа ги няма, но като пример ще ви покажа как се прави.

Функция SettingsClosed(event) ( if (event.closeAction == event.Action.commit) ( //alert System.Gadget.Settings.readString("test"); ) )

ReadString – чете предварително записан низ, съответно writeString записва.
Методи System.Gadget.beginTransition(); и System.Gadget.endTransition(); необходими за „плавно“ преоразмеряване на притурката. Те се игнорират в Windows Seven, но все пак ги оставих за обратна съвместимост.

Както бе споменато по-горе, сървърът ни предоставя информация за времето в xml формат.

1.7 41 облачно сняг 87 югозапад 5 -3 -1 -1 26 1 -9 41 0 …

Ще изтеглим и анализираме xml с помощта на VBScript.

Sub DownloadXML2 Set objXML = CreateObject("Microsoft.XmlHttp") objXML.Open "GET", "http://info.kovonet.ru/weather.xml", True objXML.OnReadyStateChange = GetRef("objXML_onreadystatechange") objXML.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" objXML.Send iTimeoutID = window.SetTimeout("mySleep", 1000) End Sub

Функцията mySleep ще провери нашата връзка за изчакване.

Под mySleep if bRespReceived = "false" then "все още не е получен отговор iTimeout = iTimeout + 1 if (iTimeout > 30) then "timeout timerFirstRun = window.SetTimeout("Update", 60000) "опит за повторна актуализация след минута друго "таймаут все още не е достигнат, продължете да броите секунди iTimeoutID = window.SetTimeout("mySleep", 1000) край ако край ако Край Под

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

Функция 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 Функция

В този случай запишете файла във временна папка на Windows

Функция 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) "главен възел – в нашия случай Задайте currNode = xmlDoc.documentElement "дни от седмицата – Задайте dayNode = currNode.firstChild, докато не dayNode не е нищо Задайте currNode = dayNode.firstChild, докато не currNode не е нищо, ако currNode.parentNode.getAttribute("id") = "today" тогава "днес ако currNode.nodeName = "temp" тогава документ .getElementById(prefix+"maintemp").innerHTML = currNode.childNodes(0).text+Chr(176) "показва останалите елементи Else "не днес, показва по-фино"... end If Set currNode = currNode.nextSibling Wend Задайте dayNode = dayNode.nextSibling Wend End Sub

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

Настройки

Това е всичко, всъщност. Ще се радвам, ако моята (първа :)) статия е била полезна на някого.

Използвани източници.

Създавайте WordPress джаджа– това е приблизително как да създадете плъгин, но много по-просто и по-ясно. Всичко, от което се нуждаете, е един файл с всичко PHPкод, който е много по-лесен за писане от плъгин, който има няколко файла. Има три основни функции на джаджата: това са джаджа, актуализацияИ форма.

  • функция widget()
  • функция update()
  • функция форма()

| Изтегляне на източници |

Основна структура

Основният дизайн на нашата джаджа е много прост, има полезни функции, които трябва да знаете. Гръбнакът на нашата структура на джаджи ще бъде нещо подобно:

Add_action("widgets_init", "register_my_widget"); // функция за зареждане на моя уиджет функция register_my_widget() () // функция за регистриране на моя уиджет клас My_Widget разширява WP_Widget () () // Примерният уиджет клас функция My_Widget() () // Widget настройки функция widget() () // показва функцията на изпълнимия модул update() () // актуализира функцията на изпълнимия елемент form() () // и разбира се формата за опциите на изпълнимия модул

Етап 1. widget_init

Преди да направим всичко това, трябва да заредим нашата джаджа с помощта на функцията widget_init. Това е улика за действие, за който можете да намерите повече информация в кодекса на WordPress.

Add_action("widgets_init", "register_my_widget");

Следващото нещо, което ще направим е нека се регистрираменашата джаджа в WordPress, така че да е достъпна в секцията с джаджи.

Функция register_my_widget() ( register_widget("My_Widget"); )

Стъпка 2. Клас

Ще включим нашата джаджа Клас. Името на класа има значение! Това, което трябва да имаме предвид е, че името на класа и името на функцията трябва да бъдат идентичен.

Клас My_Widget разширява WP_Widget()

Сега ще минем някои настроикинастройки. Например, можем да изпратим ширинаИ височина. Можем да дадем и малък описаниекъм нашата джаджа, ако искаме. Това ще бъде полезно, ако свържете джаджата с рекламната си тема.

Функция My_Widget() ( функция My_Widget() ( $widget_ops = array("classname" => "example", "description" => __("A widget, който показва името на авторите ", "example")); $control_ops = array("width" => 300, "height" => 350, "id_base" => "example-widget"); ), $widget_ops, $control_ops);

Сега, след като приключихме с основните изисквания за нашата джаджа, ще насочим вниманието си към три функции, за които говорихме по-рано и които са важни функции или основни блокове за изграждане на нашата джаджа!

Стъпка 3: функция widget()

Първата функция се отнася до дисплейнашата джаджа. Ще предадем няколко аргументив нашата функция. Ще подадем аргументи от темата, това може да е заглавие или други параметри. Сега предаваме променливата инстанция, което е свързано с класа на нашата функция.

Функционален уиджет ($args, $instance)

След това извличаме настроикиот аргументи, защото имаме нужда параметрите да са достъпни локално. Ако не знаете какво е локална променлива, не се тревожете за това сега и просто добавете тази стъпка.

екстракт($args);

След това ще инсталираме заглавиеИ други параметриза нашата джаджа, която може да се променя от потребителя в менюто на джаджата. Добавяме и специални променливи като $before_widget, $after_widget. Тези параметри се обработват от темата.

$title = apply_filters("widget_title", $instance["title"]); $name = $instance["name"]; $show_info = isset($instance["show_info"])? $instance["show_info"] : невярно; ехо $before_widget; // Показване на заглавието на модула, ако ($title) echo $before_title. $заглавие. $след_заглавие; //Показване на името if ($name) printf("

" . __("Хей, техният моряк! Казвам се %1$s.", "пример") . "

", $name); if ($show_info) printf($name); echo $after_widget;

Стъпка 4: функция update()

Актуализация на функцията ($new_instance, $old_instance) ( $instance = $old_instance; //Отстранете етикетите от заглавие и име, за да премахнете HTML $instance["title"] = strip_tags($new_instance["title"]); $instance[" name"] = strip_tags($new_instance["name"]); $instance["show_info"] = $new_instance["show_info"]; върне $instance; )

Едно нещо, което трябва да отбележим: тук използваме strip_tagsза да премахнете целия текст от XHTML, което може да наруши работата на нашата джаджа.

Стъпка 5. функция form()

В следващата стъпка ще създадем формакойто ще служи входен блок. Той ще приеме дефинирани от потребителя настройки и стойности. функция формаможе да включва квадратчета за отметка, полета за въвеждане на текст и др.

Преди да създадем тези полета за въвеждане, трябва да решим какво да показваме, когато потребителят не избере нищо от изпълнимия модул. За да направим това, ще предадем стойности по подразбиране за параметрите, като заглавие, описание и т.н.

//Настройте някои настройки на джаджи по подразбиране. $defaults = array("title" => __("Example", "example"), "name" => __("Bilal Shaheen", "example"), "show_info" => true); $instance = wp_parse_args((масив) $instance, $defaults); ?>

Сега ще създадем поле за въвеждане на текст. Ще опаковаме тези стойности в таг на параграф.

// Заглавие на джаджа: Въвеждане на текст

" име="get_field_name("заглавие"); ?>" value="" style="width:100%;" />

//Въвеждане на текст

" име="get_field_name("име"); ?>" value="" style="width:100%;" />

// Кутия за отметка

id="get_field_id("покажи_информация"); ?>" име="get_field_name("покажи_информация"); ?>" />

Заключение

Добре, всичко свърши. Току-що сами направихте симпатична и проста джаджа, която показва името на автора на блога. Освен това позволява на потребителя да избере дали да покаже информацията на публиката или не. Запазете кода в PHP файли го качете в папката с теми. Обадете му се във вашия functions.php. След това отидете на конзолата Външен вид → Джаджии ще видите вашата джаджа.

Целият този код е включен във файла, прикачен към статията, което го прави още по-лесно за копиране и поставяне. Наслади се!