צור יישומון אנדרואיד עבור האפליקציה שלך

מְחַבֵּר: Lewis Jackson
תאריך הבריאה: 13 מאי 2021
תאריך עדכון: 1 יולי 2024
Anonim
Create widgets for your android app | Android Studio Tutorial
וִידֵאוֹ: Create widgets for your android app | Android Studio Tutorial

תוֹכֶן


מאז הימים הראשונים של מערכת ההפעלה, ווידג'טים לאנדרואיד אפשרו למשתמשים לעסוק באפליקציות המועדפות עליהם, מהנוחות של מסך הבית שלהם. אז איך יוצרים יישומון אנדרואיד?

עבור היזם, ווידג'טים מעניקים ליישום שלך נוכחות חשובה במסך הבית של המשתמש. במקום להישאר מחוץ לטווח הראייה במגירת האפליקציות, המשתמשים יזכרו באפליקציה שלכם כל פעם מחדש הם מביטים במסך הבית שלהם - תוך שהם מקבלים תצוגה מקדימה של התוכן המעניין והשימושי ביותר של האפליקציה שלך.

ווידג'טים מעניקים ליישום שלך נוכחות בעלת ערך במסך הבית של המשתמש

במאמר זה, אני אראה לך כיצד לספק חווית משתמש טובה יותר תוך כדי לעודד משתמשים לעסוק באפליקציה שלך, על ידי יצירת יישומון אנדרואיד! בסוף מאמר זה תיצור ווידג'ט לאיסוף הניתן לגלילה המציג מערך נתונים מלא על מסך הבית של המשתמש.

כדי להבטיח שאתה מספק את סוג הווידג'ט שמשתמשים רוצה כדי למקם על מסך הבית שלהם, אנו ניצור גם פעילות תצורה, שתאפשר למשתמשים להתאים אישית את תוכן הווידג'ט, מראהו ותכונותיו. לבסוף, אראה כיצד תוכלו לעודד אנשים להשתמש בווידג'ט שלך על ידי יצירת תמונת תצוגה מקדימה של ווידג'ט שמציגה את הטוב ביותר שיש לווידג'ט שלך להציע.


קרא גם: פיתוח למכשירים מתקפלים: מה שאתה צריך לדעת

מהם ווידג'טים לאנדרואיד?

ווידג'ט ליישום הוא יישום מיניאטורי קל, שחי על מסך הבית של המשתמש.

ווידג'טים לאנדרואיד יכולים לספק מגוון של תוכן, אך בדרך כלל הם נכללים באחת מהקטגוריות הבאות:

  • יישומון מידע. זהו ווידג'ט שאינו ניתן לסריקה המציג מידע כלשהו, ​​כגון תחזית מזג האוויר של היום או התאריך והשעה.
  • ווידג'טים לאוסף. זהו ווידג'ט הניתן לגלילה המציג קבוצה של נתונים קשורים, המעוצבים כ- ListView, GridView, StackView או AdapterViewFlipper. ווידג'טים לאיסוף מגובים בדרך כלל על ידי מקור נתונים, כגון מסד נתונים או מערך.
  • שליטת יישומונים. ווידג'טים אלה פועלים כשלט רחוק המאפשר למשתמשים ליצור אינטראקציה עם היישום שלך, בלי צריך להביא את זה לקדמת הבמה. לאפליקציות שמנגנות מדיה, כמו פודקאסטים או מוסיקה, לרוב יש ווידג'טים שליטה המאפשרים למשתמש להפעיל פעולות הפעלה, השהייה ודילוג ישירות ממסך הבית שלהם.
  • ווידג'טים היברידיים. לפעמים ייתכן שתוכלו לספק חווית משתמש טובה יותר על ידי שילוב של אלמנטים מקטגוריות מרובות. לדוגמה, אם אתה מפתח ווידג'ט שליטה עבור יישום מוסיקה אתה יכול לספק פקדי הפעלה, השהייה ודילוג, אך תוכל גם להחליט להציג מידע כלשהו, ​​כגון כותרת השיר ואמן. אם החלטתם לערבב ולהתאים, אל תיסחפו! ווידג'טים נוטים לספק את חווית המשתמש הטובה ביותר כאשר הם מספקים גישה קלה לכמות קטנה של מידע רלוונטי בזמן או לכמה תכונות נפוצות. כדי לסייע בשמירה על קלות הווידג'טים ההיברידיים שלך, מומלץ לזהות את הקטגוריה הראשית של הווידג'ט שלך, לפתח אותה לפי אותה קטגוריה, וכן לאחר מכן הוסף כמה אלמנטים מהקטגוריה המשנית של הווידג'ט.

האם הפרויקט שלי באמת זקוק לווידג'ט של יישומים?

ישנן מספר סיבות מדוע כדאי לך לשקול להוסיף יישומון ליישום לפרויקט Android שלך.


ווידג'טים לאנדרואיד יכולים לשפר את חווית המשתמש

ככלל, ככל שפחות שלבי ניווט הדרושים להשלמת משימה, כך חווית המשתמש תהיה טובה יותר.

על ידי מתן יישומון ליישום, אתה יכול להסיר שלבי ניווט מרובים מהזרמים הנפוצים ביותר של האפליקציה שלך. במקרה הטוב, המשתמשים שלכם יוכלו לקבל את המידע הדרוש להם רק על ידי הצצה למסך הבית שלהם, או לבצע את המשימה הרצויה, פשוט על ידי לחיצה על לחצן בווידג'ט הבקרה שלך.

חזק יותר מקיצורי דרך ליישום

Widgets של אפליקציות מגיבים לרוב לאירועי onClick על ידי הפעלת הרמה העליונה ביישום המשויך, בדומה לקיצור דרך ליישום. עם זאת, ווידג'טים יכולים גם לספק גישה ישירה לפעילויות ספציפיות ביישום, לדוגמה הקשה על התראה על 'התקבל חדש' של ווידג'ט עשויה להפעיל את האפליקציה המשויכת עם החדש שכבר פתוח.

על ידי הטמעת קישורים מרובים בפריסת הווידג'ט שלך, אתה יכול לספק גישה בלחיצה אחת לכל הפעילויות החשובות ביותר של האפליקציה שלך, ולהסיר את שלבי הניווט עוד יותר מהזרמים הנפוצים ביותר שלך.

על ידי הטמעת קישורים מרובים בפריסת הווידג'ט שלך, אתה יכול לספק גישה בלחיצה אחת לכל הפעילויות החשובות ביותר של האפליקציה שלך.

שים לב שהווידג'טים מגיבים לאירועי onClick בלבד, מה שמונע ממשתמשים ליצור אינטראקציה בטעות עם הווידג'ט שלך תוך כדי החלקה על מסך הבית. החריג היחיד הוא כאשר המשתמש מנסה למחוק את הווידג'ט על ידי גרירתו לכיוון הסר הפעולה של מסך הבית שלו, שכן בתרחיש זה הווידג'ט שלך יגיב למחווה החלקה אנכית.

אינטראקציה זו מנוהלת על ידי מערכת Android, כך שאינך צריך לדאוג ליישום ידני של תמיכה החלקה אנכית בווידג'ט שלך.

צור יישומון אנדרואיד בכדי לעודד מעורבות ארוכת טווח

לשכנע אנשים להוריד את האפליקציה שלך הוא רק הצעד הראשון ליצירת אפליקציית אנדרואיד מצליחה. רוב הסיכויים שאם תופסים סמארטפון או טאבלט אנדרואיד משלך ומחליקים במגירת האפליקציות, תגלו מספר אפליקציות שלא השתמשתם בהן בימים, שבועות או אולי אפילו חודשים!

קרא גם:תחילת העבודה עם פייסבוק ל- Android SDK

לאחר שהאפליקציה שלך תותקן בהצלחה במכשיר המשתמש, תצטרך לעבוד קשה כדי להשאיר אותם מעורבים וליהנות מהאפליקציה שלך. מתן נוכחות לאפליקציה שלך על גבי מסך הבית יכול להיות כלי רב עוצמה שיעזור לך לעודד מעורבות ארוכת טווח, פשוט מכיוון שזו תזכורת מתמדת לכך שהאפליקציה שלך קיימת!

ווידג'ט מעוצב היטב יכול לשמש גם כפרסום שוטף עבור האפליקציה שלך. בכל פעם שהמשתמש מביט במסך הבית שלו, יש ל- Widget שלך אפשרות לעודד אותם באופן פעיל לעסוק מחדש באפליקציה שלך, על ידי הצגת להם את כל התוכן המעניין והשימושי ביותר של האפליקציה שלך.

יצירת ווידג'ט לאפליקציית אוסף

במדריך זה נבנה ווידג'ט לאיסוף שמציג מערך כתצוגת List Scrollable.

כדי לעזור לך לעקוב אחר מחזור החיים של יישומון היישומון, יישומון זה גם יפעיל טוסטים שונים בזמן שהוא עובר במצבי מחזור החיים השונים. לקראת סוף הדרכה זה, אנו נשפר את הווידג'ט שלנו עם תמונת תצוגה מקדימה בהתאמה אישית שתוצג ב- Picker Widget של אנדרואיד ופעילות תצורה, שתאפשר למשתמשים להתאים אישית את הווידג'ט לפני שמניחים אותו על מסך הבית שלהם.

צרו פרויקט Android חדש עם ההגדרות שבחרתם, ונתחיל!

בניית פריסת הווידג'ט שלך

כדי להתחיל, נגדיר את ממשק המשתמש של הווידג'ט (UI).

ווידג'טים של יישומים מוצגים בתהליך בחוץ היישום שלך, כך שתוכל להשתמש רק בפריסות ותצוגות הנתמכות על ידי RemoteViews.

בבניית הפריסה שלך אתה מוגבל לדברים הבאים:

  • אנלוגי קלוק
  • כפתור
  • כרונומטר
  • FrameLayout
  • GridLayout
  • ImageButton
  • תמונה
  • LinearLayout
  • ProgressBar
  • RelativeLayout
  • צפייה בטקסט
  • ViewStub
  • AdapterViewFlipper
  • GridView
  • תצוגת רשימה
  • StackView
  • ViewFlipper

שים לב שתתי המשנה של הכיתות והתצפיות לעיל הם לא נתמך.

צור קובץ משאב פריסה חדש בשם list_widget.xml. מכיוון שנציג את הנתונים שלנו באמצעות ListView, מתווה זה משמש בעיקר כמכולה עבור אלמנט:

מאכלס את ווידג'ט האוסף

בשלב הבא עלינו ליצור ספק נתונים עבור ListView שלנו. צור מחלקת Java חדשה בשם DataProvider.java והוסף את הדברים הבאים:

יבוא android.content.Context; יבוא android.content.Intent; יבוא android.widget.RemoteViews; יבוא android.widget.RemoteViewsService; ייבא java.util.ArrayList; יבוא java.util.List; יבוא אנדרואיד סטטי.R.id.text1; ייבא אנדרואיד סטטי. R.layout.simple_list_item_1; DataProvider בכיתה ציבורית מיישם את RemoteViewsService.RemoteViewsFactory {רשימה myListView = חדש ArrayList <> (); הקשר mContext = null; DataProvider ציבורי (הקשר בהקשר, כוונת כוונה) {mContext = context; } @ ביטול חלל ציבורי ב-Create () {initData (); } @ העבר על חלל ציבורי onDataSetChanged () {initData (); } @ העבר על חלל ציבורי ב- Destroy () {} @ החלף את הציבור int getCount () {החזר את myListView.size (); } @ בטל את התצפית הציבורית המרחוק getViewAt (מיקום עמדה) {RemoteViews view = new RemoteViews (mContext.getPackageName (), simple_list_item_1); view.setTextViewText (text1, myListView.get (מיקום)); תצוגת חזרה; } @ ביטול צפיות מרחוק ציבוריות getLoadingView () {return null; } @ החלף את הציבור int getViewTypeCount () {להחזיר 1; } @ עקף את getItemId לציבור ארוך (מיקום int) {עמדה חוזרת; } @ העבר את ה- Boolean הציבורי ל- hasStableIds () {return true; } initData חלל פרטי () {myListView.clear (); עבור (int i = 1; i <= 15; i ++) {myListView.add ("פריט ListView" + i); }}}

AppWidgetProvider: הגדרת התצורה של הווידג'ט שלך

כדי ליצור יישומון אנדרואיד, עליך ליצור מספר קבצים.

הקובץ הראשון הספציפי לרכיב יישומון הוא AppWidgetProvider, שהוא BroadcastReceiver בו תגדיר את שיטות מחזור החיים השונים של יישומון, כמו למשל השיטה שנקראת כאשר הווידג'ט שלך נוצר לראשונה והשיטה שנקראת כאשר אותו יישומון יימחק בסופו של דבר.

צור מחלקת Java חדשה (קובץ> חדש> Java Class) בשם CollectionWidget.

כדי להתחיל, כל קבצי ספקי הווידג'טים חייבים להרחיב משיעור AppWidgetProvider. לאחר מכן עלינו לטעון את קובץ משאב הפריסה list_widget.xml לאובייקט RemoteViews וליידע את AppWidgetManager על האובייקט המעודכן של RemoteViews:

