PracticU

Get Activity Orientation

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › Get Activity Orientation
מילון מושגים:
Activity - ב-Android, רכיב שמייצג מסך יחיד של האפליקציה שאיתו המשתמש מתקשר.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.
אמולטור - תוכנה שמחקה מכשיר או סביבה אחרת, למשל כדי להריץ ולבדוק אפליקציית מובייל על המחשב.
שירות - תוכנה שרצה ברקע ומספקת פונקציונליות לרכיבים אחרים, לרוב ללא ממשק משתמש, ומופעלת אוטומטית עם המערכת.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.

Get Activity Orientation
איך האפליקציה יכולה לדעת אם המכשיר מוחזק לאורך, לרוחב או הפוך? ההרצאה מציגה שתי דרכים לקרוא את האוריינטציה של המכשיר בקוד ולהציג אותה בהודעת Toast.
שתי הטכניקות
1. הטכניקה הראשונה, דרך Configuration: מקבלים את אובייקט ה-Resources, ממנו את getConfiguration, ועושים switch על Configuration.Orientation. כך מזהים Portrait (המכשיר עומד) או Landscape (המכשיר שוכב).
2. מגבלת הטכניקה הראשונה: מכשיר אמיתי יכול להיות גם Reverse Portrait או Reverse Landscape, אבל בשיטה הזו מתקבל רק Portrait או Landscape. את המצבים ההפוכים אי אפשר להציג באמולטור שבו השתמשו, ולכן בודקים אותם על מכשיר אמיתי.
3. הטכניקה השנייה, דרך Window Manager: בונים אובייקט WindowManager בעזרת getSystemService של שירות החלון, מגיעים ל-display באמצעות getDefaultDisplay, וקוראים ל-getRotation.
4. ארבעה מצבים: עושים switch על ערך ה-rotation. Surface.ROTATION_0 הוא Portrait רגיל, ROTATION_90 הוא Landscape, ROTATION_180 הוא Reverse Portrait ו-ROTATION_270 הוא Reverse Landscape.
5. בדיקה בפועל: באמולטור הוחלף המצב עם Ctrl+F12 ונראו רק שני מצבים. במכשיר אמיתי, סיבוב של 90 מעלות בכל פעם הציג את ארבעת המצבים לפי הסדר.
שימו לב
getRotation לא מחזירה את הזווית המדויקת שבה המשתמש מחזיק את המכשיר. גם בהטיה של כ-15 מעלות לכל כיוון התוצאה נשארת 0, והפונקציה מחזירה תמיד אחד מארבעת המצבים.
עכשיו אפשר לזהות איך המשתמש מחזיק את המכשיר, ולהפעיל לפי זה פעולות שונות.
השיעור הבא בקורס: Orientation Based Layout

פרקי ההרצאה: Get Activity Orientation

  1. 00:00

    מהי אוריינטציה Portrait ו-Landscape

  2. 00:41

    לחצן להצגת האוריינטציה

  3. 01:44

    קריאת האוריינטציה מ-Configuration

  4. 03:00

    בדיקה באמולטור ובמכשיר

  5. 03:57

    מצבי Reverse במכשיר אמיתי

  6. 04:57

    לחצן לזיהוי ארבעה מצבים

  7. 05:53

    WindowManager ו-getRotation

  8. 07:11

    ערכי Surface.ROTATION לכל מצב

תמלול ההרצאה: Get Activity Orientation

הטקסט המלא של הדקות הראשונות בהרצאה «Get Activity Orientation» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    אחרי שראינו איך אנחנו יכולים להציג עוד אקטיביטי, איך אנחנו יכולים לשלוח נתונים לאקטיביטי, לקבל ממנה מידע בחזרה ועוד כל מיני דברים שקשורים לאקטיביטי, אנחנו הולכים לראות כמה נתונים בנוגע ל-activity orientation, כלומר המצב שבו האקטיביטי נמצאת,

  2. 00:22

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

  3. 00:44

    אז בואו ניקח כאן איזשהו לחצן יש לנו פה match parent ו-rap content בואו נגדיר לנו text size של 20 sp בואו נגדיר לנו טקסט All Caps False שנראה את הכתב בצורה רגילה ויש לנו כאן את הטקסט עצמו שואו טיוויטי אוריינטיישן בואו נגדיר כאן און קליק באטן טיוויטי אוריינטיישן

  4. 01:21

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

  5. 01:46

    בואו נפתח פה object.resources שווה get.resources אחרי שיש לנו את ה-resources אנחנו דרכו מגיעים ל-object.configuration כדי לקבל נתונים לגבי הקונפיגורציה של המכשיר.

  6. 02:02

    זה נמצא ב-resources.get.configuration לאחר מכן כל מה שאנחנו צריכים לעשות זה איזשהו switch על configuration.orientation במידה ואנחנו ב-configuration.orientation.portrait בואו נציג תוסט טקסט דיס אנחנו בפורטרייט שואו והנה יש לנו את התוסט ובואו נעשה איזשהו ברייק נשכפל את הקייס

  7. 02:44

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

  8. 03:15

    ונלחץ show activity orientation על האמולטור ונראה שאנחנו בפורטרייט ובואו נלחץ על המכשיר ונראה שאנחנו בפורטרייט נחזור לאמולטור ובעזרת קונטרול F12 אנחנו הופכים אותו ומגיעים ללנסקייפ לחיצה מראה לנו שאנחנו בלנסקייפ בואו ניגש למכשיר

  9. 03:37

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

  10. 04:07

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

  11. 04:36

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

  12. 05:12

    enter ואנחנו רוצים להציג two states two states כלומר יש לנו שני מצבים או שאנחנו portrait או שאנחנו לנסקייפ אקטיביטי יש לנו פה two states אוריינטיישן בואו ניקח ונגדיר את זה גם כאן כדי שנהיה מדויקים לגבי הדוגמה נשכפל את הלחצן הזה ואנחנו רוצים להציג לחצן נוסף של four

  13. 05:42

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

  14. 06:05

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

  15. 06:26

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

  16. 06:49

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

  17. 07:05

    אם עשינו את זה אנחנו עכשיו יכולים לבצע סוויץ' על ה-Rotation. ה-Rotation זה סך הכל הזווית שבה המכשיר נמצא.

  18. 07:16

    case surface.rotation0 זה אומר שאנחנו כרגע בפורטרייט רגיל, זאת אומרת הזווית כרגע שהמכשיר עומד זה 0.

  19. 07:30

    עכשיו שימו לב שיכול להיות שהיוזר נמצא בזווית קרובה ל-0 לדוגמה פלוס 15 מעלות מינוס 15 מעלות מבחינת get rotation זה עדיין יהיה 0. כלומר הפונקציה get rotation לא מחזירה לנו באמת את הזווית שהיוזר מחזיק את המכשיר אלא מחזירה לנו אחד מארבעה מצבים שדרכם אנחנו יכולים לזהות את ארבעת המצבים של האוריינטיישן.

  20. 07:54

    אז בואו נציג פה איזשהו טוסט.

לקורס המלא: קורס פיתוח אפליקציות לאנדרואיד

ההרצאה הקודמת: Prevent Keyboard Auto Display

ההרצאה הבאה: Orientation Based Layout

הרצאות קשורות מקורסים אחרים

  • Get Requests
  • Get-Help
  • Activity Tracing
  • Activity Logs

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון