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

نگاهی عمیق به مبحث سایز ها در اندروید - تبدیل سایز در اندروید

انواع سایز در اندروید :

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

px ( Pixel ) 

پیکسل واحد اصلی اندازه گیری دیجیتال است . این نوع واحد برای استفاده  در اندروید پیشنهاد نمیشه چون اندازه ای که شما با پیکسل تعیین میکنید توی دستگاه های دیگه به علت متفاوت بودن تراکم پیکسلیشون به اون اندازه ای که انتظار دارید نمایش داده نمیشه . مثلا فرض کنید دوتا دستگاه داریم که هر دو اندازه صفحشون 4 اینچ ولی دستگاه A رزولوشنش 480*320 و دستگاه B رزولوشنش 640*960 هست . اگه بخایم توی این دستگاه یک مربع به اندازه 100 پیکسل رو نمایش بدیم به این صورت نمایش داده میشه :

                  

همون طورکه میبینید توی عکس سمت راست مربع 100 پیکسلی خیلی بزرگتر نمایش داده میشه و توی عکس سمت چپ مربع 100 پیکسلی اندازش خیلی کوچکتر از انتظار ماست .

dp ( Density-independent Pixels ) or dip 

dp نوعی واحد اندازه گیری هست که وابسته به تراکم پیکسلی دستگاه اندرویدی هست . این نوع واحد مشکل واحد اندازه گیری pixel رو توی دستگاه های با تراکم پیکسلی متفاوت تقریبا حل کرده . چون این واحد با ضرایبی متناسب با تراکم پیکسلی محاسبه میشه .  برای اطلاعات بیشتر این جدول رو ببینید :

اندروید مبنای محاسبات dp رو تراکم پیکسلی 160dpi در نظر گرفته و متناسب با هر تناسب پیکسلی ضریبی در نظر گرفته که تو جدول بالا مشخصه . حالا فرض کنید  یک مربع داریم با اندازه 48*48 dp که این اندازه توی دستگاهی با تراکم پیکسلی 160dpi معادل 48*48 پیکسل هست . حالا اگه این مربع رو توی دستگاهی با تراکم پیکسلی 320dpi بخایم نمایش بدیم با اندازه 96*96 پیکسل نمایش داده میشه !

اگه تراکم پیکسلی یک دستگاه رو داشته باشیم میتونیم به راحتی واحد dp رو به پیکسل و برعکس تبدیل کنیم . فرومول تبدیل dp به px در اندروید به این صورت است :

px = dp * scale_factor

اینجا scale_factor همون ضریب تراکم پیکسلی هست ( مقادیر scale در جدول بالا ) و تراکم پیکسل هم به اسم dpi شناخته میشه که مخفف pixel per inch هست . فقط حواستون باشه dpi ( تراکم پیکسلی ) رو با ( dip ( density-indepentent pixel اشتباه نگیرید .

برای به دست اوردن ضریب تراکم پیکسی در اندروید از شی Resources و DisplayMetrics کمک میگیریم .

برای به دست اوردن تراکم پیکسلی ( dpi ) هم به این صورت :

و تبدیل px به dp با استفاده از dpi :

px = dp * dpi / 160

یک روش دیگه برای تبدیل سایز در اندروید وجود داره و اونم استفاده از کلاس TypedValue هست و متد استاتیک applyDimension :

پارمتر اول این متد واحدیه که میخایم اون واحد رو به px تبدیل کنیم ، اینجا ما واحدی که قراره به px تبدیل بشه رو dp تعیین کردیم . شما میتونید متناسب با نیازتون واحد های دیگه رو انتخاب کنید . و پارامتر دوم هم مقدار واحدیه که قراره به px تبدیل بشه .

 

( sp ( Scale-independent Pixels

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

 ( pt ( point 

یک pt معادل 1/72 ام اینچ هست . و این واحد با سایز فیزیکی صفحه نمایش رابطه داره نه تعداد پیکسل ها . برای مثال 72pt معادل یک اینچ هست و در عکس اول اگه مربع رو روی 72pt در تنظیم کنیم توی هر دوتا صفحه یک اندازه نمایش داده میشه . ولی باز هم این واحد اندازه گیری پیشنهاد نمیشه چون دستگاه ها سایز های صفحه ی متفاوتی دارند .

 ( mm ( milimeter 

این نوع واحد اندازه گیری هم مثل pt متناسب با سایز فیزیکی دستگاه است 

( in ( inches 

این واحد هم مانند mm است .

 

امیدوارم این آموزش براتون مفید واقع شده باشه . موفق و پیروز باشید .

 

 

 

به این مطلب چه امتیازی میدهید ؟

اشتراک
باخبر شدن از
guest

0 نظرات
Inline Feedbacks
نمایش همه دیدگاه ها