c# תביבסב דיאורדנאל תויצקילפא חותיפ xamarinonclick תייצקנופ...

Post on 12-Aug-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

c# פיתוח אפליקציות לאנדרואיד בסביבת xamarin

: c# xamarin מהו

: c# xamarin פתיחת תכנית ראשונה ב

Visual Studio ראשית, נלמד איך לפתוח תוכנית חדשה לאחר ההתקנה הראשונית של

Copyright © 2019 appSchool. Powered by appSchool.co.il

Copyright © 2019 appSchool. Powered by appSchool.co.il

מבנה תכנית בזמרין :

כל תכנית שנבנה בזמרין תיפתח בצורה כזו:

כך יראה המסך כאשר נפתח תוכנית חדשה.

למטה במסך ניתן לראות את הoutput של התוכנית. במקרה של באג בקוד ניתן לבדוק בעזרת תיבה זו היכן כשל הקוד וקרסה התוכנית.

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

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

ניתן לראות שבתחילת הקוד ממומשים הקבועים שבתיקיית values, כגון שם האפליקציה.style ו

נוכל לראות שימוש בתיקיה זו בתחילת כל activity שנפתח.

Copyright © 2019 appSchool. Powered by appSchool.co.il

Activity הוא דף לאפליקציה שלנו. בכל פעם שאנו מגיעים למסך חדש באפליקציה, אנו מגיעים בעצם ל Activity אחר. כל Activity בנוי מקובץ C# וקובץ XML שקשורים אחד

לשני. קבצי ה XML מופיעים תחת תיקיית layout שבתיקיית Resources ובהם נערוך את

.Activityהגרפיקה של ה קבצי ה C# נקראים גם Class ובהם נצהיר על משתנים וקבועים ובהם נערוך את הקוד

שמאחורי התוכנית..AppCompatActivity שנקרא classיורש מ Activity של class כל

הפונקציה הראשונה שתיקרא בפתיחת כל Activity היא OnCreate, שם מוגדר בעזרת.Activity של ה layout שיהיה ה XML קובץ ה SetContentView פונקציה שנקראת

Copyright © 2019 appSchool. Powered by appSchool.co.il

איך מריצים את האפליקציה? בשביל להריץ את האפליקציה נשתמש באחת משתי הדרכים הבאות - בעזרת אימולטור

או בעזרת הטלפון שלנו.

נוכל לחבר את הטלפון למחשב ולהריץ את האפליקציה עליו (יותר מהיר, עדיף למחשבים איטיים), או שנוכל להריץ על אימולטור במחשב שלנו.

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

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

(קיים אימולטור שמגיע עם ההתקנה של VisualStudio, אך הוא חזק ולא ירוץ על הרבה מחשבים)

Copyright © 2019 appSchool. Powered by appSchool.co.il

Copyright © 2019 appSchool. Powered by appSchool.co.il

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

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

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

נוכל לנקות את האפליקציה בדרך הבאה: (ניתן ללחוץ על clean ואם עדיין לא עובד - גם rebuild, או להפך)

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

Copyright © 2019 appSchool. Powered by appSchool.co.il

פרק 1

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

בניית אפליקציה בזמרין תתחלק ל 4 שלבים :

layout שלב 1 : עיצוב #cשלב 2 : הצהרה על תכונות ב

XMLשלב 3 : קבלת הפניה לתכונות שב שלב 4 : מימוש events (אובייקטים כגון כפתורים וטקסטים)

layout שלב 1 - עיצוב השלב הראשון של האפליקציה שלנו הוא החלק הגרפי.

בשלב זה נלמד איך לעצב את האפליקציה שלנו בדרך שנרצה. נרצה שהאפליקציה שלנו בפרק זה תראה כך:

Copyright © 2019 appSchool. Powered by appSchool.co.il

נעשה זאת בעזרת לחיצה בספריית התיקיות על

.Resources -> layout -> activity_main.axml אנו נלמד לעבוד בעזרת סידור מסך שנקרא LinearLayout, לכן שנו את המילה

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

משמאל לימין - בצורה שאנו נקבע..horizontal סידור משמאל לימין נקרא

.vertical אנו נשתמש לבניית האפליקציה שלנו בסידור מלמעלה למטה שנקרא :LinearLayout במילה RelativeLayout כך יראה הקוד שלנו לאחר החלפת המילה

Copyright © 2019 appSchool. Powered by appSchool.co.il

. <LinearLayout/> בכל פעם שנוסיף אובייקט למסך נוסיף אותו לפני השורה

לדוגמה, במידה ונרצה להוסיף טקסט למסך נרשום TextView> ונעצב אותו.

CTRL + ולחיצה על android נוכל להוסיף לאובייקט שלנו תכונות בעזרת כתיבת המילה SPACE. אז יופיעו לנו רשימת התכונות של האובייקט.

כשמוסיפים תכונות לאובייקט חשוב לשים לב שאנו כותבים זאת לפני ה </.

Copyright © 2019 appSchool. Powered by appSchool.co.il

Copyright © 2019 appSchool. Powered by appSchool.co.il

ניצור גם שני כפתורים:

הוספת תמונה לאפליקציה

Copyright © 2019 appSchool. Powered by appSchool.co.il

בשביל להעלות תמונה לאפליקציה נצור תיקיה בשם drawable (חובה בשם הזה!) תחת

.resources תיקיית נעשה העתק לתמונה. לאחר מכן נלחץ קליק ימני על התיקייה drawable והדבק.

android:background = "@drawable/picName" בשביל להשתמש בתמונה נרשום

(XMLכמובן, ב) .בתוך האובייקט שאת הרקע שלנו נרצה לשנות

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

Copyright © 2019 appSchool. Powered by appSchool.co.il

:C# (class)שלב 2 - הצהרה על תכונות בקובץ ה ניצור אובייקטים ב C# בהאתם לאובייקטים שיצרנו ב layout, ולאחר מכן ניתן להם

הפניה לאובייקטים שיצרנו ב XML (רפרנס) בשביל שנוכל להשתלט עליהם.

layoutעל מנת לקבל הפניה לאובייקטים ב ,MainActivity הכרזה על אובייקטים בקובץ

Copyright © 2019 appSchool. Powered by appSchool.co.il

XML שלב 3 - קבלת הפניה לתכונות שב

בשלב זה נקשר את האובייקטים שיצרנו בשלב 2 בקובץ ה C# עם האובייקטים

XML שיצרנו בשלב 1 ב

:event שלב 4 - האזנה באמצעות

בשלב זה נראה איך לממש את הפעולות שנרצה לבצע על הכפתורים בעזרת האזנה. ראשית, מתחת לשורות שהבאנו לכפתורים בOnCreate נרשום לכפתורים אפשרות

האזנה.

נרשום את השורה btnName.Click += ונלחץ פעמיים TAB במקלדת. בעקבות זאת תושלם השורה באותה צורה שאנו רואים בקוד למטה.

במקביל ייפתח חלון ובו נלחץ על apply. לאחר שנלחץ כך תיבנה פונקציה שמאזינה לכפתור.

Copyright © 2019 appSchool. Powered by appSchool.co.il

כלומר בכל פעם שנלחץ על הכפתור יקרה מה שנגדיר שיקרה בתוך הכפתור.

במקרה שלנו נקשר את btnPlus ואת btnMinus לפונקציות שמאזינות להן, ונגדיר שבכל פעם שילחצו עליהן יגדל/ יקטן ה counter בהתאם, ויעודכן הTextView בהתאם.

private void BtnPlus_Click(object sender, System.EventArgs e) { counter++; display.Text = "your total points are " + counter; } private void BtnMinus_Click(object sender, System.EventArgs e) { counter--; display.Text = "your total points are" + counter; }

Copyright © 2019 appSchool. Powered by appSchool.co.il

