آموزش برنامه نویسی اندروید قسمت هشتم

1395/1/14 ستاره مقاری 3206

با سلام با جلسه هشتم آموزش اندروید در خدمتتون هستم. این جلسه به ادامه پروزه قبل میپردازیم.

من دیزاین برنامه رو بصورت زیر تغییر دادم.. کار خاصی هم نکردم عکسارو عوض کردم فقط و به دکمه­ هام یه مقدار  margin  دادم تا از هم فاصله بگیرن.

آموزش برنامه نویسی در اندروید

خب حالا بریم سراغ ادامه درسمون. در ادامه جلسه قبل میخواهیم رو دیزاین همه بخش ها کار کنیم و بریم در آخر سراغ کد نویسی که احتمالا بشه جلسات بعدی. اما اول یدور میخوام که بیایم موضوعه پروژه رو بگیم. من یه پروژه ای میخواستم در نظر بگیرم که اخرش به 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 اونها این ایکونه رو میبرن. اما نه از توی صفحه برنامه وقتی در حال اجراست. فقط توی خوده اینتلیجی دیگه نشونش نمیده.

برای اینکه ایکون حذف شه برید توی manifest برنامتون. حالا توی اکتیویتی که مال این صفحه هست همونجایی که اومده اسم اکتیویتی رو زده (یعنی همونجا که گفتم بهتون attribute های یه تگ رو میگیم) بیاید اینو بنویسید

   android:theme="@android:style/Theme.NoTitleBar”

کلا کده این اکتیویتی من ینی به شکل زیره:


<activity android:name="MyActivity"
          android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

به همین راحتی.

و اما اخرین نکته. چجوری به برناممون ایکون بدیم؟؟ الان اگه برنامه رو روی گوشی تست کنید بعد برید توی منو ببینید ایکونشو میبینید خودش یه ایکونه اون ادمکه اندرویدو داده.

برای ایکون دادن با همین manifest باید کار کنید .. یه عکس که میخواید ایکونتون باشه رو اد کنید به drawable. مثلا اسم عکس من باشه myicon. (یادتون باشه گفتم اسم عکساتون باید با حروف کوچیک باشه) خب برید توی همون تیکه کده اکتیویتی اصلیتون و همونجا که الان theme رو تنظیم کردید این کدو هم بزنید:

android:icon="@drawable/myicon"

 حالا برنامتون ایکون داره