استفاده از ‌SVG در پروژه‌های اندرویدی

استاندارد

SVG زبانی برای توصیف گرافیک ۲ بعدی و برنامه های گرافیکی در xml است ، و یکی از پرکاربردترین و محبوب‌ترین فرمت‌های مورد استفاده در دنیای وب هست . SVG کوتاه شده ترکیب Scalable Vector Graphics هست ، و همونطور که از اسمش مشخصه SVG میتونه در اندازه‌های مختلف تصویر یا فایل گرافیکی بدون مشکل عمل کنه و کیفیت تصویرمون رو پایین نیاره ( به اصطلاح تصویر رو range نکنه ) .

خب حالا چطور میتونیم از SVG و مزایای خوبش تو پروژه‌های اندرویدی استفاده کنیم ؟ در ادامه این پست یک مثال از نحوه استفاده از ‌SVG رو با هم خواهیم دید .
کاری که قراره توی این مثال انجام بدیم ساخت صفحه‌ اسپلش ( همون صفحه اولی که وقتی بعضی اپلیکیشن‌ها رو باز میکنید باهاش روبرو میشید‌) اپلیکیشن توییتر هست . که در داخل اون قراره یک تصویر با فرمت SVG که همون لوگو توییتر هست رو نمایش بدیم . به خواندن ادامه دهید

تغییر versionName اپلیکیشن اندرویدی در هر Build

استاندارد

این پست راجع‌به تغییر versionName برنامه به صورت اتوماتیکه ، یعنی چی ؟ یعنی میخوایم با هربار گرفتن خروجی از پروژه اندرویدیمون اسم ورژن اپلیکیشنمون رو تغییر بدیم .

خب شاید براتون این سوال پیش اومده باشه که اصن چرا ما باید یه همچین کاری رو انجام بدیم ؟
این کار به شما کمک میکنه وقتی تغییری توی اپلیکیشن اعمال میکنید و اون رو برای تست در اختیار کاربرانتون قرار میدین ، بتونید نظرات اون‌ها رو با توجه به نسخه اپلیکیشن برسی کنید .
این کار بیشتر در روند توسعه و تست‌هایی که توسط بتا تستر‌ها قبل از انتشار اپلیکیشن انجام میشه کاربرد داره .

برای انجام این کار در اندروید استدیو کافیه که فایل build.gradle مربوط به ماژول اصلی پروژتون‌ ( ماژول app ) رو باز کنید و  versionName داخل defultConfig رو مثل زیر تغییر بدید . همینطور تابع getDate رو به فایل build.gradle تون اضافه کنید .

کد بالا در هربار گرفتن خروجی از پروژه ، مقدار versionName رو برابر با ترکیب کلمه Beta و زمان گرفتن شدن خروجی قرار میده .
حالا تنها کاری که باید انجام بدین نمایش versionName توی اپلیکیشنه تا کاربرتون بتونه اون رو ببینه . مثلا در صفحه‌ اسپلش یا درباره ما .

ادغام اپلیکیشن‌های مجزا در اندروید

استاندارد

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

۱ . در ابتدا بیاید قضیه رو خیلی ساده ببینیم ، پس دو تا پروژه میسازیم و فرایند توسعشون رو تماماً طی میکنیم .

۲ . بعد از اتمام مرحله توسعه باید یکی از پروژه‌ها رو به فرم کتابخونه در بیاریم . واسه اینکار ابتدا فایل gradle پروژه مد نظرتون رو باز کنید و apply plugin: رو به فرم  زیر تغییر بدین .

بعد تکه کد مربوط به applicationId رو از فایل gradle حدف کنید.

۳ . حالا وقتشه این پروژه رو به عنوان ماژول توی پروژه دیگمون import کنیم . برای اینکار اول باید اسم ماژول اصلی پروژه رو تغییر بدیم چون ماژول اصلی پروژه‌هایی که توسط اندروید استودیو ساخته میشن همگی به شکل پیش فرض به اسم app هستند و موقع import کردن ما نمیتونیم یک ماژول با نام مشابه ماژول‌های موجود رو وارد پروژه کنیم . اینجا چگونگی انجام اینکار رو توضیح دادم .

