من قبلا از واحد sdp استفاده میکردم خوب بود در مقابل گزینه های دیگه این رو هم میتونید تست کنید .
https://github.com/intuit/sdp
البته اگر از ssp این لایبرری برای فونت سایز استفاده کنید در بعضی جاها بهم میریزه
ازهمون sp استفاده کنید - که البیته استفاده از sp اگر فونت گوشی بزرگ باشه بهم میریزه .بستگی باز به هدفتون داره که چی در اولویت هست
طبق تجربه ای که داشتم بهترین راه برای تفکیک ویو برای دیواس های مختلف استفاده از همین داک گوگل است که لینکش در زیر قرار داده شده.
تصویر زیراز همین داک برداشته شده و اسکرین سایز های مختلف رو در حالت های مختلف نشون میده. handset, tablet, windows, landscape, portrate
320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc). 480dp: a large phone screen ~5” (480x800 mdpi). 600dp: a 7” tablet (600x1024 mdpi). 720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).
سوال اینجاست که در Android Studio چطوری استفاده کنیم؟ نام گذاری فایل ها و پکیج ها به چه صورت هست؟
فرض کنید یک اکتیویتی داریم که هیچ جوره نمیشه ریسپانسیوش کرد 😢. پس مجبوریم طبق نیازمون در چند فایل بر اساس دیوایس های متفاوت داشته باشیمش. در این مثال مشکل ما دیوایس هایی با سایز صفحه تقریبا 4.7 هستند. پس دو فایل نیاز داریم.
برای جدا کردن دو راه هست. یا از The smallest width استفاده کنیم یا از The available width/height. در حالت اول بهش طبق تصویر بالا حداقل width مورد نظر رو میدیم.ولی در دومی بر اساس width یا height مورد نظر فایل xml جدید رو میسازیم. فرقشون اینجاست که در حالت The smallest width وقتی میگیم 600dp باشه عرضت، یک فایلی در پکیج layout-sw600dp از همین فایلمون میسازه که دیوایس های 7 اینچ به بالا رو پشتیبانی میکنه. ولی در دومی فایلی با نام layout-w600dp میسازه که فقط و فقط دیوایس ها 7" در اون پشتیبانی میشن.
۱- در اندروید استودیو لایه xml مورد نظر رو باز کنید و بر روی orientation for preview کلیک کنید
۲- روی create other... کلیک کنید
۳- در صفحه باز شده (Select resource directory) درسمت چپ لیستی از کوالیفایر ها آورده شده که ما بر اساس نیازمون از Smallest Screen Width باید استفاده کنیم تا بتونیم دیوایس ها ۴.۷ به بالا و پایین رو از هم جدا کنیم.
از سایز ۳۸۰ استفاده کردم تا دیوایس های ۴.۷ اینچی پشتیبانی بشن.
خب فایلمون ساخته شد. فایل اصلیمون میشه برای صفحه نمایش هایی که از 380dp عرض کمتری دارند و فایل جدید که در layout-sw380 هست میشه برای صفحه نمایش هایی که از 380dp عرض بزرگتری دارند
و حالا قشنگی کار اینجاست که وقتی به قسمت دیوایس ها میریم، دیوایس هایی که این فایل پشتیبانی نمیکنه رو کنارشون علامت ضربدر میزنه.
خب برای توضیحات تکمیلی باید به این اشاره کنم که ما اصلا نباید بر اساس اینچ صفحه تصمیم بگیریم و بگیم دیوایس ها ۷ اینچ یا ۴ اینچ. ملاک اصلی ما عرض صفحه به dp یا همون dip هست. دو دیوایس هم اینچ میتونند عرض متفاوت داشته باشن.
dip یا dp چی هست؟
مخفف density-independent pixels هست یعنی پیکسل مستقل از تراکم. مقدارش برابر با یک پیکسل فیزیکی در صفحه نمایش (160dpi (MDPI است.
پس برای طراحی یک دیزاین و تقسیم صفحه نمایش بهتره ملاک عرض بر اساس dp باشه که با The smallest width اینکار امکان پذیر میشه.
در تصویر اول اون پوینتر قرمز ها width صفحه نمایش رو نشان میدن. اون دو نوار پایین برای دستگاه های موبایل هست که دو دسته بندی کلی (landscape و portrait) دارن که هر کدوم از این دسته بندی ها خودش به handest و tablet تبدیل میشه.