کامپوننت های سفارشی(Custom Components) در اندروید

در واقع کامپوننت های سفارشی گسترش دهنده ی کلاس کامپوننت های موجود در اندروید هستند که امکان ویرایش ویجت ها را برای ما فراهم می سازند.

اندروید طیف گسترده ای از ویجت های از پیش ساخته شده مثل دکمه ها، برچسب ها، ویرایشگر های متنی، دکمه های رادیویی و مانند این ها را ارائه می دهد که می توانیم در ساخت نرم افزار از از آن ها استفاده کنیم. اما ممکن است وضعیتی پیش بیاید که ویجت های موجود نتوانند نیاز های ما را برآورده کنند. اندروید این اجازه را به ما می دهد تا برای برآورده کردن نیازهای برنامه کامپوننت های سفارشی ایجاد کنیم.

چنانچه می خواهید تنظیماتی جزیی روی یک ویجت یا لایوت اعمال کنید، می توانید خیلی ساده با نمونه سازی از کلاس ویجت یا لایوت به متدهای آن دسترسی پیدا کنید و شکل ظاهری و عملکرد عنصر در صفحه را کنترل نمایید.

Custom components
نمایش سلسله مراتبی کامپوننت های سفارشی

 

 

نمونه سازی با استفاده از کد در داخل کلاس اکتیویتی

ساختن یک کامپوننت سفارشی در داخل کلاس اکتیویتی مشابه ساختن یک نمونه، از روی یک ویجت است، برای مثال با استفاده از قطعه کد زیر می توانیم یک نمونه کامپوننت سفارشی را تعریف کنیم.

قطعه کد بالا را برای درک بهتر روش ساختن یک نمونه کامپوننت سفارشی در داخل کلاس اکتیویتی مورد بررسی قرار دهید.

نمونه سازی با استفاده از فایل های صفحه بندی XML

معمولا از فایل های XML برای نمونه سازی ویجت ها استفاده می شود و بر اساس همان روش می توانیم کامپوننت های سفارشی را با استفاده از فایل صفحه بندی XML مانند آنچه در ادامه توضیح داده شده است ایجاد کنیم.

در رابطه با کدهای زیر فرض می کنیم کدها ی مربوط به کامپوننت سفارشی در یک کلاس جاوا با نام DateView تحت بسته ی com.example.compoundview قرار دارد.

نکته ی قابل توجه در اینجا این است که ما در این کامپوننت سفارشی از تمام ویژگی های تکست ویو بدون هیچ تغییر ی استفاده می کنیم. همچنین به روش مشابه می توانیم از تمام متد ها و رویداد های کامپوننت DateView نیز استفاده کنیم.

مثال

این مثال در چند مرحله ی ساده نحوه ی تعریف یک کامپوننت سفارشی را با استفاده از کدنویسی و چگونگی استفاده از آن در داخل کلاس اکتیویتی را نشان می دهد. برای این منظور مراحل جدول زیر را دنبال کنید.

مرحله توضیحات
۱ با استفاده از اکلیپس یک پروژه ی جدید با نام CustomComponent تحت بسته ی com.example.customcomponent ایجاد کنید. نحوه ی ایجاد پروژه ی جدید در بخش آموزشی ساخت اولین پروژه در اندروید استودیو  توضیح داده شده است.
۲ مانند آنچه در ادامه آمده است ثابت های رشته ای مورد نیاز را در فایل res/values/strings.xml تعریف کنید.
۳ محتوای فایل res/layout/activity_main.xml را مانند آنچه در ادامه آمده است به منظور ایجاد یک کامپوننت نمایش دهنده ی تاریخ تغییر دهید.
۴ فایل java/com.example.customcomponent/DateView.java را به منظور ایجاد یک شی نمایش دهنده ی تاریخ که گسترش دهنده ی کلاس TextView است ایجاد کنید و محتوایی که در ادامه آمده است را به آن منتقل کنید.
۵ برنامه را با استفاده از شبیه ساز اندروید اجرا کنید و نتیجه را مورد بررسی قرار دهید.

در زیر محتوای فایل res/values/strings.xml آورده شده است.

محتوای زیر نیز مربوط به فایل res/layout/activity_main.xml می باشد.

در نهایت محتوای فایل java/com.example.customcomponent/DateView.java در زیر آورده شده است که در آن یک کامپوننت سفارشی را ایجاد کرده ایم.

حال نوبت آن رسیده تا با استفاده از اندروید استودیو برنامه را اجرا کنیم. برای این منظور روی آیکون Run که در نوار ابزار قرار دارد کلیک کنید.اگر همه چیز بدون مشکل پیش برود پنجره ی شبیه ساز شما مانند تصویر زیر خواهد بود.

کامپوننت های سفارشی

 

کامپوننت های سفارشی با ویژگی های سفارشی

تا اینجا دیدیم که چگونه می توان قابلیت ویجت ها را گسترش داد، اما در مثالی که در بالا بررسی شد کامپوننت ها تنها از ویژگی های پیش فرض کلاس والد خود استفاده می کردند. اما شرایطی را در نظر بگیرید که در آن خودتان نیز می خواهید ویژگی هایی را ایجاد کنید. در ادامه یک روش ساده به منظور ساختن ویژگی های جدید برای کامپوننت سفارشی و نحوه ی استفاده از آن ها توضیح داده شده است. در اینجا هدف ما تعریف دو ویژگی جدید برای کامپوننت سفارشی و استفاده از آن ها می باشد؛ مانند آنچه در زیر آورده شده

مرحله ی اول

در مرحله ی اول برای اینکه بتوانیم از ویژگی های سفارشی خودمان استفاده کنیم، لازم است آن ها را در یک فایل XML جدید با نام attrs.xml در مسیر /res/values تعریف کنیم. محتوای این فایل مانند زیر خواهد بود.

در قطعه کد بالا “name=”value نام صفتی است که می خواهیم در فایل XML از آن استفاده کنیم و “format=”type نوع ویژگی را مشخص می کند.

مرحله ی دوم

در مرحله ی دوم باید ویژگی ها را از فایل XML بخوانیم و متناسب با آن ها تنظیمات لازم را روی کامپوننت اعمال کنیم. در این مرحله ویژگی های موجود در فایل XML را توسط یک تابع سازنده دربافت می کنیم. برای خواندن مقدار این ویژگی ها ابتدا آن ها را در یک TypedArray قرار می دهیم، سپس مقادیر موجود در آرایه را یکی یکی بررسی می کنیم و تنظیمات لازم را روی کامپوننت اعمال می نماییم؛ مشابه قطعه کد زیر −

مرحله ی سوم

و در نهایت می توانیم مانند قطعه کد زیر از ویژگی های سفارشی در فایل XML استفاده کنیم −

قسمت مهمی که باید به آن توجه کنید قطعه کد xmlns:custom=http://schemas.android.com/apk/res/com.example.compoundview می باشد. لازم نیست قسمت /http://schemas.android.com/apk/res را تغییر دهید؛ اما برای قسمت آخر آن باید نام بسته را تعیین نمایید، همچنین شما می توانید بعد از xmlns: از هر نامی استفاده کنید. در این مثال ما از نام custom استفاده کرده ایم اما شما می توانید از هر نامی که مایلید استفاده کنید.

مثال

این مثال در چند مرحله ی ساده نحوه ی ایجاد ویژگی های جدید برای یک کامپوننت سفارشی را نشان می دهد. برای این منظور مراحل جدول زیر را دنبال کنید.

مرحله توضیحات
۱ با استفاده از اکلیپس یک پروژه ی جدید با نام CustomAttribute تحت بسته ی com.example.customattribute ایجاد کنید. نحوه ی ایجاد پروژه ی جدید در بخش آموزشی ساخت اولین پروژه در اندروید استودیو توضیح داده شده است.
۲ مانند آنچه در ادامه آمده است ثابت های رشته ای مورد نیاز را در فایل res/values/strings.xml تعریف کنید.
۳ فایل res/values/attrs.xml را به منظور تعریف ویژگی های جدید ایجاد کنید.
۴ محتوای فایل res/layout/activity_main.xml را مانند آنچه در ادامه آمده است به منظور ایجاد یک کامپوننت نمایشگر تاریخ تغییر دهید.
۵ فایل java/com.example.customattribute/DateView.java را به منظور تعریف کامپوننت جدید DateView ایجاد کنید و محتوایی که در ادامه آمده است را در آن وارد نمایید.
۶ برنامه را با استفاده از شبیه ساز اندروید اجرا کنید و نتیجه را مورد بررسی قرار دهید.

 

در زیر محتوای فایل res/values/strings.xml آورده شده است −

محتوای زیر مربوط به فایل res/values/attrs.xml می باشد −

محتوای زیر مربوط به فایل res/layout/activity_main.xml می باشد −

و در نهایت محتوای فایل java/com.example.customattribute/DateView.java در زیر آورده شده است −

حال نوبت آن رسیده تا با استفاده از اندروید استودیو برنامه را اجرا کنیم. برای این منظور روی آیکون Run که در نوار ابزار قرار دارد کلیک کنید.اگر همه چیز بدون مشکل پیش برود پنجره ی شبیه ساز شما مانند تصویر زیر خواهد بود.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *