מדריך Windows Phone – שימוש ב Tiles
במערכת ההפעלה Windows Phone, המילה Tile (או אריח בעברית) מציינת לינק לאפליקציה שנמצא במסך הראשי של הפלאפון. ישנם שני סוגי Tile: ראשי ומשני.
ה Tile הראשי נוצר כאשר המשתמש נועץ אפליקציה למסך הראשי. לחיצה על ה Tile הראשי תפתח את האפליקציה בדף הפתיחה שלה.
Tile משני יכול להיווצר רק באמצעות קוד ומטרתו לאפשר למשתמשים לפתוח את האפליקציה במצב מסוים. לדוגמא אפליקציית מזג אוויר יכולה ליצור Tile משני עבור כל עיר שמעניינת את המשתמש.
מבנה Tile
החל מגרסת "מנגו" של מערכת ההפעלה Windows Phone, ל Tile יכולים להיות שני צדדים, שמתחלפים לסירוגין כל כמה שניות.
מבנה הצד הקדמי מתואר בתרשים הבא:
כאשר השדה הראשון הוא מספר בין 0 ל 99. אם הערך הוא 0 העיגול עם המספר לא יוצג כלל.
מבנה הצד האחורי של Tile מתואר בתרשים הבא:
נעיר כי אם לא נקבע אף אחת מהתכונות האחוריות של ה Tile אזי ל Tile יהיה רק צד קדמי.
בנוסף, כדאי לדעת שגודל Tile הוא 173 פיקסלים לאורך ולרוחב. תמונות רקע שיקבעו לTile ימתחו באופן אוטומטי כך שיתאימו לגודל זה.
עבודה עם Tile ראשי
כאמור, Tile ראשי אינו יכול להיווצר ע"י מפתח האפליקציה, אלא רק ע"י המשתמש ע"י נעיצת האפליקציה למסך הפתיחה, אולם מפתח האפליקציה יכול לשלוט בחלקים ממבנה ה Tile ע"י שינוי השדות הרלוונטיים בהגדרות הפרויקט:
כיצד ליצור Tile משני?
כדי ליצור Tile משני נשתמש ב פונקציה Create של המחלקה ShellTile. פונקציה זו מקבלת כפרמטר ראשון את הלינק שצריך להפעיל כאשר ה Tile נלחץ. הפרמטר השני הוא מבנה אשר מכיל את כל הנתונים המאפיינים Tile כגון כותרת, תמונת רקע, מספר וכו'.
להלן קוד אשר יוצר Tile משני:
StandardTileData standardTileData = new StandardTileData()
{
Title = "Secondary Tile",
Count = 42,
BackgroundImage = new Uri("TileRed.png", UriKind.Relative),
BackTitle = "Back Title",
BackContent = "back content",
BackBackgroundImage = new Uri("TileBlue.png", UriKind.Relative)
};
ShellTile.Create(new Uri("/MainPage.xaml?FromTile=true", UriKind.Relative), standardTileData);
לאחר הפעלת הקוד הנ"ל נקבל את ה Tile המשני המופיע בתמונה הבאה:
אם נרצה לעדכן או למחוק Tile נצטרך ראשית למצוא אותו ע"י שימוש בתכונה הסטטית ShellTile.ActiveTiles שמכילה את רשימת כל ה Tile הפעילים במערכת.
לדוגמא, קטע הקוד הבא מוצא את ה Tile המשני שיצרנו מקודם ומעדכן את המספר שלו:
ShellTile TileToFind =
ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("FromTile=true"));
if (TileToFind != null)
{
StandardTileData standardTileData = new StandardTileData()
{
Count = 43
};
TileToFind.Update(standardTileData);
}
להלן התוצאה:
הערה: ה Tile הראשון ברשימה ShellTile.ActiveTiles הוא תמיד ה Tile הראשי (בין אם הוא מוצג או לא), וניתן לעדכן את הערכים שלו באותו אופן.
לבסוף, ניתן למחוק Tile משני ע"י שימוש בקוד הבא:
ShellTile TileToFind =
ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("FromTile=true"));
if (TileToFind != null)
{
TileToFind.Delete();
}
עדכון מחזורי של Tile
כעת נראה כיצד ניתן לעדכן את תמונת הרקע של Tile באופן מחזורי.
הערה: רק תמונת הרקע ניתנת לעדכון בצורה מחזורית.
בקטע הקוד הבא אנו יוצרים מחלקה מסוג ShellTileSchedule שאחראית על העדכון המחזורי. מחלקה זו מקבלת כפרמטר את המופע של ShellTile הרלוונטי ל Tile שאותו אנו מעוניינים לעדכן.
בנוסף, אנו מעבירים למחלקה את פרטי התזמון, האם מדובר בעדכון חד פעמי, או עדכון קבוע, ומהו זמן ההתחלה. הפרמטר המרכזי הוא השדה RemoteImageUri שמכיל את התמונה שיש לקרוא מהרשת בכל פעם שהעדכון נקרא.
ShellTileSchedule shellTileSchedule =
new ShellTileSchedule(ShellTile.ActiveTiles.FirstOrDefault());
// Update will happen one time.
shellTileSchedule.Recurrence = UpdateRecurrence.Onetime;
// Start the update schedule now, but because updates are batched, the update may not happen for an hour or so.
shellTileSchedule.StartTime = DateTime.Now;
shellTileSchedule.RemoteImageUri =
new Uri(@"http://www.weather.gov/forecasts/graphical/images/conus/MaxT1_conus.png");
shellTileSchedule.Start();
תוצאת הריצה של הקוד הנ"ל תראה כך (לאחר שהעדכון יבוצע):
תגובות בפייסבוק