برنامه نویسی اندروید: خداحافظ dp ، سلام sdp!

سلام بر دوستان علاقه مند به علم.

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

نمایش محتوای یکسان در صفحه نمایش ها و گجت های متفاوت
نمایش محتوای یکسان در صفحه نمایش ها و گجت های متفاوت


این آموزش برای برنامه نویسان زامارن اندروید (Xamarin.Android) نیز قابل استفاده است.


معمولا برنامه نویسان اندروید برای سایز بندی ویجت ها از واحد dp و برای فونت آن ها از واحد sp استفاده می کنند. مثال:

<Button 
     android:textSize="16sp" 
     android:layout_width="30dp" 
     android:layout_height="wrap_content" />

که خروجی آن در صفحه نمایش های مختلف چیزی مثل این عکس میشه:

برای حل این مشکل، یک توسعه دهنده در گیت هاب واحد جدیدی رو توسعه داده به نام sdp!

هر ویجتی که توسط sdp مقدار دهی بشه، سایز اون در صفحه نمایش های مختلف حفظ میشه و در صورت نیاز، به طور خودکار افزایش یا کاهش پیدا می کنه. یعنی دیگه نیاز نیست برای هر اندازه از صفحه نمایش یک layout جدا طراحی کنید.


طریقه اضافه کردن این کتابخانه به پروژه:

  • در اندروید استودیو:

وارد فایل app> build.gradle بشید و در قسمت dependencies، این کتابخانه را اضافه کنید:

dependencies {
 ...
implementation 'com.intuit.sdp:sdp-android:1.0.6'
}

سپس یک بار پروژه رو build کنید تا کتابخانه دانلود و اضافه بشه(قند شکن فراموش نشه!)

  • در زامارین اندروید:

در سر منوی Tools به مسیر Tools> NuGet Package Manager> Package Manager Console برید و این دستور رو نوشته و Enter رو فشار بدید:

Install-Package SDP -Version 1.0.0


طریقه استفاده از sdp:

اگر در مرحله قبل همه چیز خوب پیش رفته باشه، در هنگام مقدار دهی لیستی از sdpها رو مشاهده خواهید کرد.

استفاده از sdp کاملا مانند dp هست، اما نوع مقدار دهی با آن متفاوته. کافیه فایل xml رو باز کنید و ویجت مورد نظر رو مانند کد زیر مقدار دهی کنید:

 <Button
        android:textSize=" @dimen/_14sdp "
        android:layout_width=" @dimen/_28sdp "
        android:layout_height="wrap_content" /> 
توجه کنید که هر واحد از sdp، با dp متفاوته؛ به عنوان مثال: 16sdp = 22dp
بعد از استفاده از sdp با خودتون می گید: چطور تا حالا بدونش کد می زدم؟! :))

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

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

یا حق

-----------------

همچنین مطالعه کنید:

- به حداقل رساندن دردسر های Gradle با چند روش ساده