Persian Software Engineers – Telegram
Persian Software Engineers
1.9K subscribers
353 photos
14 videos
84 files
303 links
تجربیات شخصی یک مهندس نرم افزار در آلمان‌.
کانال یوتیوب:
https://www.youtube.com/@Dev_Germany
ادمین کانال :
@mohamad_germany
Download Telegram
وقتی یک تگ دارید که داخلش شامل ابزارهای دیگر هم میشود به این صورت نوشته میشود. مثل این layout که اینطوری نوشته شده و داخلش یک TextView داریم یک Button.
روی انواع Layout ها هم کلی کار خواهیم داشت.
حالا میخوام با یه سری از این صفت ها که مهمتر هستن آشنا شویم...
واضح هست که مهمترین ابزارهایی که خیلی استفاده میشوند همین TextView و Button هستند. پس باید یک سری ویژگی های کلیدیشان رو بدانیم.
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Agree?"
android:textColor="#ff000000"/>
صفت هایش به ترتیب برای عرض خود محل نوشتن، ارتفاعش، متنش و رنگ متنش هست
به مقدار دهی صفت ها جلسه بعد میپردازیم فقط الان آشنا شوید
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="OK"
android:id="@+id/button" android:layout_gravity="center_horizontal”/>
برای دکمه هم به ترتیب:
عرضش، ارتفاعش،متنش، آیدی(توضیح میدم) و محل قرارگیری در layout که اگر دقت کنید برای من وسط قرار دارد که با این هم بعدها کار داریم.
مهمترین چیزی که اینجا بود ID بود. به چه درد میخورد؟ گفتم که Layout در اندروید به یک Activity وصل هست. حالا در اکتیویتی چطوری مشخص کنیم اگر دکمه OK زده شد چه اتفاقی بیفتد؟ از کجا این را بفهمونیم؟ از روی ID. بهرحال نمیتوانیم بگوییم دکمه ای که زده شد و برنامه بفهمد منظور ما چه دکمه ای هست. باید یک اسم به آن بدهیم. و مثلا بگویم دکمه ای که اسمش هست btn وقتی زده شد به من پیام نشان بده. اینجا بصورت خودکار id را گذاشته button
خب عالیه حالا کافی هست برویم و به برنامه بفهمونیم میخواهم بهم پیام نشان بدهی. بریم سراغ اکتیویتی این layout. گفتم تنظیم کردن اتفاقهایی که در layout میفتد از طریق activity انجام میشود. از سمت چپ پوشه src را باز کنید و حالا داخل com.example.First بشوید و اکتیویتی را باز کنید
بالارو ببینید. نوشته class MyActivity . همانطور که گفتم اکتیویتی ها کلاس هستند. به بقیش کار نداشته باشید بیایم داخل oncreate که جلسه قبل توضیحشو دادم. حالا میخواهیم کد مربوط به نمایش پیام را بزنیم داخل oncreate شروع کنید به نوشتن. یعنی بین } , { مربوط به Oncreate
و البته باید بگویم که همانطور که دیدید مثل کلاس انسان که رویداده آمدن را برایش تعریف کردم، اکتیویتی هم کلاسی هست که یکی از رویدادهاش Oncreate هست. به مرور با بقیه رویدادهایش هم آشنا میشویم.
حالا این کدی که نوشتم را نگاه کنید. میخواهم نشان دهم چه معنایی میدهد البته در یکی دو جلسه آینده که عمیق تر به بحثهای عمیق تر پرداختیم بیشتر متوجه میشوید. برای اینکه تغییرات یک دکمه را بررسی کنیم باید اول در کد معرفیش کنیم. برای معرفی کردنش هم باید بهش بگوییم منظورمان دکمه ای هست که آیدیش x هست. این دقیقا میشود جمله من:
Button btn = findViewById(R.id.button);
اما کدی که نوشتم یک بخش دیگرم دارد. (Button)
این findViewById یک تابع هست. که ورودی بهش یه آیدی میدهیم. و میرود و برایمان پیدایش میکند. (فعلا به R کار نداشته باشید).
اما خروجیش از جنس Button نیست بلکه از جنس View هست. View را بیشتر توضیح میدهم اما بدانید که همه ابزارهای ما در صفحه از جنس view هستند. پس تابع findViewById نمیداند چه چیزی پیدا کرده. فقط یک آیدی گرفته و پیدا کردتش برای ما. برای اینکه این view را ذخیره کنیم و ازش استفاده کنیم (که همان دکمه خودمان هست) باید تبدیلش کنیم به Button.
(Button) = Cast to Button
یعنی تبدیل کردن به باتن با کد بالا صورت میگیرد.
حالا کله کار صورت گرفته را در یک دکمه که خودم اسمش رو دادم btn ذخیره میکنیم
و کد من شد:
Button btn = (Button) findViewById(R.id.button);
حالا بهش بگوییم کلیک شدی میخواهیم یک کاری انجام بدهی.
اینطور اتفاقات مثل کلیک شدن برای ابزار ها به عنوان Listener بیان میشوند. یعنی انگار سیستم عامل منتظر هست تا ببیند کسی کلیک شد(Listen) و حالا وقتی این اتفاق افتاد باید یک کاری را برای این اتفاق set کند.
بزنید:
btn.setO
کد نصفه است؟ خب خوده intellij کاملش میکند. خاصیت کامل کردن اتوماتیک خیلی قوی دارد. همین کد بالا را که بنویسید براتون یک لیست میاد که یک گزینش هست
setOnClickListener
اون را برید رویش و enter بزنید و خودش مینویسد
btn.setOnClickListener();
خب تا الان یه رویداد تعریف کردیم برای موجودیت دکمه (همون مثال انسان و آمدن را یاد بیارید)
حالا بعنوان ورودی باید بهش این را بدهید:
new View.OnClickListener()
اما نشینید این را بنویسید. کافی هست داخل پرانتزه بنویسید new On
حواستان باشه on با O بزرگه و intellij به حروف بزرگو کوچیک حساسه هست. کوچیک بنویسید نمیارتش. در لیستی که باز میکند انتخاب کنید:
OnClickListener
و enter بزنید. میبینید که مینویسد:
حالا کافی هست در آن وسط درخواست نمایش پیام بدهید که کدش بصورت زیر هست. ببینید تا توضیح بدم:
Toast.makeText(getApplicationContext(),"salam",Toast.LENGTH_LONG).show();
خب دوباره Toast یه موجوده هست! ازش میخواهم که یک متن را بسازد. یعنی makeText که یک تابع است که سه تا ورودی میگیرد. توجه کنید ورودیهای توابع با علامت کاما جدا میشودند:
ورودی اول. میخواهم بگوبم کجا نشان بده این پیام را. خب مسلم هست در همین برنامه. پس از
getApplicationContext()
استفاده میکنم.
ورودی دوم: چه چیزی را نشان کاربر بدهیم؟ مثلا من زدم "salam"
ورودی آخر... چقدر پیام روی صفحه باشد؟ که دو نوعه
LENGTH_LONG = tulani
LENGTH_SHORT = kutah
و در آخر این پیام ساخته شده را ازش میخواهم نشان بدهد یعنی
.show()
تمام! حالا همان مثلث سبزه اون بالا را بزنید. از برنامه اجرا بگیرید تو گوشیتان... این الان گوشی من هست: