کار با استایل در اندروید

استایل (Style) و تم (Theme) متریال دیزاین در اندروید

استایل دهی در اندروید استودیو بعنی ما از قبل یه سری خاصیتهای مثل رنگ ، اندازه ، نام و… را آماده کنیم . و هرگاه که خواستیم از آنها در برنامه  استفاده کنیم .

مثلا ما در یک برنامه موبایل تعداد زیادب دکمه داریم ، و یکی از مواردی که در برنامه نویسی اندروید خیلی مهم است ، طراحی متریال برنامه می باشد یعنی رنگها یک دست و یک شکل باشند به همین خاطر ما تعداد زیادی دکمه که در بر نامه داریم رو نمیتونیم ، هربار به هر کدام رنگ تخصیص دهیم .

 

زیرا هم وقت گیر و همی اینکه شاید خواستیم رنگ دکمه ها رو عوض کنیم که باید یکی یکی اینکار را انجام دهیم .

به همبن خاطر اندروید استودیو امکانی ایجاد کرده بود به نام style که در ورژن جدید این برنامه نام اون عوض شده به نام theme . که در اون ما میتونیم برای هر کدوم از اجزاء برنامه چندین خصوصیت تعریف کنیم .

در پایین با یک مثال این امکان رو توضیح میدهیم :

در برنامه اندروید در مشیر زیر وارد شوید .rec/values/themes. یه فایل xml باز میشه که کدهای زیر تو اون هست :

اگر دقت کنید هر کدوم از آیتم های تعریف شده در کد مخصوص یک قسمت از برنامه مست که در شکل به شما نمایش میدیم :

 

در تصویر مشاهده میکنید که ما برای هر قسمت یک رنگ تعریف میکنیم ، که در همه اکتیویتی ها اعمال میشود مثلا وقتی رنگ متن رو تعریف کردیم در تمامی برنامه رنگ متن به این شکل می شود .

ایجاد یک تم جدید برای برنامه هم کافیست کدهای بالا را پاک کرده و خودمان بصورت شخصی سازی شده یک سری رنگ و خصوصیت تعریف کنیم . خود برنامه اندروید استودیو هم یک سری تم دارد . مانند Theme.MaterialComponents.DayNight.NoActionBar که در کد بالا استفاده شده است .

انتخاب رنگ مناسب

برای انتخاب یک رنگ مناسب برای برنامه که متریال هم باشد سایتهای زیادی هستند که این امکان رو فراهم میکنند. در زیر تعدادی از آنها رو نام می بریم :

https://material.io/guidelines/style/color.html

https://www.materialpalette.com

اگر دقت داشته باشید آیتم هایی که به صورت پیش فرض درون تم وجود داشت مستقیم به مقدار رنگ اشاره نداشتند:

در اندروید فایلی با نام colors.xml داریم که وظیفه ای مشابه با strings.xml دارد که قبلا با آن آشنا شدیم. به جای تعریف مستقیم رنگ ها در استایل یا خواص ویجت ها، می توان ابتدا آنها را در colors.xml تعریف کرده سپس داخل پروژه استفاده کرد. به این ترتیب در مواقعی که نیاز به تغییر رنگ های داخل پروژه داریم، با سرعت بیشتری می توان تغییرات را اعمال کرد

 

و در مواردی که قصد داریم در چند جای مختلف از یک رنگ یکسان استفاده کنیم، نیاز به تعریف چندباره نبوده و تنها با یک بار تعریف آن درون colors.xml می توان به تعداد نیاز آنرا در سراسر پروژه فراخوانی کرد.

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

 

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

 

 

 

مطالعه بیشتر:

https://guides.codepath.com/android/developing-custom-themes

 

 

 

 

مطالعه بیشتر