Persian Software Engineers – Telegram
Persian Software Engineers
1.9K subscribers
353 photos
14 videos
84 files
303 links
تجربیات شخصی یک مهندس نرم افزار در آلمان‌.
کانال یوتیوب:
https://www.youtube.com/@Dev_Germany
ادمین کانال :
@mohamad_germany
Download Telegram
توی این جلسه بیشتر قرار هست یک سری توضیحات مرور بشه.
اما توضیحات لازم و مهمی هست.
خب اول بگم که من دیزاین برنامه رو بصورت زیر تغییر دادم.. کار خاصی هم نکردم عکسها رو عوض کردم فقط و به دکمه هام یک مقدار margin دادم تا از هم فاصله بگیرند. اصل کار صفحه شطرنجی زمینه هست که به دلیل خاصی گذاشتم تا چیزی رو نشونتون بدم
Forwarded from Deleted Account
حالا بریم سراغ ادامه درس. در ادامه جلسه قبل میخواهیم روی دیزاین همه بخش ها کار کنیم و بریم در آخر سراغ کد نویسی که احتمالا برای جلسات بعدی خواهد بود. اما اول یک دور میخواهم موضوع پروژه ای که قرار داشتیم رو بگم. من پروژه ای میخواستم در نظر بگیرم که اخرش به Sqlite منتهی شود. یعنی پایگاه داده پیشفرض اندرود. خب چیزی که انتخاب کردم در نهایت یک برنامه است برای ذخیره کردن اطلاعات افراد. مثلا فک کنید دوستانتون. میخواهیم نام و نام خانوادگیشان و تاریخ تولد و چنین چیزهایی را ذخیره کنیم. بعدا بتوانیم در یه listView ببینیم آنها را و همینطور تغییر دهیم یا حذف کنیم . در صفحاتشان به آنها sms یا ایمیل بدهیم، زنگ بزنیم و...همینطور قابلیت سرچ بگذاریم.
خلاصه هر چیزی که شد در این برنامه می گنجانیم. حتی بزور و بی ربط !
مهم اصلا محتوا نیست؛ مهم کدها و نکاتی هست که قرار هست یاد بگیرید چه توی دیزاین چه ابزارها و چه کدنویسی.
خب اول یه نکته ای به شما گفتم اگر یادتان باشد. اینکه این دکمه ها در هرسایز صفحه ای مناسب نیستند. جلسه قبل سایز را دادیم 170 که البته من در این دیزاین جدید سایز را دادم 150.
اما الان همین را ببینید در یک گوشی کوچکتر و یک تبلت:
خب میبینید هم عکس بک گراند که برای همین شطرنجی دادم تا متوجه بشید، شکل بدی پیدا کرده، هم دکمه ها نسبت به صفحه بد شکل شدند.
خب راه هایی هست برای حل اینگونه مسائل. من خورد خورد به شما میگم. ببینید اندروید یک راه خیلیی خووبی برای اینکار در نظر گرفته. اینکه بیاید و برای هر دسته سایز گوشی یک دیزاین جدا انجام بدید. خیلی راحت.
اما چطور؟ ما که یک پوشه Res داریم و یک layout. فقط میایم بازم پوشه layout میسازیم.
البته این رو بگم که اینکار مسلما کار شما رو سخت میکند. اما بسته به استفاده تان دارد. گاها میخواهید یک برنامه ای را برای فروش بسازید مثلا بگذارید توی بازار خب باید کاری کنید هرکسی دانلودش کرد راضی باشد.
گاها اما نه شما برای یک فردی دارید یک برنامه ای مینویسید این فرد هم در نظرش هست که من مثلا یک تبلت دارم 10 اینچ برای من برنامه ات را در این تبلت بگذار. اینطور وقتها خودتان را خسته نکنید برای همان 10 اینچ بزنید.
اما خب من میخواهم روش استاندارد را بگم. روی پوشه ی res راست کلیک کنید و بزنید new و بعد android resource directory
و اسم پوشه تان را بدید layout-land. حالا باید به ازای هر layout ای که در پوشه layout اتان دارید و میخواهید در حالت landscape یک نمایش دیگری داشته باشه اینجا هم یک layout بسازید. دقیقا به همان نام.
مثلا دیدید خیلی برنامه ها را وقتی land میکنید جور دیگری میشود نمایش صفحاتش. چون از نظر عرضی فضای بیشتری خواهید داشت. مثلا نمایش دکمه ها عوض میشود و یا جای ابزارها تغییر میکند و....
الان در همین پوشه layout-land بیاید یک layout به همان نام layout اصلی تان مثلا main.xml بسازید. یک دکمه خالی بندازید فقط که تفاوت را احساس کنید. حالا با گوشی تان تست کنید برنامه را. میبینید که وقتی جهت گوشی عوض شد دیزاین شما هم تغییر میکند.
در نهایت من چکار کردم؟ مثلا دیدید که عکسی که دادم به زمینه برنامم چقد کشیده شده بود. کله کده main.xml اصلی را کپی کردم در اینی که برای land بود اما به جای عکسم، عکس دیگه ای به اسم back2 ساختم و آن را گذاشتم روی زمینه ی این layout.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/back2"
>
خب به همین ترتیب میتوانید برای device ها با سایزهای مختلف هم دیزاین بسازید. مثلا اگه صفحتان خیلی کوچک یا بزرگ هست و... دیزاین هایتان را درست کنید. سایزهایتان را با توجه به سایز گوشی تنظیم کنید و....
به همین ترتیب که آمدیم layout-land را ساختیم پوشه های زیر را هم داریم:
layout-large    4-7 inch
layout-xlarge 7-10 inch (tablet)
layout-small 2-3 inch
layout-normal 3-4(4.5) inch
در همه اینها میتوانید دیزاین های مختلف بگذارید. مثلا الان برای همین دکمه ها که دیدید در دیزاینهای مختلف خراب میشد اندازش نسبت به صفحه. بیاید layout-small رو بسازیم. حالا main.xml را روش راست کلیک کنید و بزنید copy. سپس روی پوشه layout-small راست کلیک کنید بزنید paste. به همین راحتی. فقط کافی هست طول و عرض دکمه هایتان را مثلا بگذارید 120. اگر دستگاه های مختلفی در خونه دارید میتوانید تست کنید.
خب بیاید حالا یک نکته دیگه ای هم بگم. تاحالا دیدید یک عکس با کیفیت بدید به دوستتان که گوشیش مثلا کوچک هست یا رزولوشن کم دارد یا قدیمی هست و.. و عکس شما را باز نکنه؟ حالا همین اتفاق توی برنامه هم میفتد. شما اگر یک عکس با کیفیت بگذارید در صفحه ای از برنامتان دراین صورت گوشی این برنامه را استفاده میکند اگر رزولوشن صفحه اش کم باشد با خطا مواجه میشه برنامه موقع اجرا و از برنامه خارج خواهد شد. البته خود اندروید سعی میکند که درست کند این مشکل را اما گاها ممکن هست باعث پایین آمدن راندمان برنامه تان بشود. یا ممکن هست نتواند اجرا شود و کلا خطا میدهد برنامه. برای اینکار دقیقا همان کاری که کردیم برای layout ها را برای drawable هم میکنیم. یعنی عکسمان را در فتوشاپ یا هرچیزی با سایزهای مختلف میسازیم. سپس آنها را در پوشه هایی با نام drawable عینا میگذاریم با نام یکسان. مثلا یک عکس دارم به اسم photo. یک رزولوشن خوبو عالی ازش میگذارم داخل پوشه ای به نام drawable.hdpi و یک رزولوشن کمتر میگذارم داخل پوشه ای بنام drawable-mdpi. اینطوری راندمان برنامه خیلی میره بالا خواهد رفت.
این اسم گذاریها به ترتیب زیر هستند:
drawable-hdpi  72*72 pixel
drawable-mdpi 48*48 pixel
drawable-ldpi 36*36 pixel
drawable-xhdpi 96*96 pixel
در نهایت یک نکته دیگری داریم. ببینید:
آیکون مزاحمه آن بالا را چطور ببریم! در خود برنامه که هستید یعنی اینتلیجی منظورم هست بالای دیزاین همانجا که یادتان دادم دیوایسها با سایزهای مختلف را تست کنید و یا land کنید و...
آنجا یک ایکون دایره ای هست... در آن میتوانید تم صفحه را انتخاب کنید. لیست را باز کنید تستشان کنید (البته اگر بک گراند نداشته باشید مشخص تر هست تم ها). آنهایی که نوشته noTitlebar و fullscreen این ایکونه را میبرند. اما نه از داخل صفحه برنامه وقتی در حال اجراست. فقط توی خود اینتلیجی دیگر نشانش نمیدهد.