در حال حاضر بیشتر برنامه نویسان اندروید با ویژگی Instant Run که در اندروید استدیو۲ معرفی شد، آشنا هستند. با استفاده از این ویژگی زمان Build کردن پروژه ها بسیار کوتاهتر می شود. درواقع به جای اینکه با هر تغییر همه ی مراحل Build به صورت کامل انجام شود، کلاس هایی که تغییر یافته اند بعد از کامپایل شدن به گوشی منتقل شده و جایگزین کلاس های قدیمی می شوند. در شکل زیر به صورت کلی نحوه ی کارکرد Instant Run به تصویر کشیده شده است.

 

 

البته این قابلیت ایده ی نوینی نیست و در گذشته شرکت Zero Turnaround با تمرکز بر روی کاهش مدت زمان Build پروژه های Java EE، محصول خود با را با نام  JRebelعرضه کرده بود. همچنین این شرکت در تابستان سال ۹۴ نسخه ی آزمایشی محصول Jrebel for Android را در اختیار برنامه نویسان اندروید قرار داد. با توجه به اینکه شرکت Zero Turnaround زودتر از گوگل کار بر روی این ویژگی را آغاز کرده است، در حالات بیشتری می توانید از آن کمک بگیرید. برای اطلاعات بیشتر می توانید به این مقاله که در رابطه با مقایسه ی JRebel for android و Instant run است، رجوع کنید.

ادامه …

توجه: ساختار پروژه تغییر کرده است.در یک پست جدید تغییرات توضیح داده می شود.البته اگر مایل هستید با استفاده از لینک آخر این پست میتوانید به پروژه ی قدیمی دسترسی داشته باشید.

مدت هاست که به صورت پراکنده در رابطه با معماری های نرم افزار در اندروید مطالعه می کنم. انعطاف اندروید به توسعه دهنده امکان می دهد که از معماری های مختلف مانند MVP ،MVVM ،Clean Arch و … در ساخت اپ استفاده کند. انتخاب یکی از این گزینه ها بسیار مشکل است، به همین دلیل تا زمانی که یکی از این معماری ها را برای اپ های خود انتخاب کنم، سعی کردم با استفاده از Package بندی مناسب پروژه و جداکردن کلاس ها از یکدیگر، قابلیت توسعه پذیری و نگهداری پروژه را بالا نگه دارم. به مرور و بر اساس تجربه ای که در ساخت اپ های جدیدتر پیدا کردم با بهبود ساختار پروژه ها، به یک اسکلت ثابت رسیدم اما بزرگترین کمبودی که همچنان در پروژه ها احساس می کردم، عدم امکان تست نرم افزار به دلیل در هم تنیدگی بخش UI (اکتیویتی و فرگمنت ها) با باقی بخش ها بود. به این ترتیب به مفید بودن مطالعه ی معماری ها پی بردم ولی تا زمانی که به شخصه در یک پروژه از آن ها استفاده نکرده ام نمی توانم مزایا و معایبش را درک کنم. به همین دلیل با یک پروژه ی تمرینی، از ساده ترین معماری یعنی MVP که از قدیم آشنایی بیشتری با آن داشتم، شروع کردم. برای اینکه پروژه ی تمرینی به پروژه های واقعی نزدیکتر باشد، از یک وب سرویس عمومی و رایگان به نام OMDb یا Open Movie Database کمک گرفتم که اطلاعات فیلم های مختلف را در اختیار عموم می گذارد.

ادامه …

در بیشتر برنامه ها، کاربران نیاز دارند محتوای برنامه را جستجو کنند. برای پیاده سازی این ویژگی روش های مختلفی وجود دارد، یکی از این روش ها استفاده از SearchView در Toolbar برنامه است. کتابخانه ی Material SearchView یکی از کتابخانه های محبوب گیت هاب با ۱,۰۹۴ ستاره می باشد. این کتابخانه SearchView را به صورت متریال با دو نوع انیمیشن مختلف برای اندرویدهای ۵ به بالا (CircularReveal) و کمتر از ۵ (FadeIn) پیاده کرده است.

اگر در پروژه حداقل SDK پشتیبانی شده را اندروید ۴٫۲ تعریف کرده باشید، می توانید از همین کتابخانه برای برنامه ی خود به صورت RTL استفاده کنید. اما از آنجا که در اندروید ۴٫۰ و ۴٫۱ هنوز ویژگی پشتیبانی از RTL به سیستم عامل اضافه نشده بود، با تغییر در فایل های layout و کدهای جاوای این کتابخانه، آن را به یک کتابخانه ی RTL تبدیل کرده ام که در هر نسخه ی اندرویدی از آن استفاده کنید به صورت RTL نمایش داده شود.

جهت استفاده ی آسان، کتابخانه ی جدید را JitPack منتشر کرده ام. لینک کتابخانه در گیت هاب:

https://github.com/abbas-oveissi/MaterialSearchView

نحوه ی استفاده از کتابخانه: ادامه …