View Full Version : اجرای برنامه در همه گوشی ها و تبلت ها
keyvan_s89
دوشنبه 05 اسفند 1392, 15:29 عصر
سلام دوستان میدونم این سوال واقعا دیگه تکراری شده اما تویه هیچ کدوم از تاپیک ها به طور کامل جواب داده نشده.
ببینید تا اونجایی که من متوجه شدم باید ایکن های برنامه رو به ترتیب به سایز های زیر قرار داد:
72*72 برای drawable-hdpi
hdpi 48*48 برای drawable-mdpi
mdpi 96*96 برای drawable-xhdpi
114*114 برای drawable-xxhdpi
و از Relativelayout یا linearlayout استفاده کنم و در از dp به جای پیکسل استفاده کنم و از sp هم برای متن.سوالی که من دارم اینه اگه مثلا برای رزولوشن 800*480 طراحی کنم و یه عکس به برنامه اضافه کنم باید این عکس رو با چه سایز های دیگه ای به فولدر های hdpiوmdpi و... اانتقال بدم که درست نشون بده تویه همه رزولوشن ها ؟و آیا باید layout های مختلفی برای هر صفحه نمایش طراحی کرد ؟؟
smemamian
دوشنبه 05 اسفند 1392, 17:38 عصر
قانون 3-4-6-8 رو باید رعایت کنید.
3 = ldpi = که کلاً منسوخ شده است و نیازی نیست.
4 = mdpi
6 = hdpi
8 = xhdpi
اگر عکس شما در فولدر mdpi با سایز 48*48 باشه، و بخواهید برای hdpi در نظر بگیری باید به این روش انجام بدی :
48*6 = 288
288 / 4 = 72.
سایز تصویر شما در hdpi باید 72*72 باشه.
شما دقیقاً نمی دونی سیستم از کدوم drawable برای سایزهای مختلف استفاده می کنه ! سیستم در نظر میگیره کدوم مناسب تر هستش و اون سایز تصویر رو در نظر می گیره(البته نه همیشه).
شما اگه نیاز دارید که توی رزولوشن 480*800 یه لی اوت مختص داشته باشید، باید واسه این سایز هم یه لی اوت در نظر بگیرید درغیر اینصورت سیستم بهترین انتخاب رو برای این رزولوشن در نظر می گیره.
keyvan_s89
دوشنبه 05 اسفند 1392, 19:48 عصر
مرسی. ولی این مثال شما ظاهرا برای ایکن بود درسته ؟ برای عکس ها باید چیکار کرد ؟ اونها رو باید با چه رزولوشنی توی این فولدر ها ذخیره کرد ؟
یه جا خوندم که باید Layout های مختلفی هم طراحی کرد درسته ؟
ببخشید من مبتدیم تویه اندروید . اگه بیشتر توضیح بدید ممنون میشم .:افسرده:
smemamian
دوشنبه 05 اسفند 1392, 20:18 عصر
نه برای تمامی تصاویر بود. شما باید برنامه تون روی یه شبیه ساز mdpi تست کنید، و اگر تصاویر مناسب اون شبیه ساز بود، برای بقیه سایزها هم از قاعده ی بالا که گفته شد استفاده کنید.
keyvan_s89
دوشنبه 05 اسفند 1392, 21:42 عصر
نه برای تمامی تصاویر بود. شما باید برنامه تون روی یه شبیه ساز mdpi تست کنید، و اگر تصاویر مناسب اون شبیه ساز بود، برای بقیه سایزها هم از قاعده ی بالا که گفته شد استفاده کنید.
مثلا اگه یه دونه عکس با ابعاد 74*391 داشته باشم باید 391*6 =2346 بعد 2346 رو تقسیم بر 4 کنم و بزارم تویه hdpi ?
این جوری که خیلی سخته برای هر عکس این مراحل رو طی کنم !؟!
smemamian
دوشنبه 05 اسفند 1392, 22:26 عصر
این روش دل بخواهی من نیست ! این رو مستندات دارند میگن و من هم به همین روش استفاده می کنم.(و باید همه به همین روش عمل کنند)
----------
74*391 توی mdpi مطمئنی بدون مشکل نمایش داده میشه ؟!!!
zarabela
دوشنبه 05 اسفند 1392, 23:25 عصر
یعنی اگه توی هر فولدر عکس با ابعاد مناسب همون بزاریم توی تمام موبایلها و تبلت ها درست اجرا میشه؟
keyvan_s89
دوشنبه 05 اسفند 1392, 23:26 عصر
این روش دل بخواهی من نیست ! این رو مستندات دارند میگن و من هم به همین روش استفاده می کنم.(و باید همه به همین روش عمل کنند)
----------
74*391 توی mdpi مطمئنی بدون مشکل نمایش داده میشه ؟!!!
من این روش رو امتحان نکردم خواستم ببینم اینی که نوشتم درسته ؟ طبق همین فرموله ؟
من قبلا هرچی عکس بور رو میریختم تویه hdpi و بدون مشکل نشون میداد
smemamian
دوشنبه 05 اسفند 1392, 23:30 عصر
بحث نشون دادن یک تصویر نیست. شما حتی اگه توی hdpi هم تصویری رو قرار ندهید بازهم سیستم تصویر رو نشون میده (اگر توی mdpi قرار دهید)! بحث کیفیت تصاویر هستش.
نکته مهم: همیشه در تصاویری که استفاده می کنید از سایزهای زوج استفاده کنید. مثلاً 391 عدد خوبی نیست. یا 390 یا 392.
smemamian
دوشنبه 05 اسفند 1392, 23:37 عصر
یعنی اگه توی هر فولدر عکس با ابعاد مناسب همون بزاریم توی تمام موبایلها و تبلت ها درست اجرا میشه؟
بله (توجه داشته باشید که بحث سر drawableها هست). حتی ما فولدر xxxhdpi هم داریم.
توجه کنید:
ldpi = 0.75
mdpi = 1.0
hdpi = 1.5
xhdpi = 2.0
xxhdpi = 3.0
xxxhdpi = 4.0
شما اگر از کد زیر در برنامه استفاده کردید و خروجی متغییر myscale برابر با 4.0 بود این بدین معنی که برنامه شما در حال حاضر روی گوشی نصب شده که از فولدر xxxhdpi داره استفاده می کنه.
final DisplayMetrics mymetrics = Resources.getSystem().getDisplayMetrics();
myscale= mymetrics.density;
که با همین روش هم شما به صورت programmatically می تونید Screenها مختلف رو مدیریت کنید.
keyvan_s89
دوشنبه 05 اسفند 1392, 23:46 عصر
بله (توجه داشته باشید که بحث سر drawableها هست). حتی ما فولدر xxxhdpi هم داریم.
توجه کنید:
ldpi = 0.75
mdpi = 1.0
hdpi = 1.5
xhdpi = 2.0
xxhdpi = 3.0
xxxhdpi = 4.0
شما اگر از کد زیر در برنامه استفاده کردید و خروجی متغییر myscale برابر با 4.0 بود این بدین معنی که برنامه شما در حال حاضر روی گوشی نصب شده که از فولدر xxxhdpi داره استفاده می کنه.
final DisplayMetrics mymetrics = Resources.getSystem().getDisplayMetrics();
myscale= mymetrics.density;
که با همین روش هم شما به صورت programmatically می تونید Screenها مختلف رو مدیریت کنید.
دوست عزیز خیلی ممنون از راهنماییت الان یه چیزایی یاد گرفتم.
یه برنامه کوچیک ندارید اپلود کنید که همه این مشخصاتی که گفتید توش باشه برای نمونه ؟
smemamian
سه شنبه 06 اسفند 1392, 23:38 عصر
نیازی به برنامه نیست. همه چیز واضحه ولی یه مثال ساده :
دانلود (http://uplod.ir/ihnqr3kn9n37/ex57.zip.htm)
keyvan_s89
چهارشنبه 07 اسفند 1392, 20:15 عصر
نیازی به برنامه نیست. همه چیز واضحه ولی یه مثال ساده :
دانلود (http://uplod.ir/ihnqr3kn9n37/ex57.zip.htm)
مرسی ولی تو این برنامه ای که گذاشتید انگار بسته به این که صفحه نمایش چه چگالی ای داره یه عکس خاص نشون میده درسته ؟
و شامل layout های مختلف نبود که تویه سایز های مختلف هم چک بشه. منظورم فولدر های
layout-small
layout-large
layout-xlarge
تویه یه برنامه کامل باید این فولدر ها هم باشه یا نیازی نیست ؟
من یه نمونه برنامه میخواستم که شامل این layout ها هم باشه ببینم چه جوریه
smemamian
چهارشنبه 07 اسفند 1392, 21:46 عصر
زمانی شما به همچین چیدمانی نیاز دارید که دوست دارید توی هر screen ی طرح بندی متفاوتی داشته باشید بدین معنی که
شما در نظر بگیرید برنامه شما شامل 3 تصویر هست و دوست دارید در mdpi یک عکس دیده بشه و بقیه تصاویر scroll بشن، در
hdpi دو عکس دیده بشه و عکس سومی scroll بشه و در xhdpi سه عکس و...
roboman78
پنج شنبه 18 دی 1393, 17:46 عصر
سلام ببخشید اگه یه لی اوت دیگه در نطر بگیریم بعد عکساشو از کجا باید بگیریم مثلا واسه sw600dp
smemamian
پنج شنبه 18 دی 1393, 17:56 عصر
سلام ببخشید اگه یه لی اوت دیگه در نطر بگیریم بعد عکساشو از کجا باید بگیریم مثلا واسه sw600dp
سلام
به همان روشی که پوشه ی Layout برای sw600dp درست می کنید می توانید پوشه drawable برای sw600dp درست کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.