הריצו את האפליקציה :)

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

:Listener האזנה ללחיצה על כפתור באמצעות

במקום שורות הקוד שרשמנו בשלב 4, נרשום הפעם את שורות הקוד שבורוד.

Copyright © 2019 appSchool. Powered by appSchool.co.il

OnClick כשאנחנו רושמים שורות אלה אנחנו אומרים לתוכנית שאנו ממשים פונקציית שנמצאת במחלקה שבה אנחנו נמצאים (this), לכן נממש את הממשק

Android.Views.View.IOnClickListener, כמו שמופיע באדום למטה. יראה לנו שגיאה בקוד כי לא מימשנו את הפונקציה OnClick שבממשק, לכן נלחץ על

הנורה הצהובה שהופיעה מצד שמאל בשורת הקוד שבה מימשנו את הממשק, ונלחץ על.implement interface

namespace Lesson1Ex1Introduction { [Activity(Label = "Lesson1Ex1Introduction", MainLauncher = true, Icon = "@mipmap/icon")] public class MainActivity : AppCompatActivityActivity, Android.Views.View.IOnClickListener { Button btnPlus; Button btnMinus; TextView tv; int counter= 0; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); // Get our button from the layout resource, // and attach an event to it btnPlus= FindViewById<Button>(Resource.Id.btnPlus); btnMinus= FindViewById<Button>(Resource.Id.btnMinus);

Copyright © 2019 appSchool. Powered by appSchool.co.il

tv= FindViewById<TextView>(Resource.Id.tvDisplay);

}

Copyright © 2019 appSchool. Powered by appSchool.co.il

זהו זה, נריץ עכשיו את האפליקציה.

מצורפים כל שורות הקוד:

C#: using Android.App; using Android.Widget; using Android.OS;

namespace Lesson1Ex1Introduction { [Activity(Label = "Lesson1Ex1Introduction", MainLauncher = true, Icon = "@mipmap/icon")] public class MainActivity : Activity,Android.Views.View.IOnClickListener { Button btnPlus; Button btnMinus; TextView tv; int counter= 0; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); // Get our button from the layout resource, // and attach an event to it btnPlus= FindViewById<Button>(Resource.Id.btnPlus); btnMinus= FindViewById<Button>(Resource.Id.btnMinus); tv= FindViewById<TextView>(Resource.Id.tvDisplay);

btnPlus.SetOnClickListener(this); btnMinus..SetOnClickListener(this); }

private void OnClick(View v) { if(v==btnPlus)

Copyright © 2019 appSchool. Powered by appSchool.co.il

{ counter++; display.Text = "your total points are points" + counter; } else if(v==btnMinus) { counter--; display.Text = "your total points are points" + counter; } }

}

}

XML: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@drawable/back1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="you have 0 points" android:textSize="30dp" android:layout_gravity="center" android:gravity="center" android:id="@+id/txtdisplay" /> <Button android:layout_width="250dp" android:layout_height="wrap_content" android:text="add one point" android:textSize="15dp" android:layout_gravity="center" android:id="@+id/btnplus" /> <Button android:layout_width="250dp" android:layout_height="wrap_content" android:text="minus one point"

Copyright © 2019 appSchool. Powered by appSchool.co.il

android:textSize="15dp" android:layout_gravity="center" android:id="@+id/btnminus" />

</LinearLayout>

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

עם טקסט.

נעבוד לפי השלבים שלמדנו בדוגמה הראשונה:

layout שלב 1 : עיצוב #cשלב 2 : הצהרה על תכונות ב

XMLשלב 3 : קבלת הפניה לתכונות שב שלב 4 : מימוש events (אובייקטים כגון כפתורים וטקסטים)

layout שלב 1 - עיצוב האפליקציה שנבנה בדוגמה זו תראה כך:

Copyright © 2019 appSchool. Powered by appSchool.co.il

.LinearLayout ל RelativeLayoutונחליף את ה XML ראשית נפתח את קובץ ה

.vertical orientation נוסיף גם לאחר מכן נוסיף אובייקט בשם EditText למסך.

ה EditText הוא אובייקט שהמשתמש יכול לרשום בו פרטים.

אנו נבנה את ה EditText שלנו כך:

Copyright © 2019 appSchool. Powered by appSchool.co.il

כעת ניצור עוד EditText שבו המשתמש ירשום את השם משפחה. ניצור גם button שעליו ילחץ המשתמש כדי שהשם שרשם יופיע על המסך.

לבסוף ניצור TextView שיציג על המסך את השם שיכתוב המשתמש.

שימו לב! סדר כתיבת האובייקטים במסך הXML משפיע על סדר הופעתם על המסך

הקוד הסופי הסופי שלנו בקובץ הXML ייראה כך: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

Copyright © 2019 appSchool. Powered by appSchool.co.il

android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/back1" <- הוספנו כאן תמונה לרקע > <EditText android:layout_width="200dp" android:layout_height="wrap_content" android:id="@+id/etFname" android:hint="First Name" android:layout_gravity="center" android:textSize="30sp" /> <EditText android:layout_width="200dp" android:layout_height="wrap_content" android:id="@+id/etLname" android:layout_gravity="center" android:hint="Last Name" android:textSize="30sp" android:layout_marginTop="10dp" קביעת מרחק האובייקט מהאובייקט שמעל /> <Button android:layout_width="200dp" android:layout_height="wrap_content" android:text="Save" android:layout_gravity="center" android:id="@+id/btnSave"

Copyright © 2019 appSchool. Powered by appSchool.co.il

android:textSize="30sp" android:layout_marginTop="10dp" קביעת מרחק האובייקט מהאובייקט שמעל /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tvDisplay" android:text="" android:textSize="30sp" ></TextView> </LinearLayout>

:C# (class)שלב 2 - הצהרה על תכונות בקובץ ה כעת נצהיר בקובץ הC# על המשתנים שנרצה שישלטו לנו על האובייקטים מאחורי

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

השימוש באפליקציה:

Copyright © 2019 appSchool. Powered by appSchool.co.il

XML שלב 3 - קבלת הפניה לתכונות שב :#C לאובייקטים שיצרנו בשלב 2 בקובץ XMLנבצע הפניה לאובייקטים שיצרנו בשלב 1 ב

:SetOnClickListener שלב 4 - האזנה באמצעות כעת הגיע החלק שבו אנו כותבים את הקוד שיפעל בזמן שנשתמש באפליקציה, הקוד

שיחיה את הlayout שעיצבנו.

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

המסך! נכתוב את שורה זו בתוך פונקציית הonCreate אחרי שהפנינו את הbutton לאחד

XMLשיצרנו בקובץ ה

Copyright © 2019 appSchool. Powered by appSchool.co.il

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

המסך בתוך תיבת הטקסט. נעשה זאת כך:

הקוד הסופי שלנו לדוגמה 2 ייראה כך:

XML:

Copyright © 2019 appSchool. Powered by appSchool.co.il

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/back1" <- הוספנו כאן תמונה לרקע > <EditText android:layout_width="200dp" android:layout_height="wrap_content" android:id="@+id/etFname" android:hint="First Name" android:layout_gravity="center" android:textSize="30sp" /> <EditText android:layout_width="200dp" android:layout_height="wrap_content" android:id="@+id/etLname" android:layout_gravity="center" android:hint="Last Name" android:textSize="30sp" android:layout_marginTop="10dp" קביעת מרחק האובייקט מהאובייקט שמעל /> <Button android:layout_width="200dp"

Copyright © 2019 appSchool. Powered by appSchool.co.il

android:layout_height="wrap_content" android:text="Save" android:layout_gravity="center" android:id="@+id/btnSave" android:textSize="30sp" android:layout_marginTop="10dp" קביעת מרחק האובייקט מהאובייקט שמעל /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tvDisplay" android:text="" android:textSize="30sp" ></TextView> </LinearLayout> C#: using Android.App; using Android.OS; using Android.Support.V7.App; using Android.Runtime; using Android.Widget; using Android.Views; namespace App1 { [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]

Copyright © 2019 appSchool. Powered by appSchool.co.il

public class MainActivity : AppCompatActivity, Android.Views.View.IOnClickListener { Button btnSave; EditText etFName, etLName; TextView tvDisplay; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.activity_main); etFName = FindViewById<EditText>(Resource.Id.etFName); etLName = FindViewById<EditText>(Resource.Id.etLName); btnSave = FindViewById<Button>(Resource.Id.btnSave); tvDisplay = FindViewById<TextView>(Resource.Id.tvDisplay); btnSave.SetOnClickListener(this); } public void OnClick(View v) { if(etFName.Text.Length > 0 && etLName.Text.Length) { tvDisplay.Text = etFName.Text + " " + etLName.Text; } } }

Copyright © 2019 appSchool. Powered by appSchool.co.il

} .Context כעת, לאחר שסיימנו את שתי הדוגמאות הראשונות, נלמד

אז מהו Context בעצם?

Context הוא בעצם הפניה למי שיצר את המשתנה. הוא יכול להיות הפניה לממשק על או מחלקת על שיצרה את המשתנה.

אנו יודעים שכל אובייקט יורש מObject, וב visual studio כל אובייקט יורש גם.Object שיורשת מ ,Context ממחלקת העל

?Objectאז למה בעצם לא להשתמש פשוט ב

כיוון שלמחלקת Context יש יותר פונקציות ותכונות שימושיות, וכמובן, לפי חוקי הירושה שאנו מכירים, מופע של מחלקת הבת יכול גם להשתמש בפונקציות ובתכונות של מחלקת

האב.?Contextמתי נשתמש ב

כאשר ניצור מחלקה, (כלומר קובץ C# שלא קשור לActivity) ונרצה להשתמש באובייקט כללי.

לדוגמה:TextView ובה פונקציה שמשנה את הטקסט של אובייקט Game נוכל ליצור מחלקה

.Activityשל ה #Cשנמצא בקובץ ה

איך נעשה זאת? ניעזר בקוד הבא:

Copyright © 2019 appSchool. Powered by appSchool.co.il

דוגמה 3:

בדוגמה זו נלמד איך להאזין ללחיצה על הכפתור שבנינו בדוגמה 1 בעזרת מחלקה.(Activityמחוץ ל) חיצונית

נעשה זאת לפי השלבים שלמדנו:

שלב 1 -

נשאיר את הlayout זהה לזה שבדוגמה הראשונה (אפשר גם לבנות באותו פרויקט) שלב 2 -

נצהיר על אותם המשתנים כבדוגמה הראשונה. שלב 3 -

נתן הפניה באותה הצורה כבדוגמה 1.

עד כה האפליקציה שלנו זהה לאפליקציה הראשונה שבנינו.

שלב 4 - בשלב זה ניתן לתוכנית להאזין ללחיצה על כפתור במחלקה אחרת.

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

Copyright © 2019 appSchool. Powered by appSchool.co.il

ניצור מחלקה בשם Game שיורשת מ Button וניתן לה מספר תכונות:

namespace Lesson1Ex1Introduction{

Copyright © 2019 appSchool. Powered by appSchool.co.il

public class Game : Button { TextView tvDisplay; int point = 0; String message;

:Constructor ו public Game(int point, String message, TextView tvDisplay,Context context):base(context) { this.point = point; this.message = message; this.tvDisplay = tvDisplay; }

:settersו getters ניתן גם public int getPoint() { return point; } public void setPoint(int point) { this.point = point; } public String getMessage() { return message; } public void setMessage(String message)

Copyright © 2019 appSchool. Powered by appSchool.co.il

{ this.message = message; }

:toStringולבסוף אפשר להוסיף גם את פונקציית ה

public String toString() { return "Game{" + "point=" + point + ", message='" + message + '\'' + '}'; }

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

נגדיר שהמחלקה שלנו תממש את הממשק IOnClickListener שבו נמצאת פונקציית:OnClick ההאזנה

public class Game : Button, Android.Views.View.IOnClickListener שימו לב שחובה לרשום לפני כן את הButton, מפני שאחרת זה לא יקלוט את המחלקה

IOnClickListener

public void OnClick(object sender, System.EventArgs e) { Button btn = (Button)sender; if (btn.Id == Resource.Id.btnplus) { point++; }

Copyright © 2019 appSchool. Powered by appSchool.co.il

else if (btn.Id == Resource.Id.btnminus) { point--; } this.message = "You Have " + this.point + " points"; tvDisplay.Text = this.message; } } }

:MainActivityעכשיו נראה איך יראה קובץ ה namespace Lesson1Ex1Introduction { [Activity(Label = "Lesson2Ex1Introduction", MainLauncher = true, Icon = "@mipmap/icon")] public class MainActivity : Activity { Button add; Button minus; TextView tvDisplay; protected override void OnCreate(Bundle savedInstanceState { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main);

Copyright © 2019 appSchool. Powered by appSchool.co.il

// Get our button from the layout resource, // and attach an event to it add = FindViewById<Button>(Resource.Id.btnplus); minus = FindViewById<Button>(Resource.Id.btnminus); tvDisplay = FindViewById<TextView>(Resource.Id.txtdisplay); Game game = new Game(0, "", tvDisplay,this); add.Click += game.OnClick; minus.Click += game.OnClick; } } }

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

כאשר נרצה להשתמש בToast נכתוב אותו בקובץ הC# במקום שבו נרצה שהוא יפעל.

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

Copyright © 2019 appSchool. Powered by appSchool.co.il

סיכום המושגים: לסיום הפרק הראשון נעבור על כל המושגים שלמדנו עד כה:

layout - קבצי UI שמכילים את כל הגרפיקה של האפליקציה

Activity-מסך באפליקציה. בנוי מקובץ XML (החלק הגרפי) וקובץ C# (מאחורי הקלעים)

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

Button ,TextView,ImageView,EditText - אובייקטים שלמדנו איך להשתמש בהם

wrap_content - יחידת מידה לפיה האובייקט תופס את השטח המינימלי שדרוש לתוכן

match_parent -יחידת מידה לפיה האובייקט מתפרש על פני כל השטח הפנוי (לפי

רזולוציית המסך)

dp - יחידת מידה של אורך

sp - יחידת מידה של גודל הטקסט

hint - רמז על תיבת טקסט

(dp /wrap_content /match_parent נקבע לפי) רוחב האובייקט - layout_width

(dp /wrap_content /match_parent נקבע לפי) אורך האובייקט - layout_height

gravity_layout - סדר האובייקט על המסך (שמאל/ מרכז/ ימין)

Copyright © 2019 appSchool. Powered by appSchool.co.il

gravity - סדר התוכן בתוך האובייקט (שמאל/ מרכז/ ימין…)

margin - מרחק האובייקט מאובייקט אחר/ דופן המסך (לפי השוליים)

padding - מרחק התוכן מהשוליים של האובייקט

onClick - פונקציה שמאזינה ללחיצה על כפתור. בשביל לממש אותה צריך לממש את

(Android.Views.View.IOnCliclListener) .המחלקה בה היא נמצאת

Resources - תיקיה בה מופיעים כל קבצי הXML (הקבצים שקשורים לגרפיקה של

האפליקציה)

drawable- תיקיה המכילה את התמונות

values - תיקיה המכילה הגדרות מרכזיות של האפליקציה כגון צבע, שם האפליקציה וכו'

manifest - קובץ בהגדרות של האפליקציה. בו נרשמים המחלקות והקבצים שנוצרים

Copyright © 2019 appSchool. Powered by appSchool.co.il

top related