۴ . بعد از تغییر نام ماژول پروژه رو از طریق New > import module به پروژه دیگمون اضافه میکنیم .

۵ . توی قسمت Project Structure برید و پروژه‌ای رو که به عنوان ماژول اضافه کردین رو به لیست dependencies پروژه اضافه کنید .

Untitled

۶ . حالا واسه اخرین کار فقط لازمه چک کنیم که توی فایل AndroidManifest دو تا پروژمون فقط برای یکی از Activity ها کد زیر ست شده باشه.

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

 

و تمام ، حالا دو تا پروژه‌ای که در ابتدا داشتیم به صورت یک پروژه در اومده .

 

تغییر اسم ماژول اصلی پروژه توی اندروید استودیو

استاندارد

اگه براتون پیش اومده که بخواین اسم ماژول اصلی پروژتون رو تغییر بدین حتما متوجه این شدید که این کار به راحتی تغییر اسم سایر فایل‌های پروژه‌تون نیست . یعنی اگه بخواهید با روش معمول این تغییر نام رو انجام بدین، توی پروژه‌تون با خطا مواجه میشید .

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

حالا چطور باید این کار رو انجام بدیم ؟ به روش زیر .

مرحله اول

مثل تغییر اسم برای فایل‌های دیگه عمل میکنیم ، روی ماژولمون کلیک میکنیم و shift + F6 رو همزمان فشار میدیم و گزینه rename module رو انتخاب میکنیم و بعد از اون اسم مورد نظرمون رو وارد میکنیم ( اینجا من میخوام app رو به store تغییر میدم ) .

Untitled

مرحله دوم

حالا فایل setting.gradle رو باز کنید و app: رو به اسمی که توی مرحله اول وارد کردین تغییر بدین . مثلا store: .

مرحله سوم

پیغامی با مضمون Sync Now بالای صفحه به شما نشون داده خواهد شد ، روش کلیک کنید تا عمل sync کردن انجام بشه .

اگه این پیغام به شما نشون داده نشد روی دکمه sync project with gradle files توی نوار بالای اندروید استودیو کلیک کنید تا عمل sync کردن انجام بشه .

sd

مرحله آخر

دایرکتویی که فایل پروژه توی اون ذخیره شده رو باز کنید و اسم فولدر app رو به اسمی که توی مرحله اول وارد کردین تغییر بدین و پس از اون پروژه‌تون رو دوباره باز کنید .

حالا میتونید ببینید که به جای ماژول app یه ماژول دارید با اسم دلخواه خودتون .

 

چگونه توی جاوا کلاس‌های ترتمیز‌تری داشته باشیم

استاندارد

من هم مثل خیلیا سعی میکنم توی کدهایی که میزنم از اصول و مفاهیم شی گرایی استفاده کنم و تنها نکته‌ای که این وسط تاحدی واسم آزار دهنده بوده (البته تا دیروز) این بود که وقتی برای یه کلاس با تعداد متغیرهای زیاد میخواستم توابع getter و setter  بنویسم کد کلاسهام خیلی شلوغ و بهم ریخته میشد! اوضاع وقتی وخیمتر میشد که چندتا constractor و toString و equal و  … هم به کلاس اضافه میشد . تا این که دیروز همکارم یه کتابخونه خیلی خوب بهم معرفی کرد که بوسیله annotation ها تمام کارای که تو بالا بهشون اشاره کردم رو بدون شلوغ کاریهای روش معمول انجام میده، البته بجز کارهایی که گفته شد خیلی کارای باحال دیگه هم انجام میده . مثل cleanup@ که با استفاده از اون برای کلاس‌هایی که متد close توی اونها پیاده سازی شده (کلاس‌های cloasable مثل InputStream  و OutputStream ‌و یا کلاس‌های مربوط به دیتابیس )،به شما این اطمینان رو میده که قبل از خارج شدن از scope کنونی که شما توی اون هستید، این متد(close ) رو به وسیله try/finally فراخوانی کنه . به خواندن ادامه دهید