وبلاگ - نکات و ترفندها

0
1.7K

بیش از ۱۲ سال پیش، اندی رابین و تیمش کار ساخت سیستم عامل موبایلی را که تعامل مشتریان با گوشی های موبایل و علی الخصوص اسمارت فون ها را دگرگون کرد، آغاز کردند و توسعه دهندگان نیز تحت تاثیر این اقدام قرار گرفتند.

اسمارت فون های آن زمان تنها محدود به پیام رسانی و چک کردن ایمیل ها بودند (و البته تماس گرفتن) و همین شرایط نیز کاربران و توسعه دهندگان را محدود کرده بود.

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

اندروید Oreo

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

 

۱. تفاوت بین id+@ و @id

برای دسترسی به ویجت (یا کامپوننت) در جاوا به یک مقدار واحد نیاز داریم که این مقدار منحصر به فرد با استفاده از ویژگی android:id در دسترس قرار میگیرد که در حقیقت آیدی را به عنوان پسوند به id+@/ اضافه میکند و آیدی منبع فایل برای کوئری سایر قسمت هاست. آیدی برای Toolbar را به صورت زیر میتوان تعریف کرد:

 

با استفاده از ()findViewById میتوان به این آیدی در فایل res یا دایرکتوری R.id دسترسی داشت که نوع View موردنظر را برمیگرداند.

id@ نیز عملکردی مشابه ()findViewById دارد و با استفاده از آیدی که به آن داده اید، به دنبال کامپوننت موردنظر میگردد، با این تفاوت که تنها برای لی اوت مورد استفاده قرار میگرید.

 

۲. استفاده از string res@ برای نمایش رشته ها در XML

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

 

در صورت استفاده از رشته های هارد کد شده، اندروید استودیو اخطاری نشان میدهد و پیشنهاد میکند که این رشته ها را به رشته های منبع تغییر دهیم. کافی است بر روی آنها کلیک کنید و با زدن ALT + ENTER به resource extractor بروید. علاوه بر این میتوانید به فایل strings.xml در فولدر values در زیر res نیز مراجعه کرده و یک منبع رشته را مانند زیر تعریف کنید:

سپس از آن به جای رشته هارد کد شده استفاده کنید.

 

۳. استفاده از مقادیر ثابت android@ و attr?

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

 

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

 

attr? نگهدارنده دیگری برای مشخص کردن ویژگی های پیش تعریف شده است. یک Toolbar کاستوم را در نظر بگیرید، این Toolbar به یک طول و عرض تعریف شده نیاز دارد و عرض باید MATCH_PARENT باشد، اما برای طول از چه مقداری باید استفاده کرد؟ بسیاری از ما به دستورالعمل ها توجهی نمیکنیم و طول دلخواه خود را مورد استفاده قرار میدهیم. اما این کار نادرست است و به جای اینکه طول موردنظر خود را تعریف کنیم، باید از این روش استفاده کرد:

 

کاربرد دیگر attr? ترسیم ripples بر روی ویوها هنگام کلیک است. SelectableItemBackground یک drawbale پیش تعریف شده است که به عنوان پس زمینه برای هر ویو قابل استفاده بوده و به افکت ripple نیاز دارد و میتوانیم به این صورت نیز از آن استفاده کنیم:

 

بدین ترتیب میتوان از ripple بدون حاشیه استفاده کرد.

 

 

۴. تفاوت بین SP و DP

تفاوت چندان مشهودی بین این دو وجود ندارد، اما باید بدانید که این دو چه هستند و برای رسیدن به نتایج بهتر کجا باید از هریک از آنها استفاده کرد.

بهتر است از SP یا Scale-independent pixels همراه TextViewهایی استفاده کرد که اندازه فونت نباید بر اساس چگالی نمایشگر عوض شود. بدین ترتیب محتوای TextView بر اساس نیاز کاربر و فونت ترجیحی او عوض میشود.

برای مواردی که به بعد یا موقعیت مکانی نیاز باشد، DP یا Density-independent pixels گزینه بهتری است. همانطور که پیش تر نیز گفته شد DP و SP شبیه یکدیگرند، اما DP با چگالی های مختلف بهتر تغییر اندازه میدهد و اندروید استودیو به طور داینامیک پیکسل ها را محاسبه میکند و میتوان از آن را برای کامپوننت هایی که باید در دستگاه های مختلف (چگالی نمایشگر مختلف) به صورت مشابه نمایش داده شوند، استفاده کرد.

 

۵. استفاده از Drawableها و Mipmapها

تفاوت بین drawable و mipmap چیست؟

شاید فکر کنید که هر دو به منظور مشابهی مورد استفاده قرار میگیرند، اما تفاوت هایی بین این دو وجود دارد.

Mipmapها برای ذخیره سازی آیکون ها استفاده میشوند، درحالیکه drawableها برای سایر فرمت ها کاربرد دارند.

اپلیکیشن چندین فولدر mipmap و drawable دارد که هریک شامل رزولوشن نمایشگر مختلفی هستند و سیستم آن فولدر از Drawable را  انتخاب میکند که متعلق به چگالی دستگاه فعلی است.

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

به طور خلاصه mipmapها برای آیکون هایی مناسبند که رزولوشن شان در دستگاه هایی با چگالی مختلف عوض میشود و drawable برای سایر شرایط قابل استفاده اند.

برای نمونه گوشی نکسوز ۵ از نوع wwhdpi است و میتوانیم آیکون ها را در فولدر mipmap قرار دهیم، با این کار کل فولدرهای mipmap نگه داشته میشوند. اما اگر از drewable ها استفاده کنیم، فقط drawable-xxhdpi نگه داشته میشود و هر فولدر دیگری بلااستفاده میگردد.

 

۶. استفاده از Vector Drawableها

افزودن چندین نسخه (اندازه) از asset های مشابه برای پشتیبانی از چندین چگالی نمایشگر روش رایجی است، اما مشکلاتی را در پی دارد و اندازه فایل apk را افزایش میدهد. به این منظور گوگل Vector Drawableها را معرفی کرد. Vector Drawableها SVGهای XML هستند که در واقع عکس را با رشته ای از نقطه، خط و منحنی که با رنگ پر شده رسم میکنند.

از آنجایی که Vector Drawable ها از خط و نقطه تشکیل شده اند، بدون اینکه رزولوشن تغییر کند، تغییر اندازه برای چگالی های مختلف انجام میشود و اعمال انیمیشن نیز ساده تر میشود. اگر چندین Vector Drawable را به یک فایل AnimatedVectorDrawable اضافه کنید، دیگر نیازی به افزودن چندین نسخه از یک عکس نخواهید داشت.

Vector drawable بالا عکس زیر را نتیجه میدهد:

استفاده از Vector Drawable در اندروید

برای افزودن vector drawable به پروژه اندروید، بر روی ماژول اپلیکیشن کلیک کنید، سپس New>Vector Assets را بزنید. با این کار به Asset Studio میروید که دو گزینه برای تنظیم vector drawable در اختیار شما قرار میدهد. میتوانید از Material Icons انتخاب کنید یا SVG یا PSD لوکال انتخاب کنید.

گوگل پیشنهاد میدهد که از Material Icons استفاده کنید که از طریق این لینک در دسترسند.

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

 

منبع:

https://android.jlelse.eu