تفاوت dp و px در برنامه نویسی اندروید
1399-06-30

تفاوت dp و px در برنامه نویسی اندروید

واحد های اندازه گیری اندروید

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

مفهوم density و dpi

منظور از Density تعداد پیکسل هایی است که در یک اینچ از صفحه نمایش قرار می گیرند. هر چه تعداد پیکسل ها در هر اینچ بیشتر باشند رزولوشن صفحه بیشتر بوده و دستگاه از کیفیت نمایش بیشتری برخوردار خواهد بود. برای اندازه گیری میزان این چگالی از واحد dpi که مخفف Dots per inch میباشد، استفاده میشود.
در  density pixel مربوط به هر صفحه نمایش را میتوان بر اساس اندازه و resolution محاسبه کرد. سیستم عامل اندروید صفحه نمایش ها را بر اساس density pixel به شش دسته تقسیم میکند:
  • Low density (ldpi) — 120 dpi
  • Medium density (mdpi) — 160 dpi
  • High density (hdpi) — 240 dpi
  • Extra High density (xhdpi) — 320 dpi
  • Extra Extra High density (xxhdpi) — 480 dpi
  • Extra Extra Extra High density (xxxhdpi) — 640 dpi

 

آموزش اندروید

 

انواع واحدهای اندازه گیری در اندروید

در توسعه اپلیکیشن برای سیستم عامل اندروید، برای مشخص کردن عناصر روی صفحه مثل دکمه ها، فاصله ما بین عناصر روی صفحه از واحدهای اندازه گیری متفاوتی میتوان استفاده کرد. در برنامه نویسی اندروید چهار واحد اندازه گیری وجود دارد:
  1. dp (Device Independent Pixel​​​​

این واحد اندازه گیری هم به صورت dip و هم به صورت dp نوشته می شود. در حقیقت dip یک واحد پیکسلی مجازی است که بر اساس یک صفحه نمایش با رزولوشن 160 dpi طراحی شده است. به عبارت دیگر یک dip معادل با یک پیکسل در یک صفحه نمایش که دارای 160 نقطه در هر اینچ است می باشد. چنانچه کلیه عناصر در یک layout را در توسعه اندروید بر حسب dip تعیین کنیم، این اطمینان را خواهیم داشت که به طور مثال یک دکمه در دستگاه هایی با صفحه هایی با تراکم متفاوت به طور متناسب بزرگ یا کوچک خواهد شد.
  1. sp (Independent PixelScale)  

نحوه عملکرد واحد sp همانند dip است با این تفاوت که واحد اندازه گیری sp تنظیمات دستگاه اندرویدی را نیز برای نمایش متن ها، مد نظر قرار می دهد. به عنوان مثال فرض کنیم که فرد کهنسالی یک گوشی با سیستم عامل اندروید دارد و از آنجا که او دارای بینایی ضعیفی است و تنظیمات تلفن همراهش به نحوی است که تمامی کلمات را بزرگ تر از حد معمول نمایش می دهد. حال اگر ما اپلیکیشنی طراحی کنیم که از واحد اندازه گیری dip در UI آن استفاده شده باشد و اگر همان شخص این اپلیکیشن  را نصب کند به هیچ وجه قادر نخواهد بود تا اندازه فونت ها را بزرگ تر از آنچه ما تعریف کرده ایم تغییر دهد.
  1. pt (Point)

هر Point معادل ۰٫۰۱۳۸۳ اینچ و یا ۰٫۳۵۲۵ میلیمتر است. این واحد به dpi ربطی ندارد و در همه دستگاه ها هم اندازه میباشد.
  1. px (Pixel)

برابر باpixcel  واقعی روی صفحه نمایش میباشد..
نکته: در صورت استفاده از واحدهای dp و sp برای view ها اندازه آنها متناسب با دستگاه تنظیم میشود. اگر از pt استفاده کنیم اندازه هر viewدر همه دستگاهها برابر است و اگر از px استفاده کنیم اندازه ها بر اساس رزولوشن صفحه نمایش تنظیم میشود.

 

 تبدیل  dp به px

از آنجا که اندازه view ها و فاصله بین آنها در هر صفحه نمایش باید بر حسب پیکسل محاسبه شود و واحد اندازه گیری dp بر اساس یک صفحه نمایش با رزولوشن 160 dpi طراحی شده است. سیستم عامل اندروید برای محاسبه اندازه view ها و فاصله بین آنها بر حسب پیکسل در صفحه نمایش های مختلف از فرمول زیر استفاده می کند:

Actual Pixel= dp*(dpi /160 )

که dpi در آن یکی از مقادیر 120 ،160 ،240 ، 320 ،480 و یا 640 است. به عنوان مثال اگر شما مقدار width یک Button را 12dp قرار دهید اندازه width آن در یک صفحه نمایش با density معادل 240 dpi  برابر 18 پیکسل میباشد.

کلام آخر:

امیدواریم که از این مقاله نهایت استفاده را برده باشید و از آن در برنامه نویسی موبایل استفاده کنید.

 

مقالات مرتبط

تفاوت dp و px در برنامه نویسی اندروید

واحد های اندازه گیری اندروید
زهرا چگینی
10

به نظر شما تفاوت dp و px در برنامه نویسی اندروید، این دو واحد اندازه گیری چیست؟ پس ما را همراهی کنید.

delegate چیست؟

Delegate ها چرا به زبان سی شارپ اضافه شدند؟
مرضیه فتاحی
15

delegate چیست؟ چه کاربردی دارد؟ چگونه و در چه موقعیت هایی باید ازآنها استفاده کرد؟ با ما همراه شوید تا تمامی این سوال ها دریابید.

اکشن (Action) در سی شارپ، راهی برای خواناتر شدن کدها

موارد استفاده ی Action در سی شارپ
زهرا چگینی
10

Action در سی شارپ از پایه و اساس Delegate ها استفاده میکند، درحقیقت همان Delegate های هستند که کار را برای ما راحت تر میکنند.

Extension method درسی شارپ، راهی برای کارایی بالا در کدها

اکستنشن (extension) درسی شارپ
مرضیه فتاحی
10

هدف ما دانستن نکات مهمextension method در سی شارپ، نحوه استفاده و همچنین کاربرد آن در کدنویسی است. پس با ما همراه شوید.

لیست کامل تگ های html که هیچ کس به شما نخواهد گفت

آشنایی با تگ های html
زهرا چگینی
15

تگ ها در html نقش مهمی دارند زیرا تمامی کارهای html با تگ انجام می‌شود. به همین دلیل ما یک لیست کامل از تگ‌های html برای شما آماده کرده‌ایم تا از آن استفاده کنید.

ویژگی های جدید asp.net core که حیرت برنامه نویسان را برانگیخت

معرفی ویژگی های جدید asp.net core از مایکروسافت
مرضیه فتاحی
10

ویژگی های جدید asp.net core چیست؟ مایکروسافت در این نسخه چه امکاناتی را برای برنامه نویسانش قرار داده است. اگر شما هم خواهان دانستن این مطالب هستید، ما را همراهی کنید.