Създайте Android джаджа за вашето приложение

Автор: Lewis Jackson
Дата На Създаване: 13 Може 2021
Дата На Актуализиране: 1 Юли 2024
Anonim
Смарт-Часы Maimo Watch - Детальный ОБЗОР + ТЕСТЫ
Видео: Смарт-Часы Maimo Watch - Детальный ОБЗОР + ТЕСТЫ

Съдържание


От първите дни на операционната система приспособленията за Android позволяват на потребителите да се занимават с любимите си приложения от комфорта на началния си екран. И така, как да създадете Android джаджа?

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

Приспособленията осигуряват на приложението ви ценно присъствие на началния екран на потребителя

В тази статия ще ви покажа как да осигурите по-добро потребителско изживяване, докато насърчавам потребителите да се ангажират с приложението ви, като създадете Android джаджа! В края на тази статия ще създадете джаджа за колекция, която може да се превърта, която показва пълен набор от данни на началния екран на потребителя.


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

Прочетете също: Разработване за сгъваеми устройства: Какво трябва да знаете

Какво представляват джаджи за Android?

Приложението за приложение е леко, миниатюрно приложение, което живее на началния екран на потребителя.

Приспособленията за Android могат да предоставят гама от съдържание, но обикновено попадат в една от следните категории:

  • Информационна джаджа, Това е джаджа, която не може да се превърта, която показва някаква информация, като например прогнозата за времето или датата и часа.
  • Колекция джаджи, Това е превъртаща се джаджа, която показва набор от свързани данни, форматирани като ListView, GridView, StackView или AdapterViewFlipper. Приспособленията за събиране обикновено се подкрепят от източник на данни, като например база данни или масив.
  • Управлявайте джаджи, Тези джунджурии действат като дистанционно управление, което позволява на потребителите да взаимодействат с приложението ви, без като трябва да го изведе на преден план. Приложенията, които възпроизвеждат медии, като подкасти или музика, често имат контролни джаджи, които позволяват на потребителя да задейства Възпроизвеждане, Пауза и Пропускане директно от началния си екран.
  • Хибридни джаджи, Понякога може да успеете да осигурите по-добро потребителско изживяване, като комбинирате елементи от няколко категории. Например, ако разработвате контролна джаджа за музикално приложение, можете да предоставите контроли за възпроизвеждане, пауза и пропускане, но можете също да решите да покажете някаква информация, като например заглавието на песента и изпълнителя. Ако решите да смесвате и смесвате, не се увличайте! Виджетите са склонни да предоставят най-доброто потребителско изживяване, когато предоставят лесен достъп до малко количество навременна, подходяща информация или няколко често използвани функции. За да поддържате хибридните си джунджурии леки, препоръчително е да определите основната категория на джаджа си, да я разработите според тази категория и тогава добавете няколко елемента от второстепенната категория на джаджа.

Дали проектът ми наистина се нуждае от приспособление за приложение?

Има няколко причини, поради които трябва да помислите за добавяне на приспособление за приложение към вашия Android проект.


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

Като общо правило, колкото по-малко навигационни стъпки са необходими за изпълнение на дадена задача, толкова по-добро е потребителското изживяване.

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

По-мощен от преките пътища за приложения

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

Чрез вграждане на множество връзки в оформлението на джаджа си можете да осигурите достъп с едно докосване до всички най-важни дейности на приложението си, премахвайки още повече навигационни стъпки от най-често използваните потоци.

Чрез вграждане на няколко връзки в оформлението на джаджа си можете да осигурите достъп с едно докосване до всички най-важни дейности на приложението ви.

Обърнете внимание, че приспособленията реагират само на събитията onClick, което не позволява на потребителите да взаимодействат случайно с вашата джаджа, докато те се плъзгат около началния екран. Единственото изключение е, когато потребителят се опитва да изтрие вашата джаджа, като я плъзнете към действието за премахване на началния си екран, тъй като в този сценарий вашата джаджа ще отговори на вертикален пръст.

Това взаимодействие се управлява от системата Android, така че не е нужно да се притеснявате за ръчно внедряване на поддръжка за вертикално прекарване на пръст във вашата джаджа.

