طراحی نوع نمایش فایل های xml برای صفحه های نمایش با اندازه های مختلف (گوشی های مختلف)
زمانی که شما یک برنامه اندروید می سازید، ممکن است آن را بر روی یک شبیه ساز یا یک گوشی اندروید واقعی تست کنید، اما باید توجه داشته باشید که چنانچه برنامه شما بر روی یک گوشی اندروید با اندازه صفحه نمایش متفاوتی اجرا شود، ممکن است ظاهر آن تفاوت داشته باشد و بنابراین کل طراحی شما به هم بریزد. خوشبختانه برای رفع این مشکل، راه حلی در هنگام ساخت پروژه اندروید، در نظر گرفته شده است.
نگاهی به شکل زیر بیندازید (شکلی از پوشه های یک پروژه اندروید) :
در شکل بالا، ما 4 پوشه (folder) را با کادر قرمز رنگ، مشخص کرده ایم، اما اگر دقت کنید، شما در پروژه اندروید خود (در برنامه eclipse)، تنها پوشه با نام layout را دارید. موضوع این است که، پوشه layout که ما در آن، فایل های xml خود برای نمایش ظاهر activity ها را قرار می دهیم، برای گوشی های با اندازه نرمال (normal) مناسب است و چنانچه بخواهیم فایل های xml ، در گوشی های با سایر اندازه های صفحه نمایش نیز به طور مناسب نمایش داده شوند، باید 3 پوشه دیگر را نیز برای پروژه اندروید خود ساخته و سپس از فایل xml مورد نظرمان، به درون هر یک از آنها، کپی کنیم. (اگر تنها فولدر layout موجود باشد، برای همه گوشی ها، فایل های xml موجود در آن، به کاربر نمایش داده می شود)
بنابراین تا اینجا شرح دادیم که علاوه بر پوشه layout ، باید 3 پوشه دیگر نیز بسازیم (با نام ها و موقعیت نمایش داده شده در شکل قبل)، سپس مثلا یک فایل xml را قبلا در پوشه layout ساخته ایم و آن را ویرایش کرده ایم. اکنون برای اطمینان از نمایش صحیح آن در سایر گوشی ها، در هر یک از 3 پوشه دیگر، آن را کپی می کنیم. در نهایت باید فایل های xml درون 4 پوشه را به طور جداگانه باز کنیم و موقعیت عناصر را در آنها تنظیم نماییم.
هر یک از این 4 پوشه، برای یک دسته از گوشی های اندروید با یک محدوده صفحه نمایش مشخص می باشد. مثلا فرض کنید که برنامه اندروید را بر روی یک گوشی با صفحه نمایش بزرگ (large) نصب نماییم، گوشی اندروید، به جای اینکه فایل xml موجود در پوشه layout را به کاربر نمایش دهد، فایل xml موجود در layout-large را نمایش خواهد داد. بنابراین کاربر، طراحی شما برای گوشی اندروید با صفحه نمایش بزرگ (large) را مشاهده می کند و از این بابت، خیال شما آسوده خواهد بود.
اثرگذاری رزولوشن عکس های برنامه اندروید :
قرار دادن عکس در پوشه های drawable مختلف، برای ((رزولوشن)) است، نه ((اندازه صفحه نمایش)). یعنی ما عکس های با رزولوشن مختلف را در پوشه های مختلف قرار می دهیم تا برای یک گوشی با رزولوشن بالا، عکس با رزولوشن بالاتری نمایش داده شود. اما در مواردی که تعیین کرده باشید که اندازه ImageView به اندازه خود محتوای آن (یعنی عکس) وابسته باشد، رزولوشن در نحوه قرارگیری ImageView تاثیر خواهد داشت. در واقع، رزولوشن برای کیفیت مناسب عکس است و زیاد جالب نیست که نحوه قرارگیری عناصر مربوط به عکس را به گونه ای تعیین کنیم که رزولوشن در آنها تاثیرگذار باشد.
بنابراین بهتر است که یک جمع بندی در این زمینه داشته باشیم :
1- در پوشه های layout با نام های مختلف، فایل های xml جداگانه ای را برای ظاهر گرافیکی Activity در گوشی های با ((اندازه صفحه نمایش)) مختلف قرار می دهیم :
res/layout-small/layout.xml
res/layout-large/layout.xml
res/layout-xlarge/layout.xml
res/layout-land/layout.xml
res/layout-small-land/layout.xml
res/layout-large-land/layout.xml
res/layout-xlarge-land/layout.xml
در کدهای بالا، پوشه هایی نیز با پسوند land ساخته ایم، مثلا یک پوشه با نام layout-xlarge-land ساخته ایم که مربوط به گوشی های با اندازه xlarge است که برای زمانی است که گوشی دارای اندازه xlarge بوده و همچنین در حالت افقی (landscape) قرار گرفته باشد (یک یادآوری برای این نکته است که برای هر Activity ، می توانیم یک فایل xml نیز برای زمانی طراحی کنیم که کاربر، گوشی را در حالت افقی (landscape) قرار می دهد)(برای توضیحات بیشتر،