CollectionWidget בכיתה ציבורית מרחיב את AppWidgetProvider {update static voidAppWidget (הקשר הקשר, AppWidgetManager appWidgetManager, int appWidgetId) {// Instantiate the RemoteViews // ViewsViews views = RemoteViews new (context.getPackageName (), R.layout.list_widget; setRemoteAdapter (הקשר, תצוגות); // בקש מ- AppWidgetManager לעדכן את יישומון היישום // appWidgetManager.updateAppWidget (appWidgetId, צפיות); }

צור את המתאם

מכיוון שאנו מציגים את הנתונים שלנו ב- ListView, עלינו להגדיר שיטת setRemoteAdapter () ב- AppWidgetProvider. SetRemoteAdapter () מקביל לקריאה AbsListView.setRemoteViewsAdapter () אך מיועד לשימוש בגדג'טים ליישומים.

בשיטה זו עלינו להגדיר את המזהה של ה- AdapterView (R.id.widget_list) ואת הכוונה של השירות שבסופו של דבר יספק את הנתונים למתאם RemoteViews Adapter שלנו - אנו ניצור את מחלקת השירות WidgetSS בקרוב.

setRemoteAdapter סטטי חלל פרטי (הקשר בהקשר, תצוגות RemoteViews סופיות של @NNNull) {views.setRemoteAdapter (R.id.widget_list, כוונה חדשה (הקשר, WidgetService.class)); }}

הגדרת שיטות מחזור החיים של הווידג'ט

ב- AppWidgetProvider שלנו, עלינו גם להגדיר את שיטות מחזור החיים הבא של יישומון:

אחזור תוכן חדש באמצעות OnUpdate

שיטת מחזור חיי הווידג'ט onUpdate () אחראית לעדכון תצוגות הווידג'ט שלך באמצעות מידע חדש.

שיטה זו נקראת בכל פעם:

  • המשתמש מבצע פעולה שמפעילה ידנית את שיטת onUpdate ().
  • מרווח העדכון שצוין היישום חלף.
  • המשתמש מציב מופע חדש של רכיב widget זה על מסך הבית שלו.
  • כוונת שידור ACTION_APPWIDGET_RESTORED נשלחת אל AppWidgetProvider. כוונת שידור זו מופעלת אם יישומון משוחזר אי פעם מגיבוי.

זה גם המקום בו תרשום כל מטפלי אירועים בהם יישומון היישום צריך להשתמש.

בעת עדכון ווידג'ט של אנדרואיד, חשוב לזכור שהמשתמשים יכולים ליצור מופעים מרובים של אותו יישומון. לדוגמה, אולי הווידג'ט שלך ניתן להתאמה אישית והמשתמש מחליט ליצור כמה "גרסאות" המציגות מידע שונה, או לספק גישה לפונקציונליות ייחודית.

כשאתה מתקשר ל- Update (), עליך לציין אם אתה מעדכן כל מופע של יישומון זה, או מופע ספציפי בלבד. אם ברצונך לעדכן כל מופע, אתה יכול להשתמש ב- appWidgetIds, שהוא מערך של מזהים המזהים כל מופע בכל המכשיר.

בקטע הבא, אני מעדכן כל מופע:

@Orride חלל ציבורי onUpdate (הקשר הקשר, AppWidgetManager appWidgetManager, int appWidgetIds) {עבור (int appWidgetId: appWidgetIds) {// עדכן את כל המופעים של יישומון זה // updateAppWidget (הקשר, appWidgetManager, appWidgetId); } super.onUpdate (הקשר, appWidgetManager, appWidgetIds); }

שים לב שכדי לשמור על הקוד בפשטות, שיטת 'עדכון' () זו אינה עושה כעת שינויים בווידג'ט.

onEnabled: ביצוע ההתקנה הראשונית

שיטת מחזור החיים onEnabled () נקראת בתגובה ל- ACTION_APPWIDGET_ENABLED, שנשלחת כאשר מופע מופע של הווידג'ט למסך הבית עבור המסך ראשון זמן. אם המשתמש יוצר שני מופעים של הווידג'ט שלך, OnEnabled () ייקרא למופע הראשון, אך לא לשניה.

שיטת מחזור החיים של OnEnabled () היא המקום שבו עליך לבצע כל הגדרה הנדרשת לכל המופעים של הווידג'ט שלך, כגון יצירת מסד הנתונים אשר יאכיל את פרטי הווידג'ט שלך.

אני הולך להציג כוסית, כך שתוכלו לראות בדיוק מתי נקראת שיטת מחזור החיים הזו:

@Orride חלל ציבורי onEnabled (הקשר בהקשר) {Toast.makeText (הקשר, "onEnabled נקרא", Toast.LENGTH_LONG). Show (); }

שים לב שאם המשתמש מוחק את כל המופעים של הווידג'ט ואז יוצר מופע חדש, זה מסווג כמופע הראשון, ושיטת מחזור החיים onEnabled () תיקרא שוב.

מנקה, עם OnDisabled

שיטת onDisabled () נקראת בתגובה ל- ACTION_APPWIDGET_DISABLED, אשר מופעלת כאשר המשתמש מוחק את אחרון מופע של הווידג'ט שלך.

שיטת מחזור החיים של רכיב widget זה היא המקום בו עליך לנקות את כל המשאבים שיצרת בשיטה onEnabled (), למשל למחוק את בסיס הנתונים שיצרת ב- onEnabled ().

כדי לסייע בשמירה על הקוד שלנו פשוט אני מציג כוסית בכל פעם שהשיטה הזו מופעלת:

@Orride חלל ציבורי onDisabled (הקשר) {Toast.makeText (הקשר, 'onDisabled נקרא', 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 {עדכון חלל סטטיAppWidget (הקשר הקשר, AppWidgetManager appWidgetManager, int appWidgetId) {// טען את קובץ משאב הפריסה לאובייקט RemoteViews // תצוגות RemoteViews = הקשר RemoteViews חדש. getPackageName (), R.layout.list_widget); setRemoteAdapter (הקשר, תצוגות); // הודיע ​​ל- AppWidgetManager על האובייקט RemoteViews // appWidgetManager.updateAppWidget (appWidgetId, צפיות); } @ החלף חלל ציבורי ב- Update (הקשר הקשר, AppWidgetManager appWidgetManager, int appWidgetIds) {עבור (int appWidgetId: appWidgetIds) {updateAppWidget (הקשר, appWidgetManager, appWidgetId); } super.onUpdate (הקשר, appWidgetManager, appWidgetIds); } @ הרחק את החלל הציבורי ב- Enabled (הקשר) {Toast.makeText (הקשר, "onEnabled נקרא", Toast.LENGTH_LONG). Show (); } @ הרחק את החלל הציבורי ב- Disabled (הקשר) {Toast.makeText (הקשר, "onDisabled נקרא", Toast.LENGTH_LONG). Show (); } setRemoteAdapter סטטי חלל פרטי (הקשר להקשר, תצוגות RemoteViews סופיות של @NNNull) {views.setRemoteAdapter (R.id.widget_list, כוונה חדשה (הקשר, WidgetService.class)); }}

הקובץ AppWidgetProviderInfo

ווידג'ט היישום שלך דורש גם קובץ AppWidgetProviderInfo, המגדיר מספר מאפיינים חשובים, כולל מידות המינימום של הווידג'ט שלך ותדירות העדכון של אותו.

קובץ AppWidgetProviderInfo מאוחסן בתיקיית ה- res / xml של הפרוייקט שלך.

אם הפרויקט שלך כבר לא מכיל תיקיה זו, תצטרך ליצור אותה:

  • לחץ על שליטה על תיקיית הגישה של הפרוייקט שלך.
  • בחר חדש> מדריך משאבי אנדרואיד.
  • בחלון הבא, פתח את התפריט הנפתח סוג משאבים ובחר xml.
  • שם הספרייה אמור להתעדכן ל- xml באופן אוטומטי, אך אם לא, תצטרך לשנות אותו באופן ידני.
  • לחץ על אישור.

בשלב הבא, צור קובץ collection_widget_info בו אנו משתמשים כ- AppWidgetProviderInfo שלנו:

  • לחץ על שליטה על תיקיית ה- xml של הפרויקט שלך.
  • בחר חדש> קובץ משאב XML.
  • תן שם לקובץ collection_widget_info.
  • לחץ על אישור.

בקובץ AppWidgetProviderInfo שלנו, עלינו להגדיר את המאפיינים הבאים:

1. android: previewImage

זה ניתן לשליפה המייצגת את הווידג'ט ליישום שלך בוחר יישומוני המכשיר.

אם לא תספק תמונה מקדימה, אנדרואיד תשתמש בסמל היישום שלך במקום זאת. כדי לעודד משתמשים לבחור את הווידג'ט שלך מתוך בורר הווידג'טים, עליך לספק חלון הניתן לציור שמראה כיצד הווידג'ט שלך ייראה ברגע שהוא מוגדר כהלכה על מסך הבית של המשתמש.

הדרך הקלה ביותר ליצור תמונת תצוגה מקדימה היא להשתמש ביישום תצוגה מקדימה של יישומון הכלול באמולטור אנדרואיד. אפליקציה זו מאפשרת לך להגדיר את הווידג'ט שלך ואז ליצור תמונה, שתוכל להשתמש בה בפרויקט אנדרואיד שלך.

אנו ניצור תמונה זו לאחר שנסיים לבנות את הווידג'ט שלנו, ולכן לעת עתה אשתמש במשאב ה- mipmap / ic_launcher שנוצר אוטומטית כתמונת תצוגה מקדימה זמנית.

2. android: widgetCategory

יש למקם ווידג'טים ליישומים בתוך מארח יישומי יישומים, שהוא בדרך כלל מסך הבית של אנדרואיד, אך הם יכולים גם להיות משגר של צד שלישי כמו Evie Launcher או Nova Launcher.

בין רמות ה- API ל -20 ו -20 ניתן היה למקם יישומי יישומים על מסך הבית או מסך המנעול, אך התמיכה במסך המנעול הושמטה ברמת ה- API ברמת ה- 21.

אתה יכול לציין אם ניתן למקם את יישומון האפליקציה שלך על מסך הבית, את מסך הנעילה (שאליו אנדרואיד מכנה "שומר המפתחות") או את שניהם, באמצעות התכונה Android: widgetCategory. מכיוון שלא ניתן למקם ווידג'טים על מסך הנעילה בגירסאות האחרונות של אנדרואיד, אנו נתמקד במסך הבית בלבד.

כדי לשמור על פרטיותו של המשתמש, הווידג'ט שלך לא אמור להציג מידע רגיש או פרטי כאשר הוא מונח על מסך הנעילה.

אם אתה נותן למשתמשים אפשרות להציב את הווידג'ט שלך על מסך הנעילה, כל מי שמציץ במכשיר המשתמש יכול לראות את הווידג'ט שלו ואת כל התוכן שלו. כדי לסייע בשימור פרטיותו של המשתמש, הווידג'ט שלך לא אמור להציג מידע רגיש או פרטי כאשר הוא מונח על מסך הנעילה. אם הווידג'ט שלך מכיל נתונים אישיים, מומלץ לשקול לספק פריסת מסך בית נפרד ומסך נעילה.

3. אנדרואיד: initialLayout

זהו קובץ משאב הפריסה בו הווידג'ט שלך אמור להשתמש כאשר הוא ממוקם על מסך הבית, שעבור הפרויקט שלנו הוא list_widget.xml.

4. אנדרואיד: resizeMode = "אופקי | אנכי"

תכונה android: resizeMode מאפשרת לך לקבוע אם ניתן לשנות את גודל ה- widget שלך בצורה אופקית, אנכית או לאורך שני הצירים.

כדי להבטיח שהווידג'ט שלך יציג ויתפקד בצורה נכונה במגוון מסכים, מומלץ לאפשר לשנות את גודל ה- widget שלך אופקית. ו אנכית, אלא אם כן יש לך סיבה ספציפית שלא.

5. אנדרואיד: minHeight ואנדרואיד: minWidth

אם ניתן לשנות את הגודל של הווידג'ט שלך, עליך לוודא שהמשתמש אינו מצמצם את הווידג'ט עד לנקודה בה הוא הופך לא שמיש. אתה יכול להשתמש בתכונות minHeight ו- minWidth כדי להגדיר את הקטן ביותר שהאפליקציה שלך תצטמק כאשר ישתנה אותה על ידי המשתמש.

ערכים אלה מייצגים גם את הגודל הראשוני של הווידג'ט שלך, כך שאם לא ניתן לשנות את הגודל של הווידג'ט שלך, minHeight ו- minWidth יגדירו את הגודל הקבוע של הווידג'ט.

6. אנדרואיד: updatePeriodMillis

AppWidgetProviderInfo הוא גם המקום בו תציין באיזו תדירות הווידג'ט שלך צריך לבקש מידע חדש.

מרווח העדכונים הקטן ביותר הנתמך הוא פעם בכל 1800000 אלפיות השנייה (30 דקות). גם אם אתה מצהיר על מרווח עדכונים קצר יותר, הווידג'ט שלך עדיין יתעדכן רק פעם בחצי שעה.

למרות שתרצה להציג את המידע העדכני במהירות האפשרית, המערכת יהיה להעיר מכשיר שינה על מנת לאחזר מידע חדש. עדכונים תכופים יכולים לשרוף את סוללת המכשיר, במיוחד בתקופות בהן המכשיר נותר במצב סרק למשך זמן משמעותי, כגון לילה. מתן חווית משתמש מיטבית אפשרית פירושו ליצור איזון בין הגבלת צריכת הסוללה לבין מתן מידע חדש במסגרת זמן סבירה.

עליך לקחת בחשבון גם את סוג התוכן שהווידג'ט שלך יציג.

עליך לקחת בחשבון גם את סוג התוכן שהווידג'טים שלך עבור אנדרואיד יציגו. לדוגמה, יישומון מזג אוויר עשוי להזדקק רק לאחוז תחזית מעודכנת פעם ביום, ואילו אפליקציה שמציגה חדשות ששוב תצטרך לעדכן בתדירות גבוהה יותר.

כדי למצוא את האיזון המושלם הזה, ייתכן שתצטרך לבדוק את הווידג'ט שלך במגוון תדרים של עדכונים ולמדוד את ההשפעה על חיי הסוללה ואת זמניות התוכן של הווידג'ט שלך. אם יש לך קבוצה של בודקים מוכנים, אתה יכול אפילו להגדיר בדיקות A / B, כדי לבדוק אם תדרי עדכון מסוימים מתקבלים בצורה חיובית יותר מאחרים.

כמו כן קרא: AndroidManifest.xml כל מה שאתה צריך לדעת

לבסוף, לאחר שתזהה את מרווח העדכונים המושלם, ייתכן שתרצה להשתמש במרווח קצר יותר בפיתוח ובדיקת האפליקציה שלך. לדוגמה, אתה יכול להשתמש בתדר העדכון הקצר ביותר האפשרי (אנדרואיד: updatePeriodMillis = ”1800000 ″) כשאתה בודק ששיטת onUpdate () של האפליקציה שלך מופעלת כראוי, ואז תשנה ערך זה לפני שתשחרר את האפליקציה שלך לקהל הרחב.

AppWidgetProviderInfo הושלם

הקובץ collection_widget_info.xml המוגמר אמור להיראות כך:

אל תעמעמו על מסך הבית של המשתמש!

כדי להבטיח שמסך הבית לעולם לא ייראה עמוס, אנו נוסיף להוסיף מעט ריפודים ושוליים לווידג'ט שלנו. אם הפרויקט שלך כבר לא מכיל קובץ dimens.xml, יהיה עליך ליצור קובץ אחד:

  • לחץ על שליטה על תיקיית הערכים של הפרויקט שלך.
  • בחר חדש> קובץ משאב ערכים.
  • תן לקובץ זה את ממד השם.
  • לחץ על אישור.

פתח את קובץ dimens.xml שלך והגדר את השוליים וערכי הריפוד הבאים:

10dp 8dp

שולח נתונים לווידג'ט

בשלב הבא עלינו ליצור שירות ווידג'ט, שיהיה אחראי לשליחת נתוני האיסוף שלנו אל הווידג'ט.

צור מחלקת Java חדשה (חדשה> Java Class) בשם WidgetService, והוסף את הדברים הבאים:

יבוא android.content.Intent; יבוא android.widget.RemoteViewsService; WidgetService בכיתה ציבורית מרחיבה את RemoteViewsService {@ Override Public RemoteViewsFactory onGetViewFactory (כוונה מכוונת) {להחזיר DataProvider חדש (זה, כוונה); }}

רישום הווידג'ט שלך במניפסט

כעת עלינו לבצע כמה שינויים במניפסט של הפרויקט שלנו.

כדי להתחיל, פתח את המניפסט ורשום את הווידג'ט שלך כ- BroadcastReceiver. עלינו להוסיף מסנן כוונות לפעולה android.appwidget.action.APPWIDGET_UPDATE:

בשלב הבא עליך לציין את ספק יישומוני האפליקציות:

לבסוף, עלינו להכריז על השירות שישלח נתונים אל הווידג'ט שלנו, שהוא במקרה זה מחלקת WidgetService. שירות זה דורש הרשאת android.permission. BIND_REMOTEVIEWS:

העלה את הווידג'ט שלך למבחן

אם עקבת אחר ההדרכה הזו, כעת יהיה לך ווידג'ט אוסף מלא שמציג מערכת נתונים על מסך הבית של המשתמש.

אם זה היה פרויקט אנדרואיד בחיים האמיתיים, בדרך כלל תרחיב בשיטות מחזור החיים, במיוחד בשיטת onUpdate (), אבל זה כל מה שאנחנו צריכים כדי ליצור ווידג'ט שתוכל להתקין ולבדוק במכשיר אנדרואיד שלך:

  • התקן פרויקט זה בסמארטפון אנדרואיד, טאבלט או AVD (מכשיר וירטואלי אנדרואיד) תואם.
  • לחץ לחיצה ארוכה על כל קטע ריק במסך הבית ובחר יישומונים כשתתבקש; זה משיק את בורר יישומונים.
  • החלק דרך בורר יישומונים עד שתמצא את יישומון היישום שיצרת זה עתה.
  • לחץ לחיצה ארוכה על יישומון זה כדי להוסיף אותו למסך הבית שלך.
  • מכיוון שזו המופע הראשון של ווידג'ט ספציפי זה, שיטת onEnabled () צריכה להופיע, ותראה טוסט "onEnabled שנקרא".
  • שנה את גודל ה- widget שלך. אם תגדיר גודל מינימלי נתמך, בדוק שאתה לא יכול לכווץ את הווידג'ט מעבר לערך זה.
  • בדוק שה- ListView גולל, כצפוי.
  • בשלב הבא עליך לבדוק את שיטת onDisabled () על ידי מחיקת הווידג'ט שלך. לחץ לחיצה ארוכה על הווידג'ט ואז בחר הסר ממסך הבית. מכיוון שזו המופע האחרון של ווידג'ט ספציפי זה, שיטת onDisabled () צריכה להופיע, ותראה טוסט "onDisabled בשם".

זה כל מה שאתה צריך כדי לספק ווידג'ט לאפליקציות אנדרואיד המתפקד, אך יש כמה תוספות שיכולות לעתים קרובות לשפר את חווית המשתמש. בסעיפים הבאים, אנו נעודד משתמשים לבחור יישומון זה מתוך בורר יישומונים, על ידי יצירת תמונת תצוגה מקדימה המציגה את הווידג'ט במיטבו. אני אראה לך כיצד ליצור יישומון הניתן להתאמה אישית מלאה, על ידי הוספת פעילות תצורה לפרויקט שלך.

יצירת תמונת תצוגה מקדימה של יישומון אנדרואיד

אם אתה תופס את מכשיר ה- Android שלך ומחליק דרך בורר הווידג'טים, תראה שכל ווידג'ט מיוצג על ידי תמונה, מה שמדגים בדרך כלל כיצד יישומון זה ייראה ברגע שהוא מוגדר על מסך הבית של המשתמש.

כדי לעודד משתמשים לבחור את הווידג'ט שלך, עליך לספק תמונת תצוגה מקדימה המדגישה את כל המידע והתכונות השימושיות שיש לווידג'ט שלך להציע.

אתה יכול ליצור במהירות ובקלות תמונת תצוגה מקדימה, באמצעות היישום 'תצוגה מקדימה של יישומון' הכלול באמולטור אנדרואיד.

שים לב שתצוגה מקדימה של יישומון אינה כלולה בתמונות מערכת האנדרואיד האחרונות, כך שתצטרך ליצור AVD באמצעות Nougat (API Level 25) או מוקדם יותר:

  • התקן את היישום שלך ב- AVD שמריץ API 25 ומטה.
  • פתח את מגירת האפליקציות של ה- AVD והפעל את האפליקציה Widget Preview.
  • תצוגה מקדימה של ה- Widget תציג רשימה של כל יישום המותקן כרגע ב- AVD זה; בחר את היישום שלך מהרשימה.

  • כעת יישומון שלך יוצג על רקע ריק. הקדש זמן לשנות את גודל הווידג'ט שלך ולהגדיר אותו עד שהוא יציג את הטוב ביותר שיש לווידג'ט שלך להציע.
  • לאחר שתשמחו מהמראה של הווידג'ט ותוכנו, בחרו בצלם תמונה.

  • כדי לאחזר את תמונת המצב שלך, חזור ל- Android Studio ובחר תצוגה> כלי חלונות> סייר קבצי מכשירים מסרגל הכלים. זה משיק את סייר הקבצים של Android Studio.
  • בסייר הקבצים התקן, נווט אל sdcard / הורד. עליך למצוא את תמונת התצוגה המקדימה שלך שנשמרה בפורמט הבא: _ori_.png

  • גרור תמונה זו מתוך סטודיו אנדרואיד ושחרר אותה איפשהו נגיש, כגון שולחן העבודה שלך.
  • תן לקובץ תמונה זה שם תיאורי.
  • גרור ושחרר את הקובץ לתיקייה הניתנת לצייר של הפרויקט שלך.
  • פתח את ה- AppWidgetProviderInfo שלך, שעבור פרויקט זה הוא collection_widget_info.xml.
  • מצא את קו האנדרואיד: previewImage = "@ mipmap / ic_launcher" ועדכן אותו כדי להתייחס לתמונת התצוגה המקדימה שלך.

הווידג'ט שלך ישתמש כעת במשאב תמונות חדש זה כתמונת התצוגה המקדימה שלו:

  • התקן את הפרויקט המעודכן במכשיר אנדרואיד או AVD הפיזיים שלך.
  • לחץ לחיצה ארוכה על כל קטע ריק במסך הבית.
  • הקש על יישומונים, אשר משיק את בורר הווידג'טים.
  • גלול אל הווידג'ט שלך; כעת עליו להשתמש בתמונת התצוגה המקדימה המעודכנת.

ווידג'טים הניתנים להתאמה אישית: הוספת פעילות תצורה

פעילות תצורה מופעלת אוטומטית כאשר המשתמש מציב כל מופע של הווידג'ט על מסך הבית שלו.

ישנן כמה סיבות לכך שתרצה להוסיף פעילות תצורה לפרויקט שלך.

ווידג'טים נוטים לספק את חוויית המשתמש הטובה ביותר כאשר הם מספקים גישה למידע או לתכונות החשובות ביותר למשתמש האישי.

ראשית, יישומונים מסוימים דורשים הגדרה ראשונית, למשל ווידג'ט המציג התראות תנועה עשוי להיות זקוק לדעת את כתובת הבית של המשתמש, היכן הוא עובד והשעות בהן הם בדרך כלל נוסעים. בלי דרך להזין מידע זה, הווידג'ט שלך עשוי להיות חסר תועלת לחלוטין!

בנוסף, ווידג'טים נוטים לספק את חווית המשתמש הטובה ביותר כאשר הם מספקים גישה למידע או לתכונות החשובות ביותר עבור המשתמש הבודד. על ידי הוספת פעילות תצורה לפרויקט שלך, אתה יכול לתת למשתמשים את החופש לבחור בדיוק מה כלול בווידג'ט שלך.

אפילו התאמות אישיות פשוטות יחסית, כמו שינוי רקע או גופן של ווידג'ט, יכולות להשפיע לטובה על חווית המשתמש - אחרי הכל, אף אחד לא יעריך ווידג'ט שמתנגש חזותית עם שאר מסך הבית שלהם!

אף אחד לא יעריך ווידג'ט שמתנגש חזותית עם שאר מסך הבית שלהם!

לחלופין, לפעמים ייתכן שיש לך רשימה ארוכה של תוכן שתרצה לכלול בווידג'ט שלך, ואתה נאבק לצמצם את האפשרויות שלך. פעילות תצורה יכולה להיות דרך להעביר את כל הרעיונות שלך לשימוש טוב, בלי יוצר ווידג'ט עמוס ומבלבל. רק זכור כי הגדרת ווידג'ט לא אמורה להרגיש מטלה, כך שאם אתה מספק פעילות תצורה, מומלץ שתגביל את עצמך לשלוש אפשרויות תצורה.

בואו להוסיף פעילות תצורה לפרויקט שלנו!

ראשית, פעילות התצורה שלנו זקוקה לפריסה, לכן צור קובץ משאב חדש לפריסה בשם config_activity.xml.

אני מתכוון להוסיף את הכפתורים הבאים לפריסה זו:

  • כפתור תצורה. בפרויקט אמיתי, לחצן זה ישנה את הווידג'ט בדרך כלשהי, למשל הוספה או הסרה של תוכן, או שינוי תדירות הווידג'ט מתעדכן. כדי לסייע בשמירה על הקוד שלנו, לחיצה על כפתור זה פשוט תציג טוסט של אפשרויות תצורה.
  • לחצן הגדרה. ברגע שהמשתמש מרוצה מאופן התצורה של הווידג'ט שלו, לחיצה על כפתור זה תמקם את הווידג'ט שהוגדר לאחרונה על מסך הבית שלו.

להלן קובץ config_activity.xml השלים שלי:

צור את פעילות התצורה

כעת עלינו ליצור את פעילות התצורה שלנו.

כדי להתחיל, צור מחלקת Java חדשה בשם ConfigActivity. בפעילות זו אנו הולכים לאחזר את מזהה יישומון היישום מתוך כוונה שהשיקה את פעילות התצורה. אם לכוונה זו אין מזהה יישומון, נצטרך לקרוא לשיטת הסיום ():

כוונת כוונה = getIntent (); תוספות בצרורות = intention.getExtras (); if (תוספות! = null) {appWidgetId = extras.getInt (AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); if (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {סיום (); }

בשלב הבא עלינו ליצור כוונת החזרה, לעבור את היישום המקוריWidgetId ולהגדיר את התוצאות מהפעילות התצורה:

כוונה תוצאה ערך = כוונה חדשה (); resultValue.putExtra (AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult (RESULT_OK, ValueValue); סיום (); }}}

אם אתה מספק פעילות תצורה, השידור ACTION_APPWIDGET_UPDATE לא יישלח אוטומטית עם הפעלת פעילות התצורה, שפירושה שיטת onUpdate () לא יתקשר כאשר המשתמש יוצר מופע של הווידג'ט שלך.

כדי להבטיח שהווידג'ט שלך נוצר עם מידע ותכנים עדכניים, פעילות התצורה שלך צריך הפעל את בקשת ה- Update () הראשונה.

להלן ConfigActivity השלים:

יבוא android.app.Activity; יבוא android.appwidget.AppWidgetManager; יבוא android.os.Bundle; יבוא android.widget.Button; יבוא android.content.Intent; יבוא android.view.View; יבוא android.view.View.OnClickListener; יבוא android.widget.Toast; מחלקה ציבורית ConfigActivity מרחיבה את הפעילות {@Orride void מוגן onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.config_activity); setResult (RESULT_CANCELED); כפתור setupWidget = (כפתור) findViewById (R.id.setupWidget); setupWidget.setOnClickListener (OnClickListener חדש () {@ השג את הריק הציבורי onClick (הצג v) {handleSetupWidget ();}}); לחצן configButton = (כפתור) findViewById (R.id.configButton); configButton.setOnClickListener (OnClickListener חדש () {@ השג את הריק הציבורי onClick (הצג v) {handleConfigWidget ();}}); } handle voice handleSetupWidget () {showAppWidget (); } ידית חלל פרטיתConfigWidget () {Toast.makeText (ConfigActivity.this, "אפשרויות תצורה", Toast.LENGTH_LONG). show (); } int appWidgetId; private void showAppWidget () {appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; כוונת כוונה = getIntent (); תוספות בצרורות = intention.getExtras (); if (תוספות! = null) {appWidgetId = extras.getInt (AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); if (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {סיום (); } // TO DO: בצע את התצורה // Intent resultValue = New Intent (); resultValue.putExtra (AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult (RESULT_OK, ValueValue); סיום (); }}}

לאחר שיצרת פעילות תצורה, עליך להכריז על פעילות זו במניפסט ולציין שהיא מקבלת את הפעולה APPWIDGET_CONFIGURE:

לבסוף, מכיוון שמפנים לפעילות תצורה מחוץ להיקף החבילה, עלינו להכריז על פעילות זו בקובץ AppWidgetProviderInfo שלנו, שהוא במקרה זה הקובץ collection_widget_info.xml:

android: config = "com.jessicathornsby.collectionwidget.ConfigActivity">

בחינת הפרויקט שלך

עכשיו הגיע הזמן להעמיד למבחן את הפרויקט שסיים:

  • התקן את הפרויקט המעודכן שלך במכשיר אנדרואיד פיזי או AVD.
  • מחק את כל המופעים הקודמים של הווידג'ט שלך, כדי להבטיח שאתה עובד עם הגרסה האחרונה ביותר.
  • לחץ לחיצה ארוכה על כל אזור ריק במסך הבית ובחר יישומונים כשתתבקש.
  • מצא את הווידג'ט שלך ב'בורר יישומונים 'ולחץ לחיצה ארוכה על מנת לבחור אותו.
  • שחרר את הווידג'ט למסך הבית שלך. פעילות התצורה צריכה להיפתח אוטומטית.
  • תן ללחיצה על לחצן ביצוע חלק מהתצורה ולחץ על טוסט אפשרויות תצורה המאשר כי אינטראקציה זו נרשמה בהצלחה.
  • תאר לעצמך שציינת את ההגדרות של הווידג'ט וכעת אתה מוכן למקם אותו על מסך הבית שלך; תן ללחצן 'צור את הווידג'ט' ברז, ויש ליצור יישומון זה בהצלחה.

אתה יכול להוריד את פרויקט יישומון האיסוף שהושלם מ- GitHub.

מסיימים

במאמר זה יצרנו ווידג'ט לאיסוף הניתן לגלילה המציג מערך נתונים על מסך הבית של המשתמש.

אם אתה רוצה להמשיך לעבוד עם פרויקט זה, אתה יכול לנסות להוסיף קוד משלך לשיטת onUpdate (), כדי ליצור ווידג'ט שמתעדכן עם מידע חדש במרווח שהוגדר בקובץ AppWidgetProviderInfo שלך (collection_widget_info).

אם אתה יוצר יישומון אנדרואיד, הקפד לשתף את היצירות שלך בתגובות למטה!

עדכון 4 באוקטובר 2019 (05:30 ET): מנכ"ל הודו וסמנכ"ל גלובל בהודו של שיאומי, מנו קומאר ג'ין, אישרו בציוץ כי החברה אכן תשיק את ה- Redmi 8 ב -9 באוקטובר בהודו. הוא גם הקניט חיישן מצלמה של ס...

הטלפונים של רדמי של שיאומי הם ככל הנראה הטלפונים התקציביים הטובים ביותר בכל שנה, ונראה שאנחנו יכולים לצפות לכניסה נוספת בשנת 2019.מכשיר Redmi חדש (מספר דגם M1908C3IC או M1908C3IG) הנדנד על ידי ה- FCC ...

הקריאה ביותר