نحوه ایجاد نسخه های مختلف یک تصویر برای بهره برداری در دستگاه های با سایز صفحه نمایش مختلف
در این درس، به اهمیت و روشهای ایجاد نسخههای متعدد تصاویر برای پشتیبانی از صفحهنمایشهای مختلف در توسعه اپلیکیشنهای اندروید میپردازیم. با توجه به تنوع گسترده در اندازهها و چگالیهای صفحهنمایش دستگاههای اندرویدی، ارائه تصاویر با کیفیت و مقیاسپذیر برای هر دستگاه ضروری است. شما یاد خواهید گرفت که چگونه تصاویر را برای چگالیهای مختلف (مانند ldpi، mdpi، hdpi، xhdpi، xxhdpi و xxxhdpi) آماده کنید و آنها را در پوشههای منابع اپلیکیشن سازماندهی نمایید. همچنین، به تکنیکهای جایگزین مانند استفاده از nine-patch images و vector drawables برای کاهش تعداد فایلها و بهبود مقیاسپذیری اشاره میکنیم. در نهایت، به بهینهسازی اپلیکیشن از طریق فشردهسازی تصاویر و تست بر روی شبیهسازها پرداخته میشود تا تعادلی بین کیفیت و حجم اپلیکیشن برقرار گردد. این درس با یک ویدیوی آموزشی در YouTube همراه است که به شما کمک میکند این مفاهیم را بهصورت عملی فرا بگیرید و اپلیکیشنهای خود را برای تمامی دستگاههای اندرویدی بهینهسازی کنید.
من قبلا روش های ایجاد تصویرو هم برای آیکن لانچر برنامه و هم برای آیکن هایی که در اکشن بار استفاده میشن رو توضیح دادم. در هر دو مورد، پوشه هایی در منابع برای dpi ها و ظرفیت های پیکسلی مختلف صفحه نمایش دستگاه های متفاوت اندرویدی ایجاد میشه و فریم وورک برنامه تصمیم میگیره کدوم نسخه از فایل PNG یا JPG رو در زمان اجرا بسته به قابلیت ها و رزولوشن صفحه نمایش دستگاه استفاده کنه. میتونید از انواع دیگه تصاویر هم استفاده کنید ولی در اونصورت دیگه اندروید استودیو نمیتونه این تطبیق قابلیت ها رو واستون انجام بده.
اگه تلاش کنید یک image asset جدید در اندروید استودیو ایجاد کنید، خواهید دید که آپشن هایی برای سه نوع مختلف از انواع asset در قسمت Asset Type وجود داره، ولی همه شون آیکن هستن و بدرد تهیه تصاویر مورد نیاز دستگاه های مختلف با dpi متفاوت صفحه نمایش نمیخورن. هیچکدوم شون مناسب ساخت تصویر ساده نیستن. پس اگه بخوایید سایزهای مختلفی از تصاویر رو برای صفحه های نمایش مختلف ایجاد کنید، به یک ابزار دیگه نیاز دارید. ابزار های مختلفی دردسترس هستن که توسط اعضای جامعه برنامه نویسان اندروید ایجاد شدن. من روش مورد علاقه ام رو بهتون نشون میدم. این وبسایت، در github.com، میتونید هرچیزی رو که میخایید سرچ کنید و براحتی برای استفاده تون، اون رو روی دسکتاپ تون دانلود کنید.
من قبلا فایل jar رو دانلود کردم و میتونم روی دسکتاپ ام اجراش کنم. اگه روی کامپیوترتون جاوا رو نصب داشته باشید، میتونید روی فایل jar دابل کلیک کنید و برنامه رو اجرا کنید. بعد، با یک گرافیک پایه شروع کنید. من به فولدر فایل های exercise ام میرم بعد در assets، logo رو باز میکنم و این فایل logo رو انتخاب میکنم. اون رو کپی میکنم، و در دسکتاپ م به صورت موقت پاست اش میکنم.
بعد یک فولدر جدید در دسکتاپم ایجاد میکنم و اسمش رو images میذارم. میتونید اسمش رو هرچیزی که میخوایید بذارید. حالا به final Android resizer میرم و browse رو میزنم و مسیر تصویرم رو بهش میدم، desktop\images در فولدر home ام. حالا آماده ام تا تصاویر با سایزهای مختلف رو برای ظرفیت های پیکسلی مختلف ایجاد کنم. input density رو تعیین میکنم و این بر اساس سایز تصویر نیستش.
بلکه بر اساس تعداد پیکسل های موجود در هر اینچ یا همون رزولوشنی که در مانیتور دستگاه ها از اون با dpi یاد می کنن، هستش. من xx hdpi رو انتخاب میکنم. بعد ظرفیت پیکسلی که میخوام ایجاد کنم رو انتخاب میکنم. از اونجایی که نمیخوام دستگاه های اندرویدی قدیمی رو ساپورت کنم، آپشن ldpi رو از انتخاب در میارم، ولی بقیه رو میذارم بمونه. به علاوه tv dpi هم انتخاب نمیکنم چون مربوط به تلویزیون های اندرویدی است و فکر نمیکنم اپلیکیشن من ربطی به اون دستگاه ها داشته باشه. بعد تصویر اصلی و اورجینال ام رو روی برنامه دراگ میکنم.
و بعد چند ثانیه، همه نسخه های جدید این تصویر، هرکدوم در فولدر ظرفیت پیکسل مربوط به خودش در همون فولدری که سفارشی کرده بودم، ایجاد میشن. میبینید که نسخه xx hdpi، xxx و غیره ایجاد شدن. حالا، میخوام یکی یکی اینها رو باز کنم تا بتونید تفاوتشون رو ببینید. این نسخه xxx، برای نسخه های با ظرفیت پیکسل خیلی بالا است و بعد میرم به نسخه متوسط ظرفیت، و میبینیم که این نسخه 6.3 کیلو بایت هستش در حالی که نسخه با ظرفیت بالا 43 کیلو بایت بود.
پس، واضح هست که تصویر برای ظرفیت کمتر کوچکتر خواهد بود. حالا میخوام این فایل ها رو در پروژه ام کپی کنم. به فولدر images میرم و همه فولدرهای draw able رو انتخاب میکنم، و به کلیپ بورد کپیشون میکنم. بعد برمیگردم به اندروید استودیو و در فولدر منابع یعنی resپاست شون میکنم و وقتی دیالوگ کپی رو میبینم، اوکی رو میزنم تا تایید بشه.
و حالا همه پنج نسخه فایل لوگو من برای ظرفیت های پیکسل مختلف ایجاد شدن. پس، میتونم ورژن اصلی رو دیلیت کنم. این فایل رو انتخاب و دیلیت رو از کیبوردم فشار میدم، و این دیالوگ رو با نام Safe Delete میبینم. اگه این آپشن ها انتخاب شده بودن، از انتخاب درشون بیارید، چون نیازی نیست درمورد کاربرد های دیگه ی این تصویر نگران باشید چرا که این فایل ارجینال رو با همه نسخه های با ظرفیت پیکسل مختلفش جایگزین کردید و روی اوکی کلیک میکنم.
و هنوز اون پنج نسخه مختلفم رو دارم. در اندروید استودیو نصب شده در ویندوز، ممکن هست یک جفت از فایل های thumbs .db رو ببینید. این ها یک جز مصنوعی از ویندوز هستن و بخشی از برنامه اندروید نیستن پس میتونید به همون روش چند لحظه پیش پاکشون کنید و حالا، آماده ام که برنامه ام رو یکبار دیگه اجرا کنم. مثل قبل برنامه رو روی دو تا دستگاه اجرا میکنم. یک گوشی موبایل و یک تبلت. در هر دو دستگاه به صفحه about میرم.
و شما تفاوت قابل توجهی بین دو دستگاه نمیبینید. ولی اگه به دستگاه واقعی تون با چشم انسانی نگاه کنید، ممکن هست رزولوشن ها مختلف روی دو تا دستگاه رو ببینید، هر پیکسل این تصاویر به ازای هر پیکسل از صفحه نمایش تعریف شده و در دستگاه با dpi بالاتر می تونید تصویر تبلت رو هم با کیفیت بالاتری ببینید. درواقع هر دوشون یک تصویر رو نشون میدن با رزولوشن مختلف. و اگه به فایل لایوت برید و ابعاد یا dimensions رو حذف کنید، اینکار سایز تصویر موجود رو تحت تاثیر قرار میده، و بعد در صفحه گوشی تصویر کوچکتر و در صفحه تبلت تصویر بزرگتر بسته به سایز صفحات شون نشون داده میشه.
خب یکبار دیگه این آموزش ویدئویی رو سریع مرور می کنم، این یک مثال از کاربرد ویژه ساخت فولدرهای منابع برای ذخیره نسخه های مختلف از یک فایل بود. یکبار دیگه به ویوی Project ام میرم و بعد میرم سراغ فولدر منابع ام، و نشون تون میدم، چطوری نسخه های تصاویر در فولدرهای draw able مختلف ایجاد میشن، چطوری نسخه های مختلف از لایوت ها ساخته میشن و همچنین چطوری مقادیر ابعاد در ورژن های مختلف از فولدرهای values بازنویسی میشن.