Създайте Android джаджа, за да стимулирате дългосрочно ангажиране

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

Прочетете също:Първи стъпки с Facebook за Android SDK

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

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

Създаване на джаджа за приложение за колекция

В този урок ще изграждаме джаджа за колекция, която показва масив като превъртащ се ListView.

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

Създайте нов проект за Android с настройките по ваш избор и нека започнем!

Изграждане на оформлението на джаджа ви

За начало, нека да определим потребителския интерфейс на приспособлението (потребителски интерфейс).

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

Когато изграждате оформлението си, сте ограничени до следното:

  • AnalogClock
  • бутон
  • хронометър
  • FrameLayout
  • GridLayout
  • ImageButton
  • ImageView
  • LinearLayout
  • ProgressBar
  • RelativeLayout
  • TextView
  • ViewStub
  • AdapterViewFlipper
  • GridView
  • ListView
  • StackView
  • ViewFlipper

Обърнете внимание, че има подкласове на горните класове и Views не поддържа.

Създайте нов файл с ресурс за оформление с име list_widget.xml. Тъй като ще показваме данните си с ListView, това оформление служи главно като контейнер за елемент:

Попълване на джаджата за колекция

След това трябва да създадем доставчик на данни за нашия ListView. Създайте нов клас Java с име DataProvider.java и добавете следното:

импортиране на android.content.Context; импортиране на android.content.Intent; импортиране на android.widget.RemoteViews; импортиране на android.widget.RemoteViewsService; import java.util.ArrayList; import java.util.List; импортиране на статичен android.R.id.text1; импортиране на статичен android.R.layout.simple_list_item_1; DataProvider в обществен клас реализира RemoteViewsService.RemoteViewsFactory {Списък myListView = нов ArrayList <> (); Контекст mContext = нула; обществен DataProvider (контекст на контекста, намерение за намерение) {mContext = контекст; } @Override public void onCreate () {initData (); } @ Oververide public void onDataSetChanged () {initData (); } @Override public void onDestroy () {} @Override public int getCount () {return myListView.size (); } @Override public RemoteViews getViewAt (позиция int) {RemoteViews view = нов RemoteViews (mContext.getPackageName (), simple_list_item_1); view.setTextViewText (text1, myListView.get (позиция)); изглед за връщане; } @Override public RemoteViews getLoadingView () {return null; } @Override public int getViewTypeCount () {return 1; } @Override public long getItemId (int позиция) {return position; } @Override public boolean hasStableIds () {return true; } частна void initData () {myListView.clear (); за (int i = 1; i <= 15; i ++) {myListView.add ("Елемент на ListView" + i); }}}

AppWidgetProvider: Конфигуриране на джаджа ви

За да създадете Android джаджа, трябва да създадете няколко файла.

Първият ни файл, специфичен за джаджата, е AppWidgetProvider, който е BroadcastReceiver, където ще дефинирате различните методи на жизнения цикъл на джунджурии, като методът, който се извиква при първото създаване на джаджа ви, и методът, който се извиква, когато тази джаджа в крайна сметка се изтрие.

Създайте нов клас Java (File> New> Java Class) с име CollectionWidget.

За да започнете, всички файлове на доставчика на джаджи трябва да се простират от класа на AppWidgetProvider. След това трябва да заредим файла с ресурси на оформлението list_widget.xml в обект на RemoteViews и да информираме AppWidgetManager за актуализирания обект RemoteViews:

публичен клас CollectionWidget разширява AppWidgetProvider {static void updateAppWidget (контекст на контекста, AppWidgetManager appWidgetManager, int appWidgetId) {// Instantiate the RemoteViews обект // RemoteViews изгледи = нови RemoteViews (контекст.getPackalayName) () setRemoteAdapter (контекст, изгледи); // Поискайте AppWidgetManager да актуализира приложението // приложениеWidgetManager.updateAppWidget (appWidgetId, изгледи); }

Създайте адаптера

Тъй като показваме данните си в ListView, трябва да дефинираме метода setRemoteAdapter () в нашия AppWidgetProvider. SetRemoteAdapter () е еквивалентно на извикване на AbsListView.setRemoteViewsAdapter (), но е проектиран да се използва в приспособленията за приложения.

В този метод трябва да определим идентификатора на AdapterView (R.id.widget_list) и намерението на услугата, която в крайна сметка ще предостави данните на нашия RemoteViewsAdapter - скоро ще създадем този клас WidgetService.

частен статичен void setRemoteAdapter (контекст на контекста, @NonNull окончателни изгледи на RemoteViews) {views.setRemoteAdapter (R.id.widget_list, нов намерение (контекст, WidgetService.class)); }}

Определяне на методите на жизнения цикъл на джаджата

В нашия AppWidgetProvider също трябва да определим следните методи на жизнения цикъл на джунджурии:

Извличане на ново съдържание с onUpdate

Методът на жизнения цикъл на приспособлението onUpdate () е отговорен за актуализирането на изгледите на вашата джаджа с нова информация.

Този метод се извиква всеки път:

  • Потребителят извършва действие, което ръчно задейства метода onUpdate ().
  • Посоченият интервал за актуализиране на приложението изтече.
  • Потребителят поставя нов екземпляр на този приспособление на началния си екран.
  • Намерението за излъчване ACTION_APPWIDGET_RESTORED се изпраща до AppWidgetProvider. Това намерение за излъчване се задейства, ако джаджата някога е възстановена от архивиране.

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

Когато актуализирате джаджа за Android, важно е да запомните, че потребителите могат да създават няколко екземпляра на един и същ джаджа. Например, може би вашата джаджа е адаптирана и потребителят решава да създаде няколко „версии“, които показват различна информация или осигуряват достъп до уникална функционалност.

Когато извиквате onUpdate (), трябва да посочите дали актуализирате всеки екземпляр от тази джаджа или само конкретен екземпляр. Ако искате да актуализирате всеки екземпляр, тогава можете да използвате appWidgetIds, който е масив от идентификатори, който идентифицира всеки екземпляр от устройството.

В следния фрагмент актуализирам всеки случай:

@Override public void onUpdate (Контекст на контекста, AppWidgetManager appWidgetManager, int appWidgetIds) {for (int appWidgetId: appWidgetIds) {// Актуализиране на всички случаи на тази джаджа // updateAppWidget (контекст, appWidgetManager, appWidgetId) } super.onUpdate (контекст, appWidgetManager, appWidgetIds); }

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

onEnabled: Извършва първоначалната настройка

Методът на жизнения цикъл onEnabled () се извиква в отговор на ACTION_APPWIDGET_ENABLED, който се изпраща, когато екземпляр от вашата джаджа се добави на началния екран за първи време. Ако потребителят създаде два екземпляра на вашата джаджа, тогава onEnabled () ще бъде извикан за първата инстанция, но не за втората.

Методът на жизнения цикъл onEnabled () е мястото, където трябва да извършите всяка настройка, която е необходима за всички инстанции на вашата джаджа, като например създаване на базата данни, която ще захранва информацията за джунджурии.

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

@Override public void onEnabled (контекст на контекста) {Toast.makeText (контекст, "onEnabled призован", Toast.LENGTH_LONG) .show (); }

Обърнете внимание, че ако потребителят изтрие всички екземпляри на вашия джаджа и след това създаде нов екземпляр, тогава това се класифицира като първа инстанция и методът на жизнения цикъл onEnabled () ще бъде извикан отново.

Почистване, с onDisabled

Методът onDisabled () се извиква в отговор на ACTION_APPWIDGET_DISABLED, който се задейства, когато потребителят изтрие последно екземпляр от вашата джаджа.

Този метод на жизнения цикъл на джаджата е мястото, където трябва да почистите всички ресурси, създадени в метода onEnabled (), например да изтриете базата данни, която сте създали в onEnabled ().

За да запазите кода си лесно, просто ще покажа тост всеки път, когато този метод се задейства:

@Override public void onDisabled (контекст на контекста) {Toast.makeText (контекст, „onDisabled call“, Toast.LENGTH_LONG) .show (); }

Завършеният AppWidgetProvider

Вашият файл CollectionWidget сега трябва да изглежда така:

импортиране на android.appwidget.AppWidgetManager; импортиране на android.appwidget.AppWidgetProvider; импортиране на android.content.Context; импортиране androidx.annotation.NonNull; импортиране на android.content.Intent; импортиране на android.widget.RemoteViews; импортиране на android.widget.Toast; // Разширяване от клас на AppWidgetProvider // публичен клас CollectionWidget разширява AppWidgetProvider {static void updateAppWidget (контекст на контекста, AppWidgetManager appWidgetManager, int appWidgetId) {// Заредете файла с ресурс на оформлението в обект на RemoteViews // RemoteViews изгледи = Контекст на RemoteViews = Преглед на вида RemoteViews getPackageName (), R.layout.list_widget); setRemoteAdapter (контекст, изгледи); // Информиране на AppWidgetManager за обекта на RemoteViews // appWidgetManager.updateAppWidget (appWidgetId, изгледи); } @Override public void onUpdate (контекст на контекста, AppWidgetManager appWidgetManager, int appWidgetIds) {for (int appWidgetId: appWidgetIds) {updateAppWidget (контекст, appWidgetManager, appWidgetId); } super.onUpdate (контекст, appWidgetManager, appWidgetIds); } @Override public void onEnabled (контекст на контекста) {Toast.makeText (контекст, "onEnabled призован", Toast.LENGTH_LONG) .show (); } @Override public void onDisabled (контекст на контекста) {Toast.makeText (контекст, „onDisabled call“, Toast.LENGTH_LONG) .show (); } частен статичен void setRemoteAdapter (контекст на контекста, @NonNull окончателни изгледи на RemoteViews) {views.setRemoteAdapter (R.id.widget_list, нов намерение (контекст, WidgetService.class)); }}

Файлът на AppWidgetProviderInfo

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

Файлът на AppWidgetProviderInfo се съхранява в папката res / xml на вашия проект.

Ако проектът ви вече не съдържа тази папка, ще трябва да я създадете:

  • Щракнете върху контролната папка за Res Resource на вашия проект.
  • Изберете Ново> Директория с ресурси на Android.
  • В следващия прозорец отворете падащото меню Ресурс и изберете xml.
  • Името на директория трябва да се актуализира автоматично до xml, но ако не е, ще трябва да го промените ръчно.
  • Щракнете върху OK.

След това създайте файл collection_widget_info, който ще използваме като AppWidgetProviderInfo:

  • Щракнете с контролен бутон върху папката xml на вашия проект.
  • Изберете Ново> XML файл с ресурси.
  • Име на този файл collection_widget_info.
  • Щракнете върху OK.

В нашия AppWidgetProviderInfo файл, ние трябва да дефинираме следните свойства:

1. android: previewImage

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

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

Най-лесният начин да създадете изображение за визуализация е да използвате приложението за предварителен преглед, което е включено в емулатора на Android. Това приложение ви позволява да конфигурирате джаджа си и след това да генерирате изображение, което след това можете да използвате във вашия Android проект.

Ще създадем това изображение, след като завършим изграждането на джаджа си, така че засега ще използвам автоматично генерирания ресурс mipmap / ic_launcher като временно изображение за предварителен преглед.

2. android: widgetCategory

Приспособленията за приложения трябва да бъдат поставени в хост на приложението за джаджи, който обикновено е началният екран на Android, но могат да бъдат и стартови устройства за трета страна като Evie Launcher или Nova Launcher.

Между нивата на API 17 и 20 беше възможно да се поставят приспособления за приложения на началния екран или поддръжката на заключения екран, но поддръжката на заключения екран е оттеглена в ниво 21 на API.

Можете да определите дали вашата джаджа за приложение може да бъде поставена на началния екран, заключения екран (който Android нарича „клавиатура“) или и двете, като използвате атрибута android: widgetCategory. Тъй като не е възможно да поставите джаджи на заключения екран в най-новите версии на Android, ще се насочим само към началния екран.

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

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

3. андроид: начално оформление

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

4. android: resizeMode = "хоризонтална | вертикална"

Атрибутът android: resizeMode ви позволява да определите дали вашата джаджа може да бъде преоразмерена хоризонтално, вертикално или по двете оси.

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

5. android: minHeight и android: minWidth

Ако вашата джаджа е с възможност за промяна на размера, тогава трябва да се уверите, че потребителят не свива джаджа ви до степен, в която става неизползваема. Можете да използвате атрибутите minHeight и minWidth, за да определите най-малкото приложение, което ще се свие, когато бъде преоразмерено от потребителя.

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

6. android: updatePeriodMillis

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

Най-малкият поддържан интервал на актуализиране е веднъж на всеки 1800000 милисекунди (30 минути). Дори и да декларирате по-кратък интервал за актуализация, джаджата ви ще се актуализира само веднъж на всеки половин час.

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

Трябва също така да вземете под внимание вида на съдържанието, което ще ви показва джаджата.

Трябва също така да вземете предвид съдържанието, което ще се показват вашите джунджурии за Android. Например, метеорологична джаджа може да се наложи да извлича актуализирана прогноза само веднъж на ден, докато приложение, което показва актуални новини, ще трябва да се актуализира по-често.

За да намерите този перфектен баланс, може да се наложи да тествате джаджа си в редица честоти на актуализиране и да измервате въздействието върху живота на батерията и навременността на съдържанието на вашата джаджа. Ако имате желаеща група тестери, тогава можете дори да настроите A / B тестване, за да видите дали някои честоти на актуализиране са приети по-положително от други.

Aalso чете: AndroidManifest.xml всичко, което трябва да знаете

И накрая, след като установите перфектния интервал за актуализиране, може да искате да използвате по-кратък интервал при разработване и тестване на приложението си. Например, можете да използвате възможно най-кратката честота на актуализиране (android: updatePeriodMillis = ”1800000 ″), когато тествате, че методът на onUpdate () на приложението ви се задейства правилно и след това да промените тази стойност, преди да пуснете приложението си за широката публика.

Завършеният AppWidgetProviderInfo

Готовият файл collection_widget_info.xml трябва да изглежда така:

Не претрупвайте началния екран на потребителя!

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

  • Щракнете върху папката със стойности на вашия проект с контролен бутон.
  • Изберете Ново> Файл с ресурси с ценности.
  • Дайте на този файл името dimens.
  • Щракнете върху OK.

Отворете своя dimens.xml файл и дефинирайте следните стойности на марджин и подплънки:

10dp 8dp

Изпращане на данни към приспособлението

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

Създайте нов клас Java (нов> клас Java) с име WidgetService и добавете следното:

импортиране на android.content.Intent; импортиране на android.widget.RemoteViewsService; public class WidgetService разширява RemoteViewsService {@Override public RemoteViewsFactory onGetViewFactory (Намерено намерение) {връщане на нов DataProvider (това, намерение); }}

Регистриране на вашата джаджа в Manifest

Сега трябва да направим някои промени в манифеста на нашия проект.

За да започнете, отворете Manifest и регистрирайте джаджа си като BroadcastReceiver. Също така трябва да добавим филтър за намерение за действието android.appwidget.action.APPWIDGET_UPDATE:

След това трябва да посочите доставчика на джаджи на приложението:

И накрая, ние трябва да декларираме услугата, която ще изпраща данни до нашата джаджа, която в този случай е клас WidgetService. Тази услуга изисква разрешението android.permission.BIND_REMOTEVIEWS:

Поставете джаджа си на теста

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

Ако това е проект за Android в реалния живот, тогава обикновено разширявате методите на жизнения цикъл, по-специално методът onUpdate (), но това е всичко, което трябва да създадем джаджа, която можете да инсталирате и тествате на устройството си с Android:

  • Инсталирайте този проект на съвместим смартфон, таблет или AVD за Android (виртуално устройство за Android).
  • Натиснете дълго всеки празен раздел на началния екран и изберете приспособления, когато бъдете подканени; това стартира избора на джаджи.
  • Прекарайте пръст през инструмента за избор на приспособления, докато намерите току-що създадената приспособление.
  • Натиснете дълго тази джаджа, за да я добавите към началния си екран.
  • Тъй като това е първата инстанция на тази конкретна джаджа, методът onEnabled () трябва да стартира и ще видите тост „onEnabled call“.
  • Преоразмерете джаджа си. Ако зададете минимален поддържан размер, проверете дали не можете да свиете приспособлението над тази стойност.
  • Проверете дали ListView превърта, както се очаква.
  • След това трябва да проверите метода onDisabled (), като изтриете джаджа си. Натиснете дълго приспособлението и след това изберете Премахване от началния екран. Тъй като това е последната инстанция на тази конкретна джаджа, методът onDisabled () трябва да работи и ще видите тост „onDisabled call“.

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

Създаване на изображение за визуализация на Android приспособление

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

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

Можете бързо и лесно да създадете изображение за предварителен преглед, като използвате приложението за предварителен преглед, което е включено в емулатора на Android.

Обърнете внимание, че визуализацията на приспособленията не е включена в най-новите изображения на системата на Android, така че ще трябва да създадете AVD с помощта на Nougat (API Level 25) или по-рано:

  • Инсталирайте приложението си на AVD, работещ с API 25 или по-нов.
  • Отворете чекмеджето на приложението на AVD и стартирайте приложението за визуализация на джаджи.
  • Визуализацията на джаджи ще покаже списък на всяко приложение, което в момента е инсталирано на този AVD; изберете приложението си от списъка.

  • Сега джаджа ви ще се показва на празен фон. Прекарайте известно време за преоразмеряване и настройване на джаджа си, докато не покаже най-доброто, което вашата джаджа може да предложи.
  • След като сте доволни от външния вид и съдържанието на джаджа си, изберете Направете снимка.

  • За да извлечете снимката си, превключете обратно към Android Studio и изберете View> Tool Windows> Device File Explorer от лентата с инструменти. Това стартира проводника на устройства на Android Studio.
  • В Device File Explorer отворете sdcard / Download. Трябва да намерите изображението ви за преглед, запазено в следния формат: _ori_.png

  • Издърпайте това изображение от Android Studio и го пуснете някъде, лесно достъпен, например вашия работен плот.
  • Дайте на това изображение изображение описателно име.
  • Плъзнете и пуснете файла в папката за изтегляне на вашия проект.
  • Отворете своя AppWidgetProviderInfo, който за този проект е collection_widget_info.xml.
  • Намерете линията android: previewImage = ”@ mipmap / ic_launcher” и я актуализирайте, за да посочите вашето изображение за преглед.

Вашият приспособление вече ще използва този нов ресурс за изображение като свое изображение за визуализация:

  • Инсталирайте актуализирания проект на вашето физическо устройство с Android или AVD.
  • Натиснете дълго всеки празен раздел на началния екран.
  • Докоснете Widgets, което стартира Wicker Wicker.
  • Превъртете до джаджа си; сега трябва да се използва актуализираното изображение за преглед.

Приспособими джаджи: Добавяне на конфигурационна активност

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

Има няколко причини, поради които може да искате да добавите конфигурационна активност към проекта си.

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

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

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

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

Никой няма да оцени джаджа, която визуално се сблъсква с останалия начален екран!

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

Нека добавим конфигурационна активност към нашия проект!

Първо, нашата конфигурационна активност се нуждае от оформление, така че създайте нов файл с ресурс за оформление, наречен config_activity.xml.

Ще добавя следните бутони към това оформление:

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

Ето моя завършен файл config_activity.xml:

Създайте Конфигурационна активност

Сега трябва да създадем нашата конфигурационна активност.

За да започнете, създайте нов клас Java, наречен ConfigActivity. В тази дейност ще извлечем идентификационния номер на приспособлението за приложение от намерението, което стартира конфигурационната активност. Ако това намерение няма идентификатор на джаджа, ще трябва да се обадим на метода на финала ():

Намерено намерение = getIntent (); Пакетни екстри = intent.getExtras (); ако (екстри! = нула) {appWidgetId = extras.getInt (AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); ако (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {Finish (); }

След това трябва да създадем намерение за връщане, да предадем оригиналния appWidgetId и да зададем резултатите от конфигурационната активност:

Intent resultValue = ново намерение (); resultValue.putExtra (AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult (RESULT_OK, resultValue); завършек(); }}}

Ако предоставите конфигурационна активност, излъчването ACTION_APPWIDGET_UPDATE няма да бъде изпратено автоматично при стартиране на активността за конфигуриране, което означава методът onUpdate () няма да да бъде извикан, когато потребителят създаде екземпляр от вашата джаджа.

За да сте сигурни, че вашата джаджа е създадена с актуална информация и съдържание, вашата конфигурация Дейност трябва да задействайте първата заявка onUpdate ().

Ето завършената ConfigActivity:

импортиране на android.app.Activity; импортиране на android.appwidget.AppWidgetManager; импортиране на android.os.Bundle; import android.widget.Button; импортиране на android.content.Intent; import android.view.View; импортиране на android.view.View.OnClickListener; импортиране на android.widget.Toast; Public Class ConfigActivity разширява Дейността {@Override защитена void onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState); setContentView (R.layout.config_activity); setResult (RESULT_CANCELED); Бутон setupWidget = (Бутон) findViewById (R.id.setupWidget); setupWidget.setOnClickListener (нов OnClickListener () {@Override public void onClick (View v) {handleSetupWidget ();}}); Бутон configButton = (Бутон) findViewById (R.id.configButton); configButton.setOnClickListener (нов OnClickListener () {@Override public void onClick (View v) {handleConfigWidget ();}}); } частен void handleSetupWidget () {showAppWidget (); } частен void handleConfigWidget () {Toast.makeText (ConfigActivity.this, "Опции за конфигурация", Toast.LENGTH_LONG) .show (); } int appWidgetId; private void showAppWidget () {appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; Намерено намерение = getIntent (); Пакетни екстри = intent.getExtras (); ако (екстри! = нула) {appWidgetId = extras.getInt (AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); ако (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {Finish (); } // TO DO: Извършете конфигурацията // Intent resultValue = new Intent (); resultValue.putExtra (AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult (RESULT_OK, resultValue); завършек(); }}}

След като създадете конфигурационна активност, трябва да декларирате тази активност в Manifest и да уточните, че тя приема действието APPWIDGET_CONFIGURE:

И накрая, тъй като активността на конфигурация е посочена извън обхвата на пакета, ние трябва да декларираме тази активност в нашия AppWidgetProviderInfo, което в този случай е файлът collection_widget_info.xml:

Android: конфигуриране = "com.jessicathornsby.collectionwidget.ConfigActivity">

Тестване на вашия проект

Сега е време да поставите своя завършен проект на тест:

  • Инсталирайте актуализирания си проект на физическо устройство с Android или AVD.
  • Изтрийте всички предишни инстанции на джаджа си, за да се уверите, че работите с най-новата версия.
  • Натиснете дълго празната област на началния екран и изберете приспособления, когато бъдете подканени.
  • Намерете джаджа си в инструмента за избор на джаджи и натиснете дълго, за да го изберете.
  • Пуснете джаджата на началния си екран. Дейността за конфигуриране трябва да се стартира автоматично.
  • Кликнете върху бутона Изпълнете някоя конфигурация и трябва да се появи тост с опции за конфигурация, потвърждаващ, че това взаимодействие е регистрирано успешно.
  • Представете си, че сте ощипали настройките на джаджата и вече сте готови да го поставите на началния си екран; натиснете бутона Create The Widget и тази джаджа трябва да бъде създадена успешно.

Можете да изтеглите проекта за джаджи на завършената колекция от GitHub.

Обобщавайки

В тази статия създадохме джаджа за събиране, която може да се превърта, която показва набор от данни на началния екран на потребителя.

Ако искате да продължите да работите с този проект, тогава можете да опитате да добавите свой собствен код към метода onUpdate (), за да създадете джаджа, която се актуализира с нова информация в интервала, определен във вашия файл на AppWidgetProviderInfo (collection_widget_info).

Ако създадете джаджа за Android, тогава не забравяйте да споделите вашите творения в коментарите по-долу!

Актуализация, 19 април 2019 г. (14:02 ET): В нова нишка Reddit, клиентът, който получи девет допълнителни Pixel 3 заместващи единици, заяви, че Google му е предоставил кредит по сметката за дължимото ...

Amazon Prime Day 2019 е в разгара си! Ще намерите много страхотни оферти в нашия гигантски, постоянно променящ се хъб, но може да не търсите сделки за по-скъпите артикули, като лаптопи, телевизори и с...

Избор На Сайтове