
dimens.xml ולהפנות אליהם. השיעור מראה איך עושים זאת, איך מתאימים ערכים למכשירים גדולים, ואיך קוראים אותם מקוד Java.padding של 16dp שה-IDE מוסיף הוא בעצם הפניה לשני ערכים בקובץ (activity_horizontal_margin ו-activity_vertical_margin). הוא מופיע באפור.dimen בשם button_width עם 150dp. ב-Layout כותבים @dimen/ ובוחרים מהרשימה.70dp, ממתינים למנורה ולוחצים Alt+Enter, בוחרים Extract dimension resource ונותנים שם, למשל button_height.text_size ביחידות sp, למשל 30 ובהמשך 25.dimens.xml (w820dp) חל על מכשירים ברוחב גדול מ-820dp. מעתיקים אליו את ההגדרות ומשנים, למשל margin של 64dp, לחצן של 230 וגובה 80. אנדרואיד בוחרת לבד, בלי קוד.values (ברירת מחדל) ותיקיית values-w820dp. עוד סוגים, כמו אוריינטציה landscape ו-portrait, יילמדו בשיעור נפרד.getResources() ואז getDimension(R.dimen.button_width), וזה מחזיר float בפיקסלים. עבור 200dp התקבל 600 פיקסלים, פי שלושה.DisplayMetrics מתוך getResources().getDisplayMetrics() ומחלקים את הפיקסלים ב-density, ומקבלים את הערך שהוגדר.הטקסט המלא של הדקות הראשונות בהרצאה «Dimension Resource» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז אחרי שהבנו מה זה ריסורס ומה המטרה של התיקייה רס אנחנו עוברים להסתכל על הריסורסס השונים שקיימים בתוכה מה הם ואיך אנחנו יכולים להשתמש בהם בבניית אפליקציה. הדבר הראשון שאנחנו הולכים לראות זה תיקיית ואליוז ובתוכה את קובץ הדימנדס.
תיקיית ואליוז המטרה שלה זה להחזיק ריסורסס שהם בעצם ערכים שונים שאנחנו רוצים להשתמש איתם ברחבי האפליקציה. לדוגמה צבעים שונים, לדוגמה מחרוזות או לדוגמה Dimensions כלומר גדלים.
למה כאשר אנחנו רוצים להגדיר איזשהו גודל מסוים נניח רוחב של לחצן, למה אנחנו לא פשוט נלך ללחצן ונכתוב את הרוחב הזה בהגדרה של הלחצן, אלא נגדיר את הרוחב בקובץ XML בתוך ה-resource?
אז יש לזה כמה סיבות סיבה אחת מאפשרת לנו לרכז את כל הגדלים במקום אחד בקובץ אחד ויחיד וזה מאוד נוח לדעת שהכל נמצא בקובץ הזה אם אנחנו רוצים ללכת ולשנות משהו זה נמצא שם.
סיבה שנייה בכדי למנוע שכפול הגדרות אולי אנחנו רוצים שכל הלחצנים באפליקציה שלנו יהיו בעלי אותו הרוחב אז אם אנחנו מגדירים את הרוחב הזה פעם אחת בקובץ הדיימנס אנחנו יכולים אחר כך לתת אותו בלי שום בעיה לכל הלחצנים ואז אם אנחנו רוצים בהמשך לשנות אותו מאיזושהי סיבה בבת אחת אנחנו משנים אותו בקובץ הדימנס
וההגדרה הזאת אוטומטית מוכלת על כל הלחצנים שמשתמשים בהגדרה הזאת. סיבה נוספת יכולה להיות עבור לדוגמה מכשירים שונים אם ליוזרים יש לדוגמה גדלים שונים של מכשירים אנחנו אנחנו יכולים עבור כל גודל להגדיר הגדרות משלו שאוטומטית ייכנסו לתוקף בהתאם למכשיר של היוזר.
אנחנו כמובן הולכים לראות איך עושים את כל הדברים האלה. אז הדבר הראשון אנחנו יכולים לראות שכאשר אנחנו פותחים קובץ layout יש לנו padding שאוטומטית ניתן לקובץ ואנחנו רואים שכתוב פה 16 dp אבל תמיד ראינו את האפור הזה וכאשר אנחנו מרחפים מעליו אנחנו רואים שזאת בעצם הגדרה שנמצאת בתוך קובץ
ה-dimens.xml אם אנחנו מקליקים על זה אז אוטומטית אנדרואיד סטודיו פותחת לנו את ההגדרה ואומרת לנו ה-16dp שכתוב זה לא באמת הערך שכתוב ב-xml זה בעצם ההגדרה שנמצאת בתוך קובץ ה-dimens.xml מה שכתוב כאן בתוך קובץ ה-layout זה הפניה לערך שמוגדר ב-dimens.xml כאן אנחנו רואים שיש פה הגדרה שהערך נמצא
בקובץ הריסורס והוא בעצם תגית שנקראת דיימנט ויש לה איזשהו מפתח ייחודי שלדוגמה במקרה הזה נקרא אקטיביטי ורטיקל מרג'ין. בואו נראה מה קיים בתוך קובץ הדיימנט.
אם אני נכנס אליו אז אני בעסיקלי רואה את שתי ההגדרות שמקודם ראינו שמה. אני רואה כאן תגית דיימנט שהשם שלה זה אקטיביטי הוריזונטל מרג'ין והערך שלה זה 16 dp. תגיד דיימן שהניים שלה זה אקטיביטי ורטיקל מרג'ין וההגדרה שלה זה 16 dp גם כן.
אנחנו כמובן יכולים לשנות את זה ולשלוט על זה וזה אוטומטית מגיע לאדינגים האלה שמשתמשים בהגדרות ונפתח אותם. אנחנו יכולים לתת הגדרה משלנו.
בוא נניח שאנחנו בונים כאן איזשהו לחצן. אנחנו יכולים להגדיר את הרוחב שלו במקום שיהיה match parent או גובה ראפ קונטנט שימו לב שהוא תופס לי מיידית את כל הרוחב בואו נגדיר פה איזשהו טקסט בטון אנחנו יכולים להגדיר את ההגדרה שלו בתוך קובץ הדימנס בואו נעשה את זה בואו ניגש לכאן ופשוט נבנה תגית חדשה וניתן לה
בטון read ונגדיר 150 dp כעת אם אנחנו רוצים שההגדרה הזאת תחול על הלחצן אנחנו חוזרים לקובץ הלייאוט, הולכים ללייאוט וויד ומגדירים שטרודל דיימנט ובוחרים מתוך הרשימה הזאת את ההגדרה הרצויה ואוטומטית אנחנו יכולים לראות שהלחצן קיבל את הרוחב.
אנחנו יכולים להכניס הגדרה לקובץ הדיימנצ'נס בצורה הפוכה. זה אומר להגדיר כאן כמה אנחנו רוצים, בואו נגדיר שהגובה יהיה 70 dp, לעמוד עם הסמן איפשהו על ה-70 dp להמתין שיש את המנורה בצד שמאל ואז ללחוץ על Alt Enter ואז המערכת שואלת אותנו אם אנחנו רוצים To Extract Dimension Resource כלומר להגדיר את ההגדרה הזאת בקובץ על דימנס בואו נגיד כן ונגדיר כאן את ה-Name שאנחנו רוצים לתת
לדוגמה Button Height בואו נבצע אוקיי ואנחנו רואים שיש פה תרודל דיימנט בטן הייט אבל מה שעשינו כרגע שתל את ההגדרה הזאת בתוך קובץ הדיימנצ'נס כל לחצן אחר שאנחנו רוצים להגדיר בואו רגע נשכפל את הלחצן הזה לכאן ולכאן נגדיר עוד שני לחצנים אנחנו יכולים בבת אחת להפנות את כל
הרוחב שלהם למה שקיים בקובץ הדיימנט ואם יום בהיר אחד אנחנו באים ואומרים רגע אני בעצם רוצה 200 רוחב ו-75 גובה זה אוטומטית מגיע לכל הלחצנים בבת אחת בלי שיש לנו את הצורך ללכת ולשכפל את ההגדרה הזאתי שוב ושוב.
בתוך קובץ ה-Dimends אנחנו לא חייבים לתת רק הגדרות של dp. בואו ניקח ונגדיר תגיד חדשה עבור ה-Text Size ועבור תגיד זאת ניתן לדוגמה 30 SP Scale Independent.
פיקסלים ואנחנו יכולים עכשיו לגשת ולתת ללחצנים שלנו טקסט סייז ולחפש אותו הנה אנחנו רואים אותו פה למטה בקובץ הדיימנט טקסט סייז ואוטומטית יש לנו עכשיו גודל מסוים שאנחנו יכולים לתת לכל הטקסטים באפליקציה יום בהיר אחד נרצה לשנות את זה ובזמן הפיתוח נחליט רגע זה יותר מדי גדול לנו בואו נחליט על 25 בבת אחת כולם מקבלים את ההגדרה החדשה.
עכשיו, כשדיברנו מקודם על היתרונות, אמרנו שאחד מהיתרונות זה אפשרות להגדיר הגדרות שונות עבור מכשירים שונים, לדוגמה עבור גדלים שונים.
בואו נראה איך זה מתבצע. אנחנו רואים שבעצם יש לנו שני קבצים שנקראים diamonds.xml, ואנחנו רואים שאחד מהם מוגדר כדפולט, אין לו שום דבר מעבר ל-diamonds.xml, השני נקרא demand.xml אבל אנחנו רואים בסוגריים פה w820dp זה אומר שהקובץ הזה מכיל הגדרות שנכנסות לתוקף רק עבור מכשירים שהם גדולים יותר מרוחב w
זה width רוחב של 820dp אם אנחנו נכנסים לקובץ הזה אנחנו רואים שיש פה סך הכל הגדרה אחת זה בעצם שני קבצים שונים אנחנו יכולים לגשת לקובץ הדיפולט בלחיצה על האזור הזה או בלחיצה על הקובץ הדיפולט עצמו ולהעתיק את התוכן control c לגשת לקובץ השני ולהדביק את התוכן במקום מה שיש לנו פה או אפילו בואו נדביק את זה מתחת
ונראה שבעצם הגדירו לנו כבר activity horizontal margin זה 64 dp כאשר בקובץ שלנו זה היה 16 dp. זה אומר שעבור מכשירים בעלי רוחב מעל 820 dp יש הגדרות אחרות שאוטומטית אנדרואיד ייקח ויכניס לתוקף בלי שאנחנו צריכים לכתוב קוד עבור זה.
כל מה שאנחנו צריכים להגדיר זה רק שהקובץ הזה יכיל את ההגדרות האחרות. אז לדוגמה אנחנו רואים שיש פה 64 dp בואו ניקח ונגדיר שזה גם נמצא כאן ואז אנחנו יכולים להיפטר מההגדרה הכפולה הזאת ונניח לחצנים יהיו קצת יותר גדולים, 230 ובוא נניח שהגובה שלהם יהיה 80 והגודל של הטקסט יהיה 30. זאת אומרת
אנחנו יכולים להעתיק בדיוק את ההגדרות הקודמות ולתת הגדרות אחרות עבור