
getConfiguration, ועושים switch על Configuration.Orientation. כך מזהים Portrait (המכשיר עומד) או Landscape (המכשיר שוכב).WindowManager בעזרת getSystemService של שירות החלון, מגיעים ל-display באמצעות getDefaultDisplay, וקוראים ל-getRotation.switch על ערך ה-rotation. Surface.ROTATION_0 הוא Portrait רגיל, ROTATION_90 הוא Landscape, ROTATION_180 הוא Reverse Portrait ו-ROTATION_270 הוא Reverse Landscape.getRotation לא מחזירה את הזווית המדויקת שבה המשתמש מחזיק את המכשיר. גם בהטיה של כ-15 מעלות לכל כיוון התוצאה נשארת 0, והפונקציה מחזירה תמיד אחד מארבעת המצבים.הטקסט המלא של הדקות הראשונות בהרצאה «Get Activity Orientation» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אחרי שראינו איך אנחנו יכולים להציג עוד אקטיביטי, איך אנחנו יכולים לשלוח נתונים לאקטיביטי, לקבל ממנה מידע בחזרה ועוד כל מיני דברים שקשורים לאקטיביטי, אנחנו הולכים לראות כמה נתונים בנוגע ל-activity orientation, כלומר המצב שבו האקטיביטי נמצאת,
האם המכשיר נמצא בצורה אנכית ואז זה נחשב פורטרייט, או האם המכשיר נמצא בצורה אופקית ואז זה נחשב ולנסקייפ ועוד כל מיני דברים בנושא דבר ראשון בסרטון הזה אנחנו הולכים פשוט לדעת מה האוריינטיישן של המכשיר כי יכול להיות שאנחנו רוצים לפי זה לבצע כל מיני דברים
אז בואו ניקח כאן איזשהו לחצן יש לנו פה match parent ו-rap content בואו נגדיר לנו text size של 20 sp בואו נגדיר לנו טקסט All Caps False שנראה את הכתב בצורה רגילה ויש לנו כאן את הטקסט עצמו שואו טיוויטי אוריינטיישן בואו נגדיר כאן און קליק באטן טיוויטי אוריינטיישן
אנדרליין און קליק ואנחנו רוצים לגשת לקוד ופשוט להציג את האוריינטציה של המכשיר האם המכשיר נמצא בפורטרייט כלומר עומד או שהוא שוכב והוא בלאנסקייפ אז לצורך כך אנחנו רוצים להגיע ל-resources שעבדנו איתם בעבר.
בואו נפתח פה object.resources שווה get.resources אחרי שיש לנו את ה-resources אנחנו דרכו מגיעים ל-object.configuration כדי לקבל נתונים לגבי הקונפיגורציה של המכשיר.
זה נמצא ב-resources.get.configuration לאחר מכן כל מה שאנחנו צריכים לעשות זה איזשהו switch על configuration.orientation במידה ואנחנו ב-configuration.orientation.portrait בואו נציג תוסט טקסט דיס אנחנו בפורטרייט שואו והנה יש לנו את התוסט ובואו נעשה איזשהו ברייק נשכפל את הקייס
הזה והפעם אנחנו רוצים לבדוק אוריינטיישן לאנסקייפ נציג לאנסקייפ ומה שאנחנו רוצים לעשות זה לבדוק כרגע את האפליקציה הזאת גם על המכשיר וגם על האמולטור בואו נריץ והנה האפליקציה מופיעה על האמולטור ועוד שנייה היא תרוץ על המכשיר ואנחנו כרגע נמצאים בפורטרייט אז בואו ניגש
ונלחץ show activity orientation על האמולטור ונראה שאנחנו בפורטרייט ובואו נלחץ על המכשיר ונראה שאנחנו בפורטרייט נחזור לאמולטור ובעזרת קונטרול F12 אנחנו הופכים אותו ומגיעים ללנסקייפ לחיצה מראה לנו שאנחנו בלנסקייפ בואו ניגש למכשיר
ופשוט אני מרים אותו והופך אותו ועכשיו המכשיר נמצא בלנסקייפ אני לוחץ והנה אנחנו בלנסקייפ בואו נחזיר אותם בחזרה חזרתי את המכשיר בואו נחזיר על ידי קונטרול F12 את האמולטור ויש משהו שאנחנו צריכים להבין לגבי מכשיר אמיתי שלא ניתן להצגה באמולטור לפחות לא באמולטור הזה וזה שמכשיר אמיתי יכול להיות פורטרייט יכול
להיות לנסקייפ הנה אני הופך אותו ללנסקייפ אבל הוא יכול להיות גם ריברס פורטרייט זה מה שעשיתי כרגע פשוט הפכתי אותו ממש הוא עומד הפוך ואם אני מסתכל על האוריינטציה אני רואה שהוא פורטרייט ואני ממשיך להפוך אותו למצב של ריברס לנדסקייפ ובשיטה שאנחנו רואים אנחנו רק רואים לנדסקייפ.
עכשיו יכול להיות מצב שאנחנו כן רוצים לדעת האם אנחנו בפורטרייט או בריברס פורטרייט או בלנדסקייפ וריברס לנדסקייפ. אני מחזיר בחזרה את המכשיר לפורטרייט רגיל כלומר הריברס זה סך הכל ההפך של כל אחד מהם אי אפשר להציג את זה באמולטור לפחות לא בזה אבל כן אפשר לגלות את זה אז לצורך כך בואו ניגש ונוסיף עוד לחצן ונעשה איזשהו איזושהי הבדלה ביניהם show activity orientation בואו נרד כאן איזשהו
enter ואנחנו רוצים להציג two states two states כלומר יש לנו שני מצבים או שאנחנו portrait או שאנחנו לנסקייפ אקטיביטי יש לנו פה two states אוריינטיישן בואו ניקח ונגדיר את זה גם כאן כדי שנהיה מדויקים לגבי הדוגמה נשכפל את הלחצן הזה ואנחנו רוצים להציג לחצן נוסף של four
states אוריינטיישן four states אוריינטיישן יאפשר לנו לגלות האם אנחנו בפורטרייט או לנסקייפ או ריברס פורטרייט או ריברס לנסקייפ כלומר שהשיטה הקודמת לא הציגה לנו Alt Enter, Enter והנה אנחנו מגיעים ללחצן השני.
ומה שאנחנו רוצים לעשות כאן זה טכניקה אחרת. בטכניקה הזאת אנחנו משתמשים באובייקט שנקרא Window Manager. Window Manager אחראי על ה-Window עצמו ואנחנו בונים אובייקט Window Manager ומכניסים לתוכו קאסטינג של ווינדואו מנאג'ר ופונים
לגט סיסטם סרוויס ווינדואו סרוויס זה בעצם איזשהו סרוויס שהמכשיר נותן לנו. לאחר מכן דרכו אנחנו מגיעים לאובייקט שאחרי התצוגה והוא נקרא דיספלי או נבנה אותו וניגש לווינדואו מנאג'ר נקודה גט דיפולט דיספלי.
לאחר מכן יש לנו משתנה אינטג'רי שנקרא רוטיישן שאנחנו יכולים להשיג כלומר הסיבוב עצמו, הזווית, ודרך ה-display אנחנו מגיעים לפונקציה שנקראת getRotation.
אם עשינו את זה אנחנו עכשיו יכולים לבצע סוויץ' על ה-Rotation. ה-Rotation זה סך הכל הזווית שבה המכשיר נמצא.
case surface.rotation0 זה אומר שאנחנו כרגע בפורטרייט רגיל, זאת אומרת הזווית כרגע שהמכשיר עומד זה 0.
עכשיו שימו לב שיכול להיות שהיוזר נמצא בזווית קרובה ל-0 לדוגמה פלוס 15 מעלות מינוס 15 מעלות מבחינת get rotation זה עדיין יהיה 0. כלומר הפונקציה get rotation לא מחזירה לנו באמת את הזווית שהיוזר מחזיק את המכשיר אלא מחזירה לנו אחד מארבעה מצבים שדרכם אנחנו יכולים לזהות את ארבעת המצבים של האוריינטיישן.
אז בואו נציג פה איזשהו טוסט.