دکمهها
تماشای برخط [لینک مستقیم] فیلم آموزشی «دکمه»
زیر نویس انگلیسی [English Subtitle]
دریافت نسخهی pdf این آموزش [325 کیلوبایت]
تا اینجا هرجا خواستیم از دکمه استفاده کنیم، از همون نوع سنتی و سادهاش استفاده کردیم، حالا میخوایم یاد بگیریم چطور از انواع دیگهی دکمه استفاده کنیم.
۱. اول یه پروژهی اندروید بسازید. (تصویر متحرک ساختن پروژه) بعد میتونیم در فایل activity_main.xml (در res->layout) از قسمت Palette انواع مختلف دکمهها رو امتحان کنیم، الان اونی که روش نوشته off رو بکشید و روی صفحه بندازید.
، این نوع دکمه برای خاموش روشن کردن تنظیمات دلخواه به کار می ره و این طوریه
شما میتونید به راحتی ظاهرش رو تغییر بدید و مناسب برنامهتون بکنید و میبینید که چقدر کار رو ساده کرده.
از انواع دیگهی دکمه، دکمهی رادیویی (radio) و دکمهی علامتصحیح (checkbox) هستند که میتونید از تو palette وارد صفحهتون بکنید.
۲.وقتشه یاد بگیریم چطور به دکمهها فرمان بدیم و برنامهریزی کنیم. تو آموزشهای قبلی یاد گرفته بودید که برای کنترل یک دکمه میتونید تابع مربوط به کلیک شدنشو تو خودش درست کنید، اما اون کار برای وقتایی مناسبه که یکی دوتا دکمه کلاً داشته باشید، اگر بخواید تعداد دکمههای بیشتری استفاده کنید بهتره از روش دیگهای استفاده کنید که الان توضیح میدم.
فایل MainActivity.java (در پوشه src) رو باز کنید، برای بهینه شدن استفاده از دکمهها میتونیم به کلاس فعالیت (activity) بگیم که واسط گوشکنندهبهکلیک (onClickListener) رو پیادهسازی بکنه. یعنی کد شروع کلاس این طوری بشه:
public class MainActivity extends Activity implements OnClickListener {
با این کار ما میتونیم مستقیما تو کلاسمون به رخدادها واکنش نشون بدیم.
۳.وقتی قسمت implements رو به کلاسمون اضافه میکنیم، زیر OnClickListener خط قرمز میکشه، روش که ctrl+1 رو بزنیم یه گزینه میاره که (import 'OnClickListener' (android.view.view که وقتی این گزینه رو انتخاب میکنیم اونوقت زیر MainActivity خط قرمز میکشه، با فشردن ctrl+1 روی اون هم گزینه add unimplemented methods رو بزنید تا تابع مربوط به این پیادهسازی رو بسازه.
تابع جدیدی که ساخته میشه اسمش onClick هست و تمام دکمههایی که در این فعالیت قرار دارند هر وقت که فشرده بشن، میان و این تابع رو اجرا میکنن، این طوری ما فقط یک تابع مدیریت رخداد کلیکرویدکمه میسازیم. توی این تابع باید بفهمیم کدوم دکمه کلیک شده که کار مربوط به همون دکمه انجام بشه.
۴.پس کاری که ما الان قراره انجام بدیم اینه که برای هر کدوم از دکمهها باید گوشکنندهبهکلیک (onClickListener) رو سوار کنیم. و داخل تابعش به جای اینکه مثل قبل یه گوشکنندهبهکلیک رو توش نمونهگیری کنیم، می نویسیم this، یعنی همین فعالیتی که توش قرار داریم. تو این فعالیت هم فقط یه تابع onClick وجود داره که وقتی دکمه dokme رو بزنیم اونو اجرا میکنه.
Button dokme = (Button) findViewById (R.id.toggleButton1); dokme.setOnClickListener(this);
۵.همین کارو برای بقیهی دکمهها باید انجام بدیم، خوبی این کار اینه که هی کلاس اضافه برای هر دکمه جداگانه تعریف نمیشه و کارآمدی و سرعت برنامه به میزان قابل توجهی بالا میره.
توی تابع onClick ما باید اول شناسه (id) اون شیای که این تابع رو فراخوانی کرده بدست بیاریم تا بتونیم با توجه به اون شناسه، کار مربوط به همون دکمه رو انجام بدیم. تابع گرفتن اون شناسه اینه : ()arg0.getId
میتونیم با گذاشتن عبارات شرطی مقدار ()arg0.getId رو بررسی کنیم. خوب مثلا بیاید برای اون دکمهی خاموش روشنی که گذاشتیم یه عبارت شرطی بذاریم که اگه کلیک شد، تو LogCat بنویسه !dokmeye khamoosh roshan click shod
@Override public void onClick(View arg0) { if (arg0.getId() == R.id.toggleButton1) { Log.d("AC","Dokmeye khamoosh roshan click shod!"); } }
بعد از این کار وقتی شبیهساز رو اجرا میکنیم و روی دکمه خاموش روشن کلیک میکنیم، پیغامی که تنظیم کرده بودیم توی LogCat نمایش داده میشه.
پس یه روش جدید یادگرفتیم که فقط با یک تابع گوشکنندهبهکلیک توابعمون رو مدیریت کنیم.
۶.یه نوع دکمهی دیگه هم داریم به اسم دکمهیعکسدار (ImageButton) که در palette در زیرشاخه Images & Media قرار داره که کاملا مشخصه که برای درست کردن دکمهی عکسدار بکار میره. این نوع دکمه رو وقتی میکشید روی صفحه و رها میکنید، ازتون میخواد که منبع عکسش رو انتخاب کنید که یا میتونید از عکسهای سیستمی اندروید استفاده کنید یا عکسهای دلخواه خودتون.
خدا قوت، ممنون