PDA

View Full Version : طول و عرش گوشی های اندرویدی



Apriliyaa
جمعه 12 دی 1393, 18:44 عصر
سلام
تو اکتیویتی من 10 تا دکمه یا همون ImageButton هست که زیر هم قرار گرفته اند

خوستم بدونم اندازه این ImageButton (طول و عرض تصاویر به کار رفته در اونها) باید چقدر باشه تا توی گوشی های اندرویدی مختلف به هم رخته نشون داده نشه؟ دکمه هایی که ساختم همه مستطیلی هستند
با تشکر

hamedg1366
جمعه 12 دی 1393, 22:54 عصر
این بحث نسبتاً گسترده و تکراری هستش تا جای ممکن از تجربیات خودم براتون میگم ؛ لطفا دوستان و اساتید گرامی در صورت اشتباه بودن گوش زد کنن

درحالت عادی Layout به اندازه ی صفحه Resize میشه، البته اندروید با کمک پوشه های drawable امکاناتی برای ما قرار داده که نحوه ی نمایش رو بهتر مدیریت کنید.

پوشه ی drawable برای سایز های مختلف جدا شده (drawable-mdpi, drawable-hdpi...) و تصاویر مورد استفاده در برنامه رو با سایز های مختلف در این پوشه ها قرار میکیرن

مثلا برای برای سایز تصاویر پس زمینه : mdpi 320x480 ؛ hdpi 480x800 ؛xhdpi 640*960 ؛ xxhdpi 960x1440

حالا برای تصاویری که میخوای قرار بدی باید از نسبت استفاده کنی =

mdpi = 4
hdpi = 6
xhdpi = 8
xxhdpi = 12

مثلا اگه عکس رو تو پوشه xxhdpi قرار بدی برای سایز xhdpi ضرب در 8 کن تقسیم بر 12

برای درک بهتر نسبت بندی از دوست خوبم آقای smemamian (http://barnamenevis.org/member.php?249007-smemamian) این نقل قول رو برات میذارم :


دوستان نحوی پوشه بندی درست برای Layoutها حساب کتاب داره، محاسبات داره! چیزی نیست که
هرچی دلتون خواست دقیقاً همان طوری که در ذهن دارید درست دربیاد ! مثلاً شناسه sw-
تقدم به شناسه ی ndpi- داره !
برای مثال گوشی ای رو فرض کنید که عرض 1080 داره و dpi اون 480 هست. حالا می خوایم بفهمیم این از کدوم Layout
تغذیه می کنه :

پس 1080 رو در 160 ضرب می کنیم میشه : 172800

حالا این عدد رو یعنی 172800 در 480 تقسیم می کنیم میشه : 360
پس Layout من باید به این صورت تعریف بشه : layout-sw360dp

حالا این اندازه مشابه هست با layout-xxhdpi. ولی اگه گوشی با ورژن پایین باشه
از xxhdpi تغذیه می کنه واگر گوشی ورژن بالا (Android 3.2) باشه از layout-sw360dp.
نکته بعدی اینه که حتی اگه من layout-sw480dp هم در شاخه بندیم تعریف کنم، گوشی
با چنین عرض، اون رو نمی بینه !

دریافت مثال
(http://uplood.ir/k7HI)
بله گیج کننده است ! چون در بازار گوشی های اندروید گوشی ها تقلبی زیاد هست و
و اگر هم در نظر بگیریم شما 100 درصد همه موارد رو رعایت کردید، ممکنه روی گوشی
چیز عجیب و غریبی ببینید !


نکته بعدی در مورد تصاویر هست، نرخ scaling قبلا بود : 3:4:6:8
دوباره گوگل مستنداتش رو یه چندوقتی هست به روز کرده و به مقادیر جدید معرفی کرده :

3:4:6:8:12:16
که 3 در دیگه مورد استفاده قرار نمی گیره. در مورد این نرخ ها در یک پست گفته بودم :



این فقط بخشی از نحوی پیاده سازی یک Layout خوب بود !!!





همچنین اطلاعات بیشتر رو میتونی از این لینک بدست بیاری (http://stackoverflow.com/questions/12242111/application-skeleton-to-support-multiple-screen)

در آخر بهت پیشنهاد میدم :
برای مشاهده هر چه بهتر از linearlayout ها استفاده کنید و به ویو هاتون weightiبدید.
تا جای ممکن از تصاویر استفاده نکنید.
برای تصاویری که لازمه از patch-9 استفاده کنید.


موفق باشید.