1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

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

شروع موضوع توسط minaaa ‏10/2/14 در انجمن اندرویید

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : آموزش برنامه نویسی اندروید

    [​IMG] برنامه نویسی

    [h=1]آموزش برنامه نویسی اندروید - قسمت ۱۱: بررسی فولدر res[/h]
    اهداف آموزشی این قسمت عبارتند از:
    1. معرفی فولدر res
    2. روش نامگذاری فولدرهای زیرمجموعه res

    پس از آشنایی با فولدرهای Android و assets و libs و bin در قسمت دهم، در این قسمت قصد داریم تا به بررسی موردی دیگر فولدرهای تشکیل دهندۀ یک اپلیکیشن اندرویدی بپردازیم. پس ادامه مطلب را از دست ندهید.

    [h=3]معرفی فولدر res[/h] در یک کلام، کلیۀ عناصر موجود در یک اپلیکیشن اندرویدی از Layout گرفته تا دیگر عناصر مثل عکس، فایل صوتی، فایل تصویری، انیمیشن، فونت، آیکون و ... در فولدر res قرار خواهند گرفت(واژه res مخفف واژه resources به معنی "منابع" است).

    چنانچه بخواهیم به طور کاربردی عملکرد این فولدر را بررسی کنیم به مثالی اکتفا می کنیم. فرض کنیم شخصی هم دارای یک تلفن همراه اندرویدی دو انیچی است و هم دارای یک تبلت ده اینچی. حال ایشان اپلیکیشن خاصی را تهیه کرده و تمایل دارد که روی هر دو دستگاه نصب کند. زمانیکه وی این اپلیکیشن را روی تلفن همراه خود نصب می کند پیش از نصب سیستم عامل اندروید خصوصیات گوشی را مورد بررسی قرار می دهد و می بیند که این گوشی دارای اندازه ای معادل با دو اینچ است و زبان انتخابی آن فارسی است. اکنون اندروید پس از پی بردن به این اطلاعات اقدام به استفاده از منابع و عناصر متناظر با ویژگی های گوشی خواهد کرد. به عبارت دیگر یکی از فولدرهای زیرشاخه فولدر res مربوط به عکس های مورد استفاده در صفحه نمایش های دو اینچی است از این رو اندروید برای نصب اپلیکیشن از عکس های داخل این فولدر استفاده خواهد کرد. یا از آنجا که زبان انتخابی گوشی زبان فارسی است، از این رو اندروید در حین نصب به فولدری در res مراجعه خواهد کرد که برای زبان فارسی در نظر گرفته شده است.

    به همین منوال پس از نصب اپلیکیشن روی تبلت اندروید خواهد دید که اندازه صفحه نمایش این دستگاه ده اینچ است پس به سراغ فولدری در زیرمجموعه فولدر res خواهد رفت که دارای عکس های بهینه شده برای صفحه نمایش های بزرگ می باشد. از سوی دیگر از آنجا که زبان انتخابی تبلت زبان انگلیسی است، در حین نصب به سراغ فولدری خواهد رفت که معادل انگلیسی کلیۀ واژگان، عبارات و جملات در آن قرار گرفته است.

    نکته ای که در ارتباط به فولدرهای زیرمجموعه res وجود دارد این است که اسامی کلیۀ فولدرهای زیرمجموعه از پیش تعیین شده هستند و ما به عنوان یک توسعه دهنده اپلیکیشن اندرویدی اجازه نداریم تا هر نوع فولدری به هر نامی در فولدر res ایجاد کنیم. مثلاً فرض کنیم که می خواهیم اپلیکیشنی طراحی کنیم که عکس های شخصی ما را نشان دهد. حال نیاز داریم تا تعدادی عکس شخصی را وارد برنامه خود کنیم اما به هیچ وجه اجازه نداریم فولدری تحت عنوان Personal Photos به معنی "عکس های شخصی" بسازیم.

    فولدرهای زیرمجموعه که می توانند در فولدر res قرار گیرند عبارتند از:

    1. فولدری تحت عنوان anim که برای ذخیره سازی انیمیشن در نظر گرفته شده است. واژه anim مخفف واژۀ animation به معنی "انیمیشن" یا "تصویر متحرک" است.

    2. فولدری تحت عنوان color به معنی "رنگ" که برای ذخیره سازی رنگ ها در نظر گرفته شده است.

    3. فولدری تحت عنوان drawable به منظور ذخیره سازی تصاویر، شکل ها و چیزهایی از این دست مورد استفاده قرار می گیرد. فرمت عکس هایی که می توانند در این فولدر قرار گیرند می تواند یکی از فرمت های png یا jpg یا gif یا 9.png باشد.

    4. فولدری تحت عنوان drawable-xhdpi جزو فولدرهایی که به صورت پیش فرض ممکن است در یک اپلیکیشن ایجاد نگردد. این فولدر در حقیقت به عنوان نسخه ای از فولدر drawable است که برای تبلت هایی با صفحه خیلی بزرگ مورد استفاده قرار می گیرد(نکته ای که در ارتباط به نحوه نامگذاری این فولدر می بایست همواره مد نظر قرار گیرد این است که پس از نوشتن نام drawable یک Dash یا خط تیره قرار داده سپس عبارت xhdpi را می نویسیم(فراموش نکنیم که Dash با Underscore فرق دارد و اگر Underscore قرار دهیم با مشکل مواجه می شویم. در واقع با پایین نگه داشتن دکمه Shift در حین زدن دکمه Dash می توانیم Underscore را تایپ کنیم.) حرف x مخفف واژه extra به معنی "خیلی" است. حرف h مخفف واژه high به معنی "زیاد" است. حروف dpi مخفف واژگان Dots per inch به "معنی نقطه در هر اینچ" می باشند).

    5. فولدری تحت عنوان drawable-hdpi به عنوان نسخه ای از فولدر drawable است که برای تلفن ها یا تبلت هایی با صفحه بزرگ مورد استفاده قرار می گیرد(حرف h مخفف کلمه high به معنی "بزرگ" است).

    6. فولدری تحت عنوان drawable-ldpi به عنوان نسخه ای از فولدر drawable است که برای تلفن هایی به اندازه صفحه کوچک(مثلاً دو اینچی) مورد استفاده قرار می گیرد(حرف l مخفف کلمه low به معنی "کوچک" است).

    7. فولدری تحت عنوان drawable-mdpi به عنوان نسخه ای از فولدر drawable است که برای تلفن هایی به اندازه صفحه متوسط مورد استفاده قرار می گیرد(حرف m مخفف کلمه medium به معنی "متوسط" است).

    8. فولدری تحت عنوان layout به منظور ذخیره سازی UI یا همان "رابط گرافیکی کاربر" مورد استفاده قرار می گیرد(به عبارت دیگر همان صفحۀ اصلی اپلیکیشن که پس از اجرا بالا می آید در این فولدر قرار می گیرد).

    9. فولدری تحت عنوان menu به منظور ذخیره سازی منوها مورد استفاده قرار می گیرد(منوها ابزارهایی هستند که با استفاده از دکمه Menu تلفن همراه یا تبلت فرا خوانده می شوند که از طریق گزینه های داخل منو می توان به بخش های مختلف اپلیکیشن رفت).

    10. فولدری تحت عنوان raw که "خام" معنی می دهد به منظور ذخیره سازی فایل هایی از قبیل MP3 . نکته ای که در مورد این فولدر می بایست مد نظر قرار دهیم این است که عناصر داخل این فولدر توسط اندروید Compressed یا فشرده نمی شوند.

    11. فولدری تحت عنوان values به معنی "مقادیر" به منظور ذخیره سازی اسامی، متون و جملات به کار می رود. نکته ای که در مورد نحوه ذخیره سازی این چنین عناصری در فولدر values می بایست همواره مد نظر قرار داده شود این است که فایل های XML که در این فولدر قرار می گیرند می بایست از نامگذاری خاصی که از پیش تعیین شده است پیروی کنند.

    از اینرو برای ذخیره سازی داده هایی از جنس اعداد و کلمات در کنار یکدیگر می بایست فایلی تحت عنوان arrays.xml ایجاد کرده و آن را داخل فولدر values قرار دهیم.

    چنانچه بخواهیم لیستی از رنگ ها داشت باشیم، می توانیم فایلی تحت عنوان colors.xml ایجاد کرده و مقادیر رنگ های مد نظر خود را در آن وارد کنیم.

    چنانچه بخواهیم لیستی از ابعداد و اندازه ها داشته باشیم، می توانیم فایلی تحت عنوان dimens.xml ایجاد کنیم. کلمه dimens مخفف کلمه dimensions به معنی "ابعاد" است. کاربرد این فایل به این شکل است که می توانیم در آن یکسری ابعاد تعریف کرده سپس آنها را در برنامه خود مثلاً برای اندازه یک متن استفاده کنیم.

    چنانچه بخواهیم یکسری کلمه یا عبارت یا نوشته ایجاد کنیم و آنها را در برنامه خود استفاده کنیم می توانیم از فایلی تحت عنوان strings.xml استفاده کنیم. به طور مثال فرض کنیم که می خواهیم اپلیکیشن خود را با نام خدا آغاز کنیم، از اینرو یک string با مقدار In the name of God در فایل strings.xml ایجاد کرده سپس در هر کجای برنامه که بخواهیم می توانیم آن را فرا بخوانیم(لازم به ذکر است کلمه انگلیسی God با کلمه god دارای تفاوت معنایی است. در واقع این کلمه با حرف بزرگ به معنای "خدای یکتا" است در حالیکه کلمه god با حرف کوچک به معنی "الهه" است. مثلاً The god of water به معنی "الهه آب" است).

    چنانچه با HTML آشنایی داشته باشیم می دانیم که برای شکل دادن به ظاهر عناصری که توسط کدهای HTML ایجاد می شوند می توانیم از CSS استفاده کنیم.

    در توسعه اندروید هم چیزی شبیه به CSS تحت عنوان styles.xml وجود دارد. موارد استفاده این style ها ایجاد خصوصیاتی کلی است که با نسبت دادن آن خصوصیات به عنصری در اپلیکیشن دیگر نیاز به تعریف تک تک آن خصوصیات برای هر چیزی در اپلیکیشن نیست.

    اپلیکیشنی که در برگیرندۀ کلیه فولدرها و فایلی های توضیح داده شده در این آموزش باشد به شکل زیر خواهد بود:

    [​IMG]
    پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:

    1. آیا می توان فولدرهای زیرمجموعه فولدر res را به صورت دلخواه نامگذاری کرد؟
    2. عکس ها با چه فرمتی می توانند در یک اپلیکیشن اندرویدی استفاده شوند؟
    3. تفاوت نسخه های متفاوت فولدر drawable در چیست؟
    4. UI اصلی یک اپلیکیشن در کدام فولدر قرار می گیرد؟
    5. معادل CSS در سیستم عامل اندروید چیست؟
    6. تفاوت God با god چیست؟

    در آموزش آتی با نحوه ایجاد فولدرهای زیرشاخه res هم چنین ایجاد فایل های زیرشاخه فولدر values آشنا خواهیم شد.
     
  2. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : آموزش برنامه نویسی اندروید

    [​IMG] برنامه نویسی

    [h=1]آموزش برنامه نویسی اندروید - قسمت ۱۲:نحوه ساخت فولدرها و فایل های جدید در فولدر res[/h]
    اهداف آموزشی این قسمت عبارتند از:
    1. نحوه ایجاد یک فولدر جدید
    2. نحوه ایجاد یک فایل جدید در فولدر values
    3. مقدمات بومی سازی یک اپلیکیشن

    پس از آشنایی با فولدر res در قسمت یازدهم، در این قسمت قصد داریم تا با نحوه ایجاد فولدرهای زیرشاخه res و هم چنین ایجاد فایل های زیرشاخه فولدر values آشنا شویم. علاوه بر این خواهیم فهمید که به چه نحوه می توان یک اپلیکیشن اندرویدی را برای کشورهای مختلف و زبان های مختلف بومی ساخت.

    پس ادامه مطلب را از دست ندهید.

    [h=3]نحوه ایجاد یک فولدر جدید[/h] برای ایجاد فولدرهایی که به صورت پیش فرض در یک اپلیکیشن قرار ندارند به صورتی زیر اقدام می کنیم:

    همانطور که در تصویر اصلی مطلب مشاهده می شود، روی فولدر res کلیک راست نموده سپس روی اولین گزینه از بالا که New است کلیک کرده سپس در پنجره جدیدی که باز می شود گزینه Folder را انتخاب می کنیم. پس از کلیک کردن روی گزینه Folder پنجره زیر باز خواهد شد:

    [​IMG]
    همانطور که در تصویر فوق مشاهده می شود جایی که زیر آن خط قرمز کشیده شده است نشانگر فولدر res داخل پروژه ای است که می خواهیم این فولدر جدید را داخل آن ایجاد کنیم. در بخشی که با بیضی قرمز رنگ مشخص شده است می بایست نام فولدر جدید را وارد کنیم. به طور مثال فرض کنیم که می خواهیم از انیمیشن در اپلیکیشن خود استفاده کنیم. برای این منظور می بایست انیمیشن های خود را در اپلیکیشن ذخیره سازیم که اینکار فقط با ایجاد یک فولدر تحت عنوان anim امکان پذیر است. بنابراین واژه anim را مقابل Folder name به معنی "نام فولدر" نوشته و دکمه Finish را می زنیم.

    [​IMG]
    همانطور که در تصویر فوق مشاهده می شود می بینیم که فولدری تحت عنوان anim زیرشاخه فولدر res ساخته شده و در اولین جایگاه قرار گرفته است. به عبارت دیگر محل قرار گرفتن کلیه فولدرهای زیرشاخه بر اساس حروف الفبای انگلیسی است.

    [h=3]نحوه ایجاد یک فایل جدید در فولدر values[/h] چنانچه بخواهیم یکی از فایل های زیرمجوعه فولدر values را ایجاد کنیم می بایست به صورت زیر عمل نماییم:

    [​IMG]
    همانطور که در تصویر فوق مشاهده می شود، روی فولدر values کلیک راست کرده سپس روی اولین گزینه از بالا که گزینه New است کلیک کرده و در نهایت همانطور که در تصویر با فلش قرمز رنگ نشان داده شده است روی گزینه Android XML File کلیک می کنیم. اکنون پنجره ای به شکل زیر باز خواهد شد:

    [​IMG]
    در تصویر فوق بیضی قرمز رنگ اول نشانگر فولدری است که می خواهیم این فایل جدید در آن ذخیره شود که در این مثال فولدر values مد نظر است. بیضی قرمز رنگ دوم نشانگر پروژه ای است که می خواهیم این فایل XML جدید در فولدر values آن پروژه ایجاد گردد که در اینجا همان پروژه ای که در آموزش هشتم تحت عنوان My First Android Project ایجاد کردیم را انتخاب خواهیم کرد. در جاییکه زیر آن خط قرمز کشیده شده است می بایست نام یکی از انواع فایل های از پیش تعیین شده XML که پیش از این معرفی شدند را بنویسیم. به طور مثال در این آموزش می خواهیم یک فایل arrays که برای ذخیره سازی کلمات و اعداد در کنار یکدیگر استفاده می شود را ایجاد کنیم. نکته ای که در ساخت این فایل ها می بایست مد نظر قرار دهیم این است که نیازی به نوشتن پسوند xml پس از نام فایل نیست چرا که اکلیپس اینکار را به صورت خودکار برای ما انجام خواهد داد. حال می توانیم دکمه Finish را بزنیم.

    به همین ترتیب می توانیم مابقی فایل های XML را نیز در فولدر values ایجاد کنیم:

    [​IMG]
    [h=3]مقدمات بومی سازی یک اپلیکیشن[/h] همانطور که در معرفی فولدر res در آموزش یازدهم مثالی در رابطه با نصب یک اپلیکیشن روی یک تلفن و تبلت زدیم و دیدیم که با تغییر زبان یک دستگاه می توانیم این دستور را به اندروید بدهیم که در حین نصب با توجه به زبان انتخابی از منابع مرتبط با آن زبان استفاده کند. برای روشن تر شدن این مسئله به مثال زیر توجه نمایید:

    در این قسمت خواهیم دید که به چه سادگی می توان تنظیمات این کار را انجام داد. برای این منظور نیاز است تا با Language ISO Code ها یا به عبارتی با "کد بین المللی زبان های مختلف" آشنایی داشته باشیم. برای مثال کد زبان فارسی fa است و کد زبان آلمانی de است. در حقیقت برای آنکه این دستور را به اندروید بدهیم که به محض تغییر زبان تلفن همراه یا تبلت از منابع مرتبط با آن زبان در اجرای اپلیکیشن استفاده کند، می بایست منابعی متناظر با همان زبان در فولدر res ایجاد کنیم.

    [​IMG]
    همانطور که پیش از این در همین قسمت از آموزش نحوه ساخت یک فولدر جدید آموزش داده شد، یک فولدر جدید برای ذخیره عکس های مرتبط به زبان فارسی تحت عنوان drawable-fa و یک فولدر دیگر تحت عنوان drawable-de برای ذخیره سازی عکس های مرتبط با زبان آلمانی ایجاد می کنیم. در تصویر فوق این دو فولدر با بیضی سبز زنگ مشخص شده اند. همانطور که قبلاً گفته شد فولدر values مسئول ذخیره سازی چیزی های زیادی است که یکی از آنها اسامی، متون و جملات است. حال برای آنکه به محض تغییر زبان تلفن همراه یا تبلت کلیه جملات هم به آن زبان تبدیل شوند می بایست فولدر های متناظر با این دو زبان فارسی و آلمانی نیز ساخته شود. همانطور که در تصویر فوق با یک بیضی قرمز رنگ مشخص شده است، یک فولدر تحت عنوان values-fa برای ذخیره سازی اسامی، عبارات و جملات فارسی و یک فولدر دیگر تحت عنوان values-de برای ذخیره سازی اسامی، عبارات و جملات آلمانی ایجاد شده است.

    به عنوان نکته پایانی بایستی گفت که اگر منابع مرتبط با زبانی در اپلیکیشن ما موجود نباشد مثلا فولدرهای drawable-de و values-de در پروژه ما وجود نداشته باشند، در حین اجرا اپلیکیشن از فولدرهای پیش فرض که همان drawable و values می باشند برای زبان آلمانی استفاده خواهد کرد.

    در حقیقت این توضیحات صرفاً مقدمه ای بر بومی سازی یک اپلیکیشن بوده و مسلماً پس از آنکه مهارت ما در توسعه اندروید کمی بیشتر شد، حتماً به توضیحات بیشتری پیرامون محتویات این فولدر ها و نحوه اعمال تغییرات بر اساس زبان انتخابی خواهیم پرداخت.

    پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
    1. به چه شکل می توان یک فولدر جدید در زیرشاخه فولدر res ایجاد کرد؟
    2. نحوه ایجاد یک فایل XML به چه شکل است؟
    3. اولین گام در بومی سازی یک اپلیکیشن چیست؟

    در آموزش آتی با دو فایل بسیار مهم در توسعه اندروید آشنا خواهیم شد که عبارتند از: AndriodManifest.xml و project.properties
     
  3. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : آموزش برنامه نویسی اندروید

    [​IMG] برنامه نویسی

    [h=1]آموزش برنامه نویسی اندروید- قسمت ۱۳: بررسی دو فایل بسیار مهم در توسعه اپلیکیشن[/h]
    [h=3]اهداف آموزشی این قسمت عبارتند از:[/h] 1. معرفی فایل AndroidManifest.xml
    2. آشنایی با Version Code
    3. آشنایی با Version Name
    4. معرفی فایل project.properties

    پس از آشنایی با Android Building Blocks یا همان "آجرهای تشکیل دهندۀ یک اپلیکیشن اندرویدی" طی قسمت های نهم و دهم و یازدهم، در این قسمت از آموزش قصد داریم تا دو فایل بسیار مهم در توسعه اندروید را معرفی کنیم.

    ادامه مطلب را از دست ندهید.

    [h=3]معرفی فایل AndroidManifest.xml[/h] هر اپلیکیشن می بایست دارای فایلی تحت عنوان AndroidManifest.xml در دایرکتوری اصلی خود که همان Root Directory است باشد(به حروف کوچک و بزرگ در نام این فایل توجه کنید). برای درک بهتر Root Directory به تصویر زیر توجه کنید:

    [​IMG]
    در تصویر فوق این فایل با یک بیضی قرمز رنگ نشان داده شده است. جاییکه فلش قرمز رنگ قرار گرفته است نشانگر Root Directory یا همان "دایرکتوری اصلی" اپلیکیشن است. به عبارت دیگر تنها جاییکه این فایل می تواند قرار گیرد زیرشاخه همین دایرکتوری است که اگر جای این فایل تغییر یابند اپلیکیشن به هیچ وجه کار نخواهد کرد.

    در واقع پس از کلیک کردن روی نام این فایل، پنجره مربوط به آن در محیط اکلیپس باز می شود:

    [​IMG]
    همانطور که در تصویر فوق نشان داده شده است پس از باز کردن فایل Manifest در قسمت پایین پنجره مربوط به این فایل پنج Tab مجزا از یکدیگر دیده می شود. کلیه این Tab ها به جز Tab یی تحت عنوان AndroidManifest.xml که در تصویر فوق با یک فلش قرمز رنگ نشان داده شده است دارای یک محیط گرافیکی هستند و این در حالی است که این محیط گرافیکی تا حدودی اعمال تغییرات در فایل Manifest را برای توسعه دهندگان مبتدی آسان ساخته است. به طور مثال در تصویر فوق Tab مربوط به Manifest باز است و در قسمت فوقانی این Tab اطلاعت مربوط به پیکج و Version Code و غیره دیده می شود. به طول مثال با تغییر Version Code از عدد 1 به عدد 2 بدون نیاز به کد نویسی می توان Version Code را آپدیت کرد(در ادامه همین آموزش با Version Code بیشتر آشنا خواهیم شد).

    اکثر برنامه نویسان حرفه ای با حالت نمایش XML یی این فایل کار می کنند. در واقع با کلیک کردن روی Tab مرتبط با AndroidManifest.xml محتویات این فایل برای پروژه ای که در آموزش هشتم تحت عنوان My First Android Project ساختیم به شکل زیر نمایش داده خواهد شد:



    • <?xml version="1.0" encoding="utf-8"?>
    • <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    • package="com.behzadmoradi.mainpackage"
    • android:versionCode="1"
    • android:versionName="1.0" >
    • <uses-sdk android:minSdkVersion="7" />
    • <application
    • android:icon="@drawable/ic_launcher"
    • android:label="@string/app_name" >
    • <activity
    • android:name=".MainActivity"
    • android:label="@string/app_name" >
    • <intent-filter>
    • <action android:name="android.intent.action.MAIN" />
    • <category android:name="android.intent.category.LAUNCHER" />
    • </intent-filter>
    • </activity>
    • </application>
    • </manifest>

    کاری که این فایل انجام می دهد این است که اطلاعاتی کلی پیرامون اپلیکیشن طراحی شده در سیستم اندروید می دهد. به عبارت دیگر، این فایل Component هایی را که ما در برنامه خود مورد استفاده قرار داده ایم را به سیستم عامل اندروید معرفی می کند. از سوی دیگر این فایل Permission ها یا "مجوزهایی" که کاربر برای نصب برنامه می بایست صادر کند را نیز در بر می گیرد. فرض کنیم که برنامه ای طراحی کرده ایم که نیاز به دسترسی به اینترنت دارد. حال اگر کسی بخواهد این برنامه طراحی شده توسط ما را مورد استفاده قرار دهد، مجبور است در حین نصب اجازه دسترسی به اینترنت را به این اپلیکیشن صادر کند.

    همانطور که در آموزش اول توضیح داده شد، سیستم عامل اندروید دارای نسخه های مختلفی است. چنانچه ما برنامه ای طراحی کنیم که برای مثلا نسخه Gingerbread یا نسخه 3.0 طراحی شده باشد، این حداقل نسخه مورد نیاز برای اجرای این اپلیکیشن یا همان Minimum SDK در فایل Manifest ذکر خواهد شد و چنانچه کاربری که سیستم عامل اندروید وی پایین تر از نسخه 3.0 باشد بخواهد برنامه طراحی شده ما را استفاده کند در حین نصب فایل Manifest این مسئله را خواهد فهمید و از نصب برنامه جلوگیری به عمل خواهد آورد. در واقع در کد فوق دستور android:minSdkVersion="7" حداقل SDK مورد نیاز اپلیکیشن را مشخص کرده است.

    مواردی دیگری علاوه بر موارد فوق نیز در این فایل مشاهد می شود که در ذیل به آنها اشاره می کنیم:

    نامی که برای پکیج اپلیکیشن مورد استفاده قرار دادیم در این فایل قرار گرفته است. علت قرار گرفته نام پکیج در فایل Manifest این است نام این پکیج به منزلۀ یک معرف منحصر به فرد از اپلیکیشن برای سیستم عامل اندروید می باشد. همانطور که در کد فوق مشاهده می شود package="com.behzadmoradi.mainpackage" نشانگر نام پکیجی است که کلیه کلاس های جاوای اپلیکیشن در آن قرار گرفته اند.

    کلیۀ Activity ها و Service های به کار گرفته شده در اپلیکیشن که تحت عنوان Component های اپلیکیشن شناخته می شوند نیز در این فایل معرفی می شوند. در کد فوق خطی که حاوی android:name=".MainActivity" می باشد تنها Activity یی که در حین ساخت پروژه تعریف کردیم را نشان می دهد.

    علاوه بر موارد فوق، فایل Manifest اطلاعاتی پیرامون نسخه اپلیکیشن ما به کاربران نیز ارائه می دهد. اگر در حین دانلود یا نصب اپلیکیشن های اندروید توجه کرده باشید، دیده اید که Version یا نسخه اپلیکیشن مد نظر به کاربران اطلاع داده می شود(مثلاً نسخه 4 اپلیکیشن). به طور کلی می توان گفت که هر اپلیکیشن اندروید دارای یک Version Code و یک Version Name است.

    [h=3]آشنایی با Version Code[/h] منظور از Version Code یک عدد است و کاربرد این عدد برای کاربران اپلیکیشن نیست بلکه برای Google Play است تا از طریق این عدد از یک سو خود اپلیکیشن را شناسایی کند و از سوی دیگر آپدیت های اپلیکیشن را پیگیری کند. به عبارت دیگر کاربران به هیچ وجه این کد را مشاهده نخواهند کرد. نکته ای که برای تعیین شماره Version Code همواره می بایست مد نظر قرار داد این است که این شماره از هر عددی می تواند شروع شود اما همواره پس از آپدیت کردن اپلیکیشن این عدد می بایست نسبت به نسخه قبلی عدد بزرگ تری باشد. به طور مثال اگر نسخه اول اپلیکیشن دارای Version Code یی معادل با 1 بود نسخه بعدی پس از آپدیت توسط توسعه دهنده اپلیکیشن می بایست مثلا معادل با 2 باشد.

    به منظور درک بهتر این مسئله سناریوی زیر را در نظر می گیریم:

    فرض کنیم که ما یک اپلیکیشن طراحی کرده و Version Code آن را معادل با 1 قرار داده ایم و آن را از طریق Google Play در دنیا منتشر می کنیم. پس از مدتی مشخص می شود که اپلیکیشن ما پس از 20 دقیقه کار کردن Crash می کند. بنابراین سعی می کنیم نواقص اپلیکیشن را رفع کرده، مجدد آن را Compile می کنیم و آن را در Google Play مجدد منتشر می کنیم. نکته ای که فراموش کرده ایم پس از رفع نواقص اپلیکیشن آپدیت کنیم Version Code اپلیکیشن مان است. در واقع پس از آنکه نسخه اصلاح شده را در Google Play منتشر کردیم Google Play متوجه نخواهد شد که ویرایش جدید اپلیکیشن روی سرور اش قرار گرفته از اینرو به کاربرانش که این اپلیکیشن را دانلود کرده اند نمی تواند اطلاع رسانی کند که نسخه جدید و اصطاح شده اپلیکیشن را مجدد دانلود کنند. اما اگر Version Code را به عدد 2 تغییر دهیم این مسئله به اطلاع Google Play خواهد رسید و بالتبع کاربرانی که از این اپلیکیشن استفاده می کنند نیز از آپدیت اپلیکیشن مطلع خواهند شد.

    همانطور که در کد فوق ملاحظه می شود دستور android:versionCode="1" نشانگر نسخه یک اپلیکیشن ما است که در اختیار Google Play قرار می گیرد.

    [h=3]آشنایی با Version Name[/h] به طور کلی Version Name نامی است برای رویت کابرانی است که اپلیکیشن را دانلود می کنند. نحوه نامگذاری Version Name می تواند بر اساس استراتژیی باشد که توسعه دهندۀ اپلیکیشن برای اپلیکیشن هایش در نظر می گیرد. به طور مثال می توان Version Name را بر اساس تاریخ انتشار اپلیکیشن در نظر گرفت.

    در کد فوق دستور android:versionName="1.0" نشانگر کد 1.0 است که به کاربران نشان داده می شود.

    [h=3]معرفی فایل project.properties[/h] این فایل نیز همانند فایل Manifest از اهمیت زیادی در اجرای اپلیکیشن برخوردار است. یکی از دلایل اصلی وجود این فایل در یک اپلیکیشن ایجاد ارتباط مابین اپلیکیشن، اکلیپس و ADT می باشد(برای آشنایی بیشتر با ADT به آموزش هفتم راجعه نمایید). از جمله اطلاعات مهمی که در این فایل قرار می گیرد Target SDK است(نام دیگر Target SDK عبارت Build SDK است). همانطور که در آموزش های پیشین توضیح داده شد Target SDK مشخص می کند که ما اپلیکیشن خود را برای کدام نسخه از سیستم عامل اندروید می سازیم. در واقع زمانیکه در آموزش هشتم ما اولین پروژه خود را در اکلیپس تحت عنوان My First Android Project ساختیم، نسخه سیستم عامل مد نظر یا همان Target SDK یا نسخه 2.1 انتخاب کردیم. حال اطلاعات مربوط به Target SDK در این فایل ذخیره شده اند.

    نکته ای که در ارتباط با این فایل بسیار مهم است این است که این فایل به هیچ وجه نمی بایست بر خلاف فایل Manifest به صورت دستی ویرایش شود. برای ویرایش این فایل می بایست مطابق تصویر زیر عمل کرد:

    [​IMG]
    همانطور که در تصویر فوق نشان داده شده است، روی نام پروژه ای که ساخته ایم کلیک راست نموده سپس همانطور که با فلش قرمز رنگ نشان داده شده است روی آخرین گزینه از پنجره ای باز می شود یا همان گزینه Properties کلیک می کنیم و پنجره ای به صورت زیر باز خواهد شد:

    [​IMG]
    پروژه ای که در قسمت هشتم ساختیم و در آن نسخه 2.1 را به عنوان Target SDK مبنا قرار دادیم را مجدد مد نظر قرار می دهیم:

    [​IMG]
    همانطور که در تصویر فوق مشخص شده است، فولدر مربوط به Library های همان نسخه ای از Target SDK که در حین ساخت پروژه انتخاب کردیم وارد اپلیکیشن شده است. حال فرض کنیم که نسخه اندروید 2.1 پاسخگوی نیازهای ما نیست و قابلیت هایی را که مد نظر ما است تا در اپلیکیشن استفاده کنیم را ساپورت نمی کند و می بایست از نسخه های جدیدتر سیستم عامل اندروید مثل نسخه 3 تحت عنوان Honeycomb به معنی "شانه عسل" استفاده کنیم.

    از آنجا که می دانیم اطلاعات مربوط به Target SDK در فایل project.properties ذخیره می شود، همانطور که در قسمت بالا توضیح داده شد این فایل را باز کرده و مطابق تصویر زیر نسخه Target SDK را ارتقاء می دهیم:

    [​IMG]
    پس از کلیک روی گزینه Properties همانطور که در تصویر فوق با فلش قرمز رنگ نشان داده شده است روی گزینه Android کلیک کرده سپس از ستون سمت راست گزنیه مرتبط با اندروید نسخه 3.0 را انتخاب نموده و دکمه OK را می زنیم(لازم به ذکر است نسخه هایی از SDK اندروید در این لیست نمایش داده می شوند که در حین آماده سازی محیط برنامه نویسی اکلیپس دانلود کرده و به اکلیپس معرفی کرده ایم).

    [​IMG]
    اکنون همانطور که در تصویر فوق مشاهده می شود Library مرتبط با نسخه سیستم عامل اندروید 3.0 وارد پروژه شده و از این پس خواهیم توانست از قابلیت های معرفی شده در نسخه 3.0 در طراحی اپلیکیشن خود استفاده کنیم.

    پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
    1. مکان قرارگیری فایل AndroidManifest.xml کجا است؟
    2. چه اطلاعاتی در فایل Manifest قرار می گیرند؟
    3. نحوه نامگذاری Version Code به چه شکل است؟
    4. کاربرد Version Code چیست؟
    5. کاربرد Version Name چیست؟
    6. نحوه تغییر نسخه اندروید یک اپلیکیشن به چه شکل است؟
    7. آیا می توان فایل project.properties را به صورت دستی ویرایش کرد یا خیر؟
    در آموزش آتی با نحوه بهینه سازی اپلیکیشن برای ساپورت دستگاه هایی با اندازه صفحه نمایش متفاوت آشنا خواهیم شد.
     
  4. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : آموزش برنامه نویسی اندروید

    [​IMG] برنامه نویسی

    [h=1]آموزش برنامه نویسی اندروید - قسمت ۱۴: طراحی Layout برای دستگاه هایی با اندازه صفحه متفاوت[/h]
    [h=3]اهداف آموزشی این قسمت عبارتند از:[/h] 1. معرفی Size و Density
    2. معرفی کلیۀ فولدرهای پیش فرض layout

    ادامه مطلب را از دست ندهید.

    [h=3]معرفی Size و Density[/h] صفحه دستگاه هایی که به سیستم عامل اندروید مجهز می باشند دارای دو خصوصیت کلی تحت عناوین Size به معنی "اندازه" و Density به معنی "تراکم" می باشند. در واقع یک اپلیکیشن موفق به اپلیکیشنی می توان گفت که روی دستگاه هایی با Size ها و Density های متفاوت نصب شده و کار کند. بنابراین ما به عنوان یک توسعه دهنده اندروید می بایست منابع متفاوتی را در اپلیکیشن خود استفاده کنیم تا بتوانیم اپلیکیشن خود را برای هر دستگاهی بهینه سازیم.

    به طور کلی چهار Size کلی در رابطه با دستگاه های اندرویدی وجود دارد که عبارتند از: Small به معنی "کوچک"، Normal به معنی "معمولی"، Large به معنی "بزرگ" و Xlarge به معنی "خیلی بزرگ".

    در حقیقت منظور از Size یک دستگاه، اندازه دستگاه از گوشۀ سمت چپ پایین تا گوشۀ سمت راست بالای صفحه نمایش بر حسب اینچ می باشد. برای روش تر شدن مطلب به تصویر اصلی مطلب دوباره توجه کنید.

    در حقیقت در تصویر فوق از نقطۀ شماره یک تا نقطۀ شماره دو 4.2 اینچ فاصله است.

    در آموزش دوازدهم دیدیم که برای اینکه بتوانیم منابعی برای زبان های مختلف داشته باشیم می بایست فولدرهای مجزایی برای زبان های مختلف ایجاد کنیم. در اینجا نیز قضیه به همین شکل است. در واقع برای آنکه بتوانیم اپلیکیشنی طراحی کنیم که در دستگاه هایی با اندازه صفحه متفاوت بهینه شده باشد، می بایست فولدرهای مجزایی متناظر با اندازه های تعریف شده در سیستم عامل اندروید برای صفحه های مختلف ایجاد نماییم.

    به عنوان مثال برای ذخیره سازی تصاویری برای دستگاه هایی با صفحه نمایشی با Density بسیار زیاد می توانیم فولدری تحت عنوان drawable-xhdpi در پروژه خود ایجاد کنیم.

    علاوه بر این به خاطر داشته باشیم که Screen Orientation به معنی "جهت قرارگیری صفحه" که می تواند Landscape یا"افقی" یا Portrait یا "عمودی" نیز می تواند به نوعی اندازه صفحه محسوب شوند. به عبارت دیگر می توانیم اپلیکیشن خود را طوری طراحی کنیم که شکل ظاهری اپلیکیشن ما در حالت های Landscape و Portrait بهینه باشد(لازم به ذکر است که واژه Landscape در فارسی به معنی "چشم انداز" می باشد و واژه Portrait به معنی "تصویر صورت" است اما از آنجا که این واژگان در صنعت عکاسی دیجیتال به حالت های به ترتیب افقی وعمودی عکس گفته می شود این معانی را در طول دوره لحاظ خواهیم کرد).

    [h=3]معرفی کلیۀ فولدرهای پیش فرض layout[/h] به منظور بهینه سازی اپلیکیشن خود برای اندازه های صفحه متفاوت نیاز است تا برای هر اندازه صفحه که می خواهیم اپلیکیشن ما برای آن اندازه بهینه شود یک فایل XML ایجاد کنیم(همانطور که قبلاً توضیح داده شده است UI یا همان رابط گرافیکی کاربر توسط XML ایجاد می شود). به عبارت دیگر هر Layout که با XML ایجاد می شود می بایست داخل یک فولدر مرتبط با اندازه مد نظر که اسامی آنها از پیش در سیستم عامل اندروید تعریف شده است قرار گیرد.

    برای روشن شدن مطلب، در پروژه ای که در قسمت هشتم تحت عنوان My First Android Project ایجاد کردیم اقدام می کنیم به ایجاد کلیۀ فولدر های لازم برای ساپورت کردن اندازه های صفحه متفاوت در دستگاه های مختلف به طوریکه پس از تکمیل اینکار پروژه ما به شکل زیر خواهد بود:

    [​IMG]
    همانطور که در تصویر فوق مشاهده می شود، فولدرهایی که برای اندازه های متفاوت صفحه نمایش ایجاد شده اند از شماره یک تا هشت شماره گذاری شده اند. به طول کلی فولدر شماره یک یا همان فولدر layout به طور پیش فرض برای حالت Portrait توسط اندروید مورد استفاده قرار می گیرد. فولدر شماره دو یا layout-land برای حالت Landscape مورد استفاده قرار می گیرد. فولدر شماره سه یا layout-large برای دستگاه هایی با صفحه بزرگ در حالت Portrait استفاده می شود. فولدر شماره چهار یا layout-large-land برای دستگاه هایی با صفحه بزرگ در حالت Landscape استفاده می شود. فولدر شماره پنج یا layout-normal برای دستگاه هایی با اندازه صفحه نرمال مورد استفاده قرار می گیرد. فولدر شماره شش یا layout-small برای دستگاه هایی با اندازه صفحه کوچک مورد استفاده قرار می گیرد. فولدر شماره هفت یا layout-xlarge برای دستگاه هایی با صفحه بزرگ در حالت Portrait مورد استفاده قرار گرفته و در نهایت فولدر شماره هشت یا layout-xlarge-land برای دستگاه هایی با صفحه نمایش بسیار بزرگ در حالت Landscape مورد استفاده قرار خواهد گرفت.

    به طور خلاصه، با قرار دادن فایل های مختلف XML مرتبط با UI در هر یک از این فولدرها، در حین اجرای اپلیکیشن بسته به اندازه صفحه نمایش دستگاه، سیستم عامل اندروید از منبع متناظر با آن دستگاه برای اجرای اپلیکیشن استفاده خواهد کرد. اما نکته ای که در اینجا حائز اهمیت است این است که نام فایل XML که در کلیۀ این فولدر ها قرار می گیرد برای یک Activity خاص می بایست یکی باشد. برای روشن شدن این مسئله به پروژه ای که در جلسه هشتم ساختیم رجوع می کنیم:

    [​IMG]
    زمانیکه پروژه ای در محیط برنامه نویسی اکلیپس می سازیم، اکلیپس به طور خودکار یک فایل XML در فولدر layout می سازد و این فایل مرتبط با همان Activity یی است که در حین ساخت یک پروژه جدید ایجاد می کنیم. به عبارت دیگر در پروسه ساخت My First Android Project در جلسه هشتم یک Activity تحت عنوان MainActivity ساختیم. محیط برنامه نویسی اکلیپس به طور خودکار فایلی در داخل فولدر layout تحت عنوان main.xml ساخته و آن را به MainActivity مرتبط ساخته است. در واقع پس از اجرای این اپلیکیشن خواهیم دید که تنها Activity اپلیکیشن ما که MainActivity است پس از اجرای برنامه فایل main.xml را فراخواهد خواند.

    پس از توضیح پیرامون این موضوع حال روشن است که اگر بخواهیم این اپلیکیشن را که فقط و فقط دارای یک Activity است را روی دستگاه هایی با اندازه های صفحه متفاوت اجرا کنیم و از سیستم عامل اندروید بخواهیم که با توجه به اندازه صفحه نمایش دستگاهی که اپلیکیشن روی آن اجرا می شود به فولدر مرتبط با اندازه آن صفحه نمایش رجوع کند، می بایست نام فایل XML قرار گرفته در هر یک از این فولدرها برای MainActivity یکسان باشد. علت این مسئله هم آن است که در حقیقت MainActivity یک کلاس جاوا است و در این کلاس ما به یک فایل XML لینک داده ایم که نامش main.xml است. حال اگر نام این فایل XML در فولدرهای مختلف یکسان نباشد، در حین اجرای برنامه سیستم عامل اندروید فایل هایی با نام های دیگر را پیدا نکرده و مجبور است که از فولدر پیش فرض که همان فولدر layout است استفاده کند.

    پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
    1. منظور از اندازه یک دستگاه چیست؟
    2. چند اندازه کلی برای دستگاه های اندرویدی وجود دارد؟
    3. منظور از Screen Orientation چیست؟
    4. آیا برای بهینه سازی یک اپلیکیشن می توان هر نام دلخواهی را مد نظر قرار داد؟
    5. نحوه نامگذاری فایل های داخل فولدرهای مختلف به چه شکل است؟
    6. چنانچه برای یک Activity فایل XML یی با نام های مختلف در فولدرهای مختلف در نظر بگیریم با چه مشکلی مواجه خواهیم شد؟

    در آموزش آتی با مفهوم Density و همچنین بهینه سازی یک اپلیکیشن برای صفحه های نمایشی با میزان تراکم متفاوت آشنا خواهیم شد.
     
  5. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : آموزش برنامه نویسی اندروید

    [​IMG] برنامه نویسی

    [h=1]آموزش برنامه نویسی اندروید - قسمت ۱۵: طراحی Layout برای دستگاه هایی با تراکم پیکسلی متفاوت‎[/h]
    اهداف آموزشی این قسمت عبارتند از:
    1. معرفی Density
    2. بررسی نسبت مابین صفحه نمایش هایی با Density متفاوت
    3. تقسیم بندی دستگاه های موجود در بازار بر حسب Size و Density

    ادامه مطلب را از دست ندهید.

    در رابطه با Density نیز چهار دسته کلی وجود دارد که عبارتند از: Low(ldpi) به معنی "کم"، Medium(mdpi) به معنی "متوسط"، High(hdpi) به معنی "زیاد" و Extra high(xhdpi) به معنی "خیلی زیاد".

    به عبارت دیگر Density حاکی تعداد پیکسل هایی است که در یک اینچ از صفحه نمایش قرار می گیرند. در واقع هرچه تعداد پیکسل ها در هر اینچ بیشتر باشند بالتبع رزولوشن صفحه بیشتر بوده و دستگاه از کیفیت نمایش بیشتری برخوردار خواهد بود.

    از آنجا که سیستم عامل اندروید روی دستگاه های متفاوتی با صفحه نمایش هایی با Density متفاوت اجرا می گردد، این نکته ضروری به نظر می رسد که تصاویر و شکل های مورد استفاده در اپلیکیشن خود را برای صفحه نمایش هایی با میزان Density متفاوت بهینه سازیم. برای این منظور اولین پروژه خود که در قسمت هشتم تحت عنوان My First Android Project را مد نظر قرار می دهیم.

    پس از باز کردن این پروژه خواهیم دید که فقط فولدر های drawable-ldpi و drawable-mdpi و drawable-hdpi در زیرشاخه فولدر res قرار دارند.

    همانطور که در قسمت دوازدهم آموزش داده شد، اقدام به ساخت دو فولدر دیگر تحت عناوین drawable و drawable-xhdpi می کنیم. با مد نظر قرار دادن تصویر فوق می توان گفت که فولدر شماره یک یا همان فولدر drawable به عنوان فولدر پیش فرض است. در واقع اگر ما در طراحی اپلیکیشن خود فقط و فقط همین یک فولدر را داشته باشیم، اپلیکیشن ما خواهد توانست روی کلیۀ دستگاه ها با صفحه نمایش هایی با Density متفاوت اجرا گردد. فرض کنیم که اپلیکیشن خود را روی یک تبلت ده اینچی نصب می کنیم. در حین اجرای اپلیکیشن، سیستم عامل اندروید متوجه می شود که اپلیکیشن روی یک دستگاه به اصطلاح xhigh یا بسیار بزرگ نصب شده است از این رو در دایرکتوری res به دنبال فولدری تحت عنوان drawable-xhdip می گردد و اگر این فولدر را بیابد مسلماً اقدام به فراخوانی تصاویر و شکل های به کار گرفته شده در UI از این فولدر خواهد کرد و در صورتیکه این فولدر را پیدا نکند به فولدر پیش فرض که همان فولدر drawable است رجوع خواهد کرد و تصاویر و شکل ها را از داخل این فولدر استفاده خواهد کرد. دانستن نکته ای که در اینجا حائز اهمیت است این است که حتی اگر تصاویر و شکل های قرار گرفته داخل فولدر drawable کوچک و کم کیفیت هم باشند، باز هم اندروید آنها را برای تبلت مان استفاده کرده به این صورت که تصاویر و شکل های داخل این فولدر را به صورت خودکار بزرگ می کند. عکس این قضیه هم می تواند اتفاق افتد به این صورت که اگر ما اپلیکیشن خود را روی یک تلفن همراه دو اینچی نصب کنیم و در عین حال فولدر drawable-ldpi که مخصوص صفحه نمایش هایی با Density پایین است را در پروژه خود تعریف نکرده باشیم، اندروید باز هم به فولدر پیش فرض رجوع کرده و اگر تصویر یا شکل مد نظر برای این دستگاه مناسب باشد که آن را استفاده می کند و چنانچه تصویر یا شکلی برای این صفحه نمایش بزرگ باشد اندروید به صورت خودکار آن را کوچک می کند(معمولاً در پروسه کوچک کردن تصاویر و اشکال توسط اندروید افت کیفیت پیدا نمی شود).

    این یکی از قابلیت های بسیار مفید سیستم عامل اندروید است که فقط با قرار دادن تصاویر خود داخل یک فولدر پیش فرض می تواند خیالمان راحت باشد که با نصب اپلیکیشن روی هر دستگاهی با هر Density صفحه نمایش اپلیکیشن اجرا خواهد شد اما این در حالی است که چنانچه بخواهیم یک اپلیکیشن حرفه ای طراحی کنیم می بایست برای هر دستگاهی با هر Density صفحه نمایش یک منبع اختصاصی تعریف کنیم. همانطور که در تصویر فوق مشاهده می شود گزینه دو یا فولدر drawable-hdpi برای دستگاه هایی با صفحه نمایشی با Density زیاد مورد استفاده قرار می گیرد و گزینه سه یا فولدر drawable-ldpi برای دستگاه هایی با صفحه نمایشی با Density کم مورد استفاده قرار می گیرد و گزینه چهار یا فولدر drawable-mdpi برای دستگاه هایی با صفحه نمایشی با Density متوسط مورد استفاده قرار می گیرد و گزینه پنج یا فولدر drawable-xhdpi برای دستگاه هایی با صفحه نمایشی با Density بسیار زیاد مورد استفاده قرار می گیرد.

    [h=3]بررسی نسبت مابین صفحه نمایش هایی با Density متفاوت[/h] پس از آنکه فرا گرفتیم که به چه نحوه می توان اپلیکیشن خود را به فولدرهایی تجهیز کرد که برای صفحه نمایش هایی با Density متفاوت بهینه شود حال نوبت به فراگیری راه کاری به منظور تولید تصاویر و شکل هایی برای هر یک از فولدرهای فوق الذکر می رسد. به عنوان یک قانون کلی می توان فولدر drawable-mdpi را "مبنا" قرار داده و نسبت 1.0 را برای آن در نظر بگیریم. حال تصاویری که می خواهیم در فولدر drawable-ldpi قرار دهیم می بایست دارای اندازه ای معادل با 0.75 برابر فولدر مبنا باشند. تصاویر موجود در فولدر drawable-hdpi معادل با 1.5 برابر تصاویر موجود در فولدر مبنا بوده و در نهایت تصاویر موجود در فولدر drawable-xhdpi معادل با 2.0 برابر تصاویر موجود در فولدر مبنا باشند.

    برای روشن شدن این مسئله مثالی می زنیم. فرض کنیم که عکسی داریم که ابعداد آن 100 در 100 است و این عکس در فولدر drawable-mdpi قرار دارد.

    حال نسخه ای که از روی این تصویر برای فولدر drawable-ldpi تهیه می کنیم می بایست در ابعداد 75 در 75 باشد و نسخه ای که از روی این تصویر برای فولدر drawable-hdpi تهیه می کنیم می بایست در ابعداد 150 در 150 باشد و نسخه ای که از روی این تصویر برای فولدر drawable-xhdpi تهیه می کنیم می بایست در ابعداد 200 در 200 پیکسل باشد.

    [h=3]تقسیم بندی دستگاه های موجود در بازار بر حسب Size و Density[/h] به منظور تقسیم بندی دستگاه های موجود بر حسب اندازه می توانیم نمودار زیر را مد نظر قرار دهیم:

    [​IMG]
    در قسمت بالایی این نمودار اندازه واقعی دستگاه بر حسب اینچ از دو اینچ شروع شده و تا بیش از ده اینچ ادامه یافته است. به طور کلی دستگاه هایی که از حدوداً دو اینچ شروع شده و تا حدوداً سه و نیم اینچ ادامه پیدا می کنند جزو دستگاه های small یا "کوچک" هستند. دستگاه هایی که از حدوداً سه اینچ شروع شده و تا حدوداً چهار و نیم اینچ ادامه پیدا می کنند جزو دستگاه های normal یا "متوسط" هستند. دستگاه هایی که از حدوداً چهار اینچ شروع شده و تا حدوداً هفت اینچ ادامه پیدا می کنند جزو دستگاه های large یا "بزرگ" هستند و در نهایت دستگاه هایی که از حدوداً هفت اینچ شروع شده و تا بیش از ده اینچ ادامه پیدا می کنند جزو دستگاه های xlarge یا "خیلی بزرگ" هستند.

    به منظور تقسیم بندی دستگاه های موجود بر حسب تراکم صفحه نمایش یا همان Density می توانیم نمودار زیر را مد نظر قرار دهیم:

    [​IMG]
    در قسمت بالایی این نمودار تراکم واقعی دستگاه بر حسب تعداد نقطه در هر اینچ از 100 dpi شروع شده و تا بیش از 300 dpi ادامه یافته است.

    به طور کلی تراکم صفحه هایی که از 100 dpi شروع شده و تا حدوداً 150 dpi ادامه می یابد جزو صفحه نمایش های ldpi یا "کم تراکم" می باشند. تراکم صفحه هایی که از حدوداً 150 dpi شروع شده و تا حدوداً 200 dpi ادامه می یابد جزو صفحه نمایش های mdpi یا صفحه نمایش هایی با "تراکم متوسط" می باشند. تراکم صفحه هایی که از حدوداً 200 dpi شروع شده و تا حدوداً 250 dpi ادامه می یابد جزو صفحه نمایش های hdpi یا "پر تراکم" می باشند و در نهایت تراکم صفحه هایی که از بیش از 250 dpi شروع شده و تا بیش از 300 dpi ادامه می یابد جزو صفحه نمایش های ldpi یا "بسیار پر تراکم" می باشند.

    پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
    1. دستگاه های اندرویدی در ارتباط با Density به چند دسته تقسیم می شوند؟
    2. منظور از Density چیست؟
    3. برای ساخت فولدرهایی به منظور پیشتیبانی از Density های مختلف از چه نامگذاری بایستی استفاده کرد؟
    4. در صورت عدم وجود فولدر مرتبط با یک Density خاص، اندروید از چه فولدری استفاده خواهد کرد؟

    در قسمت آموزشی آینده با واحدهای اندازه گیری در سیستم عامل اندروید و تفاوت مابین آنها آشنا خواهیم شد.
     
  6. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : آموزش برنامه نویسی اندروید

    [​IMG] برنامه نویسی

    [h=1]آموزش برنامه نویسی اندروید - قسمت ۱۶: آشنایی با واحدهای اندازه گیری در سیستم عامل اندروید[/h]
    اهداف آموزشی این قسمت عبارتند از:
    1. معرفی dpi
    2. آشنایی با واحد اندازه گیری dip
    3. آشنایی با واحد اندازه گیری sp
    4. نقطه ضعف واحد اندازه گیری sp
    5. فرمول تبدیل واحد اندازه گیری dip به Pixel

    پس از آشنایی با اندازه های مختلف صفحه نمایش در دستگاه های اندرویدی، در این قسمت از آموزش به بررسی Density یا تراکم های متفاوت صفحه های نمایش خواهیم پرداخت. پس ادامه مطلب را از دست ندهید.

    [h=3]معرفی dpi[/h] به طور کلی بایستی گفت که یک توسعه دهندۀ اندروید نه تنها می بایست اندازه های متفاوت صفحه نمایش دستگاه های اندرویدی را در حین ساخت یک اپلیکیشن مد نظر قرار دهد، بلکه می بایست Density یا تراکم صفحه های نمایش را در پس ذهن خود داشته باشد. به طور کلی منظور از Density تعداد پیکسل هایی است که در یک اینچ از صفحه نمایش قرار می گیرند. در واقع هرچه تعداد پیکسل ها در هر اینچ بیشتر باشند بالتبع رزولوشن صفحه بیشتر بوده و دستگاه از کیفیت نمایش بیشتری برخوردار خواهد بود.

    اکنون با دانستن این نکته که صفحه نمایش دستگاه های اندرویدی بر اساس dpi که مخفف Dots per inch به معنی "تعداد نقطه در هر اینچ" گروه بندی می شوند، همواره بایستی این نکته را مد نظر قرار دهیم که در توسعه اپلیکیشن برای سیستم عامل اندروید برای مشخص کردن عناصر روی صفحه مثل دکمه ها، فاصله مابین عناصر روی صفحه و همچنین اندازه متن استفاده از واحد پیکسل کار صحیحی نیست چرا که به طور مثال 100 پیکسل در یک دستگاه با dpi بالا با 100 پیکسل در یک دستگاه با dpi پایین یکسان نخواهد بود بنابراین نتایج متفاوتی را مشاهده خواهیم کرد.

    [h=3]آشنایی با واحد اندازه گیری dip[/h] رویکرد صحیح در رابطه با واحد انتخابی برای عناصر مورد استفاده در GUI یا همان "رابط گرافیکی کاربر" که در یک اپلیکیشن اندروید همان layout است dip می باشد که مخفف واژگان Device Independent Pixel است(این واحد اندازه گیری هم به صورت dip و هم به صورت dp نوشته می شود). در حقیقت dip یک واحد پیکسلی مجازی است که بر اساس یک صفحه نمایش با رزولوشن 160 dpi طراحی شده است. به عبارت دیگر یک dip معادل با یک پیکسل در یک صفحه نمایش که دارای 160 نقطه در هر اینچ است می باشد.

    به عبارت دیگر چنانچه کلیه عناصر در یک layout را در توسعه اندروید بر حسب dip تعیین کنیم، این اطمینان را خواهیم داشت که به طور مثال یک دکمه در دستگاه هایی با صفحه هایی با تراکم متفاوت به طور متناسب بزرگ یا کوچک خواهد شد.

    [h=3]آشنایی با واحد اندازه گیری sp[/h] در ارتباط با واحد dip بایستی توجه کرد که این واحد اندازه گیری به هیچ وجه تنظیمات دستگاه اندرویدی را مد نظر قرار نخواهد داد. برای روشن شدن این مطلب به ذکر مثالی می پردازیم. فرض کنیم که فرد کهنسالی یک گوشی با سیستم عامل اندروید دارد و از آنجا که وی دارای بینایی ضعیفی است تنظیمات تلفن همراه ایشان به نحوی است که کلیۀ متون را بزرگ تر از حد معمول نمایش می دهد. حال اگر ما اپلیکیشنی طراحی کنیم که از واحد اندازه گیری dip در UI آن استفاده شده باشد و فرد فوق الذکر اپلیکیشن ما را نصب کند به هیچ وجه قادر نخواهد بود تا اندازه فونت ها را بزرگ تر از آنچه ما تعریف کرده ایم بکند. برای رفع این مشکل یک واحد اندازه گیری دیگر در اندروید تحت عنوان sp که مخفف واژگان Scale Independent Pixel است(توجه داشتن باشیم که برخلاف dip در واحد sp نمی بایست حرف اول کلمه Independent را در مخفف قرار دهیم). در حقیقت نحوه عملکرد واحد sp همانند dip است با این تفاوت که واحد اندازه گیری sp تنظیمات دستگاه اندرویدی را نیز برای نمایش متون مد نظر قرار می دهد.

    در واقع در مثال فوق اگر واحد های اپلیکیشن خود را به sp تغییر دهیم، فردی که دارای بینایی ضعیفی است با تغییر تنظیمات تلفن همراه خود به منظور بزرگ تر نشان دادن متون، قادر خواهد بود تا متون داخل اپلیکیشن ما را نیز بزرگ تر از حد معمول ببیند.

    [h=3]نقطه ضعف واحد اندازه گیری sp[/h] اگرچه که واحد اندازه گیری sp به افرادی که داری بینایی ضعیفی هستند کمک بسیاری می کند تا بتوانند اندازه متون اپلیکیشن را بیشتر کنند اما این در حالی است که از لحاظ زیبایی شناسی و همچنین چیدمان عناصر داخل UI زمانیکه از واحد اندازه گیری sp استفاده کنیم ممکن است با مشکل مواجه شویم. به طور مثال فرض کنیم که اندازه متون اپلیکیشن خود را در حدی انتخاب کرده ایم که با عکس های موجود در layout یک هارمونی مناسبی داشته باشد. حال چنانچه کاربری تنظیمات تلفن همراه یا تبلت خود را به منظور بزرگ تر نشان دادن متون تغییر داده باشد، نه تنها این هارمونی مابین چیزهای قرار گرفته روی UI به هم می خورد بلکه این احتمال نیز وجود دارد که برخی از متون از صفحه نمایش نیز خارج شوند. بنابراین در حین استفاده از این واحد اندازه گیری می بایست بسیار دقت کرد(تنها واحد اندازه گیری که در این سری از آموزش ها استفاده خواهیم کرد واحد اندازه گیری dip است).

    [h=3]فرمول تبدیل واحد اندازه گیری dip به Pixel[/h] به طور کلی برای اینکه متوجه شویم که یک dip در دستگاه هایی با Density متفاوت معادل با چند پیکسل است، می بایست در ابتدا تعداد dpi های صفحه نمایش مد نظر را تقسیم بر عدد 160 کرده سپس عدد حاصله را ضرب در اندازه شیئ خود بر حسب dip بکنیم. برای روشن تر شدن این مسئله به ذکر یک مثال می پردازیم. فرض کنیم که یک تلفن همراه داریم که رزولوشن آن برابر با 240 dpi است. در اپلیکیشن خود یک UI داریم که حاوی متنی است که اندازه آن معادل با 20 dip است. حال می خواهیم ببینیم که این متن معادل با چند پیکسل می باشد. در ابتدا عدد 240 را بر عدد 160 تقسیم می کنیم که می شود 1.5 سپس این عدد را در عدد 20 ضرب می کنیم که می شود 30 . در حقیقت این متن ما دارای اندازه 30 پیکسل در دنیای واقعی است.

    پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
    1. چرا استفاده از واحد پیکسل در توسعه یک اپلیکیشن اندرویدی کار صحیحی نیست؟
    2. تفاوت dpi با dip چیست؟
    3. معیار سنجش یک dip چیست؟
    4. تفاوت dip با sp چیست؟
    5. نقطه ضعف واحد اندازه گیری sp چیست؟
    6. فرمول تبدیل dip به پیکسل چیست؟
     
  7. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : آموزش برنامه نویسی اندروید

    [​IMG] برنامه نویسی

    [h=1]آموزش برنامه نویسی اندروید - قسمت ۱۷: نحوه ساخت دستگاه اندرویدی مجازی برای تست اپلیکیشن[/h]
    اهداف آموزشی این قسمت عبارتند از:
    1. معرفی رویکردهای تست کردن اپلیکیشن
    2. تفاوت مابین Emulator و Simulator
    3. چرا در توسعه اپلیکیشن اندرویدی از Emulator استفاده می کنیم
    4. نحوه ساخت Emulator در محیط اکلیپس

    [h=3]آشنایی با نحوه تست کردن اپلیکیشن[/h] تست کردن اپلیکیشن در پروسه طراحی اپلیکیشن راهی است که از آن طریق می توان از اشتباهات فاحش در برنامه نویسی اندروید جلوگیری به عمل آورد. به عبارت دیگر پس از هر بار اضافه کردن کدی به اپلیکیشن خود نیاز است که اپلیکیشن را یک بار تست کرده تا اطمینان حاصل کنیم که اپلیکیشن Crash نکرده و به خوبی کار می کند.

    برای آنکه بتوانیم خروجی برنامه خود را ببینیم، در محیط برنامه نویسی اکلیپس دو راه کار وجود دارد که یکی ساخت Emulator است و دیگری وصل کردن یک تلفن همراه یا تبلت به کامپیوتر.

    به طور کلی یکی از ابزارهایی که برای توسعه اپلیکیشن اندروید در اختیار اکلیپس قرار می گیرد ابزاری تحت عنوان Emulator است. در زبان انگلیسی واژه Emulate به معنی "تقلید کردن" است و بالتبع واژه Emulator به معنی "مقلد" یا "تقلید کننده" خواهد بود. کاری که این ابزار انجام می دهد این است که از طریق آن می توان یک دستگاه تلفن همراه یا تبلت مجازی در کامپیوتر خود ایجاد کرده که عملکردی شبیه به یک تلفن همراه یا تبلت واقعی خواهد داشت.

    [h=3]تفاوت مابین Emulator و Simulator[/h] پیش از ادامه توضیحات پیرامون این دستگاه مجازی، نیاز است تا با این مسئله آشنا شویم که تفاوت های مابین Emulator و Simulator چیست و چرا در توسعه اندروید از Emulator استفاده می شود(در زبان انگلیسی فعل Simulate به معنی "شبیه سازی کردن" است و Simulator به معنی "شبیه ساز" است).

    به طور کلی می توان گفت که تفاوت عمده میان این دو، رویکردی است که هر کدام از این ابزارهای اتخاذ می کنند. به عبارت دیگر ابزار Emulator روی شبیه سازی عملکرد یک سیستم تمرکز می کند بدون توجه به این مسئله که عملکرد داخلی این سیستم مد نظر چگونه است اما Simulator ها روی شبیه سازی نحوۀ عملکرد اجزای داخلی یک سیستم تمرکز دارند. در واقع زمانیکه بخواهیم بفهمیم که یک سیستم "چه" کاری انجام می دهد می بایست از ابزار Emulator استفاده کنیم و زمانیکه می خواهیم بفهمیم که یک سیستم "چگونه" کاری را انجام می دهد می بایست از Simulator استفاده کنیم.

    [h=3]علت استفاده از Emulator در توسعه اندروید[/h] حال از آنجا که در توسعه اپلیکیشن اندروید صرفاً نیاز داریم تا به ابزاری دسترسی داشته باشیم که عملکردی شبیه به یک تلفن همراه واقعی یا تبلت واقعی داشته باشد و نحوه عملکرد یک اپلیکیشن روی یک دستگاه اندرویدی واقعی را برای ما شبیه سازی کند و به هیچ وجه نیازی نیست که بدانیم این دستگاه مجازی چگونه کار می کند پس در توسعه اندروید از Emulator استفاده می کنیم.

    از سوی دیگر از قرار بود در سایت نردبان آموزش خلبانی بدهیم نیاز داشتیم تا از Simulator استفاده کنیم زیرا همانطور که می دانیم این ابزار مثل یک هواپیما نمی تواند پرواز کند و روی زمین قرار دارد ولی در عین حال می تواند به طول مثال نحوۀ عملکرد موتورهای جت در شرایط نامساعد جوی را به دانشجوی خلبانی نشان دهد. پس به طور کلی می توان گفت که یک Simulator تا حدودی برای ما انسان ها شبیه به دستگاه اصلی است اما این در حالی است که این ابزار نخواهد توانست در دنیای واقعی جایگزین دستگاه اصلی(مثلاً هواپیما) شود.

    [h=3]نحوه ساخت Emulator در محیط اکلیپس[/h] در این قسمت از آموزش قصد داریم تا در محیط برنامه نویسی اکلیپس یک دستگاه مجازی ساخته تا از آن طریق بتوانیم پروژه ای که در جلسه هشتم تحت عنوان My First Android Project ساختیم را تست کنیم. برای این منظور نرم افزار اکلیپس را باز کرده و مطابق تصویر زیر عمل می کنیم:

    [​IMG]
    همانطور که در تصویر فوق مشاهده می شود، از منوی اصلی نرم افزار روی گزینه Window کلیک کرده سپس همانطور که با فلش قرمز رنگ نشان داده شده است روی گزینه AVD Manager کلیک می کنیم. در واقع این گزینه به منزله بخشی از ابزارهای توسعه اندروید است که روی محیط برنامه نویسی اکلیپس تنظیم شده است(کلمه اختصاری AVD مخفف واژگان Android Virtual Device به معنی "دستگاه مجازی اندروید" است).

    پس از کلیک کردن روی این گزینه پنجره زیر نمایان خواهد شد:

    [​IMG]
    در حقیقت این پنجره لیستی از دستگاه های مجازی اندروید را برای ما نشان خواهد داد ولی از آنجا که این اولین باری است که می خواهیم دست به طراحی یک اپلیکیشن اندروید بزنیم، هیچ دستگاه مجازیی در این لیست دیده نمی شود. برای آنکه یک دستگاه مجازی جدید بسازیم، همانطور که در تصویر فوق با یک بیضی قرمز رنگ مشخص شده است، روی گزینه New کلیک کرده و پنجره جدیدی به شکل زیر باز خواهد شد:

    [​IMG]
    در بخش Name می بایست نامی برای این دستگاه مجازی انتخاب کنیم که می خواهیم این دستگاه مجازی به آن نام شناخته شود. اگر چه که این نام کاملاً دلخواه است، اما در انتخاب نام می بایست دقت کرده که گویای خصوصیات دستگاه مجازی ما باشد. در واقع از آنجا که ما در حین ساخت پروژه، اپلیکیشن خود را برای سیستم عامل اندروید 2.1 هدف قرار دادیم، می توانیم نام AVD for 2.1 Version را انتخاب کنیم. سپس در بخش Target به معنی "هدف" می بایست مشخص کنیم که قصد داریم این دستگاه مجازی تلفن همراهی با کدام نسخه از سیستم عامل اندروید را شبیه سازی کند. اگر خاطرمان باشد در آموزش هفتم که به آماده سازی محیط برنامه نویسی اکلیپس برای توسعه اندروید پرداختیم، نسخه ای از اکلیپس که دانلود کردیم فقط تعدادی از SDK های توسعه اندروید را در بر می گرفت. به عبارت دیگر ما فقط می توانیم با این نسخه از اکلیپس برای نسخه های 2.1 و 3.0 و 4.0.3 دست به توسعه اپلیکیشن اندروید بزنیم. شاید علت اینکه کلیۀ SDK های نسخه های دیگر اندروید گنجانده نشده اند این است که تفاوت چندانی مثلاً مابین نسخه 2.1 و 2.2 نمی باشد از این اینرو فقط نسخه 2.1 آورده شده است اما از آنجا که مابین نسخه 2.1 و نسخه 3.0 تفاوت های چشمگیری دیده می شود، نسخه 3.0 هم گنجانده شده است. در مورد نسخه 4.0.3 هم همین شرایط صدق می کند.

    اکنون که توضیحات تکمیلی پیرامون نسخه های نصب شده در محیط برنامه نویسی اکلیپس داده شد، به راحتی می توانیم به گزینه Target رجوع کرده و همانطور که در تصویر فوق مشاهده می شود نسخه سیستم عامل اندروید 2.1 را انتخاب کنیم.

    از آنجا که Emulator بسیاری از ویژگی های یک موبایل را می تواند شبیه سازی کند، در پنجره ساخت این ابزار گزینه ای تحت عنوان SD Card نیز گنجانده شده است. در حقیقت با اختصاص دادن عددی به این گزینه مقدار حافظۀ این دستگاه مجازی را مشخص خواهیم کرد. در این آموزش مقدار 1000 را تایپ می کنیم به این معنی که این دستگاه مجازی یک گیگابایت حافظه خواهد داشت(ممکن است روی برخی از سیستم ها با تایپ کردن عدد 1000 در زمان زدن دکمه Create AVD در پایان کار نرم افزار هنگ کند. چنانچه چنین اتفاقی روی داد، اکلیپس را بسته مجدد آن را اجرا نموده و این بار عدد به مراتب کوچکتری همچون 100 را برای SD Card در نظر بگیرید).

    گزینه بعدی Snapshot است که از اهمیت بسزایی در آماده سازی دستگاه مجازی اندروید دارد. معنی لغوی این واژه "عکس فوری" است. در دستگاه مجازی این گزینه حاکی از آن است که وقتی Emulator را ببندیم و بخواهیم مجدد آن را اجرا کنیم چنانچه گزینه Enabled به معنی "فعال" مربوط به Snapshot تیک نخورده باشد تقریبا زمان قابل توجهی به طول خواهد انجامید تا Emulator دوباره بالا بیاد اما چنانچه این گزینه تیک خورده باشد ظاهراً اطلاعاتی از Emulator در حافظه ذخیره می شود که پس از بستن آن و اجرای مجدد دیگر نیازی نخواهد داشت تا از ابتدا Emulator را اجرا کند. این گزینه را حتماً تیک می زنیم.

    تا این مرحله از کار می بایست همانند تصویر زیر پنجره مربوط به ساخت Emulator تکمیل شده باشد:

    [​IMG]
    همانطور که تصویر فوق مشاهده می شود بخش Hardware به معنی "سخت افزار" با یک بیضی قرمز رنگ نشان داده شده است. در واقع این دو گزینه که به صورت خودکار وارد شده اند نشانگر تنظیمات مربوط به نوع سخت افزار ابزار Emulator می باشند. چنانچه تمایل داشته باشیم خصوصیات سخت افزاری دیگر به ماشین مجازی خود بیافزاییم، اینکار را می توان با کلیک کردن بر روی دکمه New که با فلش قرمز رنگ مشخص شده است انجام دهیم.

    در این مرحله ساخت ماشین مجازی به پایان رسیده است اما همانطور که در تصویر فوق مشاهده می شود در پایین پنجره یک علامت ضربدر با دایره ای قرمز رنگ مشخص شده است. در حقیقت این علامت به ما اخطار می دهد که در نام انتخابی برای ماشین مجازی خود از علامت های غیر مجاز استفاده کرده ایم. به عبارت دیگر ما مجاز نیستیم که از Space در نام Emulator استفاده کنیم. برای رفع این مشکل، کلیۀ فاصله ها در نام انتخابی را با Dash جایگزین می کنیم:

    [​IMG]
    همانطور که در تصویر فوق مشاهده می شود، نام ماشین مجازی اصلاح شده و به نام AVD-2.1-Version تغییر یافته و اکلیپس هم دیگر ایرادی از ما نمی گیرد. حال با کلیک روی دکمه Create AVD می توانیم ماشین مجازی را بسازیم:

    [​IMG]
    همانطور که در تصویر فوق مشاهده می شود تا اینجای کار توانسته ایم یک ماشین مجازی اندروید تحت عنوان AVD-2.1-Version بسازیم. در تصویر زیر با دایره ای قرمز رنگ دو دکمه Edit و Delete به ترتیب به معانی "ویرایش کردن" و "حذف کردن" مشخص شده اند:

    [​IMG]
    در واقع با انتخاب نام ماشین مجازی ساخته شده و کلیک کردن روی دکمه Edit می توان تنظیمات اولیه که در مراحل بالا اعمال کردیم را تغییر دهیم و یا با کیک کردن روی دکمه Delete می توان این ماشین مجازی را حذف نماییم(لازم به ذکر است در صورت حذف یک ماشین مجازی دیگر به هیچ وجه امکان دسترسی به آن وجود نخواهد داشت).

    در آموزش بعد خواهیم دید که به چه نحوه می توان برنامه خود را روی این ابزار تست کرد.

    پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
    1. تفاوت مابین Emulator و Simulator چیست؟
    2. چرا در توسعه اندروید از Emulator استفاده می کنیم؟
    3. چرا در ساخت Emulator بایستی تیک Snapshot را فراموش نکنیم؟
    4. روش نامگذاری یا همان Naming Convention برای Emulator ها چگونه است؟
    5. در با انتخاب عددی مثل 1000 برای SD Card نرم افزار هنگ کرد چه راه کاری را می توان دنبال نمود؟
     
  8. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : آموزش برنامه نویسی اندروید

    [​IMG] برنامه نویسی

    [h=1]آموزش برنامه نویسی اندروید - قسمت ۱۸: اجرای Emulator و تست اولین اپلیکیشن[/h]
    اهداف آموزشی این قسمت عبارتند از:
    1. نحوه اجرای ماشین مجازی اندروید یا همان AVD
    2. تاریخچه عبارت Hello World

    در آموزش هفدهم با نحوه ساخت یک ماشین مجازی اندروید یا به اختصار یک AVD آشنا شدیم. در این قسمت قصد داریم تا با نحوه اجرای این ماشین مجازی آشنا شده و همچنین به اجرای پروژه ای که در قسمت هشتم تحت عنوان My First Android Project ساختیم نیز بپردازیم. پس ادامه مطلب را از دست ندهید.

    [h=3]نحوه اجرای ماشین مجازی اندروید[/h] در آموزش قسمت هفدهم مشاهده کردیم که پس از ساخت یک AVD در محیط برنامه نویسی اکلیپس، نام AVD ساخته شده در پنجره Android Virtual Device Manager به صورت زیر خواهد آمد:

    [​IMG]
    حال با یک بار کلیک کردن روی AVD ساخته شده تحت عنوان AVD-2.1-Version به رنگ آبی در خواهد آمد. اکنون همانطور که در تصویر فوق با یک فلش قرمز رنگ نشان داده شده است، برای اجرای این ماشین مجازی روی دکمه Start کلیک می کنیم.

    پس از کلیک کردن روی گزینه Start با پنجره جدیدی به شکل زیر مواجه خواهیم شد:

    [​IMG]
    این پنجره حاوی اطلاعاتی پیرامون تنظیمات ماشین مجزای است که در قسمت آموزشی قبل مشخص کردیم. به طور مثال همانطور که در آموزش پیشین در پنجره مربوط به ساخت Emulator در بخش Built-in گزینه Default پیش فرض که WVGA800 بود را انتخاب کردیم، در پنجره فوق این گزینه در بخش Skin نمایش داده شده و حتی ابعداد واقعی این ابزار نیز مقابل آن نوشته شده است که 480 در 800 است. اگر خاطرمان باشد در آموزش گذشته در بخش مربوط به Hardware یکسری تنظیمات به صورت خودکار وارد پنجره شده بود که یکی از آن تنظیمات مربوط به رزولوشن صفحه نمایش بود که آن گزینه نیز در پنجره فوق در بخش Density به صورت High با رزولوشن 240 dpi آمده است.

    در پنجره فوق گزینه ای تحت عنوان Scale display to real size به معنی "تغییر اندازه صفحه نمایش به اندازه واقعی دستگاه" وجود دارد. با انتخاب این گزینه تنظیمات داخل کادر قرمز رنگ در تصویر فوق فعال خواهند شد. در حقیقت کاری که این تنظیمات انجام می دهند این است که اندازه Emulator را می توان از طریق آنها به اندازه یک دستگاه واقعی تبدیل کرد و در صورتیکه این گزینه را انتخاب نکنیم ابزار Emulator در قالب یک پنجره بزرگ روی صفحه به نمایش در خواهد آمد. از آنجا که می خواهیم صفحه بزرگی در اختیار داشته باشیم، این گزینه را تیک دار نمی کنیم.

    گزینه بعدی در این پنجره Wipe user data به معنی "پاک کردن اطلاعات کاربری" است. فرض کنیم که یک دستگاه Emulator ساخته ایم و آن را برای پروژه های مختلفی استفاده کرده ایم و برای تست کردن اپلیکیشن ها برخی از تنظیمات Emulator را تغییر داده ایم. زمانیکه می خواهیم Emulator را استفاده کنیم برای آنکه به تنظیمات اولیه Emulator مجدد دست پیدا کنیم و دیگر تغییرات ایجاد شده را مشاهده نکنیم می بایست این گزینه را تیک بزنیم اما از آنجا این اولین باری است که می خواهیم Emulator را اجرا کنیم مسلماً هیچ تنظیماتی را دستکاری نکرده ایم که بخواهیم آن را به حالت اولیه بازگردارنیم از این رو این گزینه را تیک نمی زنیم.

    گزنیه بعدی Launch from snapshot به معنی "اجرا کردن از روی snapshot" است. اگر خاطرمان باشد در آموزش پیش که اقدام به ساخت Emulator کردیم، گزینه Enabled را در بخش Snapshot تیک زده و توضیح دادیم که وظیفه آن چیست. اکنون در این مرحله نیز این امکان برای ما فراهم شده است که با تیک زدن Launch from snapshot ماشین مجازی خود را از روی snapshot اجرا کنیم و در صورتیکه بخواهیم ماشین مجازی را اصطلاحاً Reboot کنیم می بایست تیک این گزینه را بر داریم.

    آخرین گزینه تحت عنوان Save to snapshot به معنی "ذخیره کردن اطلاعات روی "snapshot این وظیفه را داراست که در صورت فعال بودن آخرین تنظیمات، تغییرات و حالات Emulator را روی snapshot ذخیره سازد تا در اجرای بعدی Emulator از آنها استفاده شود (لازم به ذکر است که اینکار به مراتب زمان بالا آمدن دستگاه مجازی را کوتاه می سازد. بنابراین همواره توصیه می شود که این گزینه را تیک دار نماییم).

    حال می توانیم روی کلید Launch به معنی شروع کلیک کرده و منتظر بمانیم تا Emulator بالا بیاید. در حقیقت از آنجا که این اولین باری است که Emulator ساخته شده را اجرا می کنیم، هیچ گونه Snapshot یی وجود ندارد که ماشین مجازی ما از روی آن اجرا گردد از این رو با توجه به سرعت سخت افزاری سیستم هر کاربری تقریباً زمان قابل توجهی به طول خواهد انجامید تا Emulator اجرا گردد.

    [​IMG]
    همانطور که در تصویر فوق با خط قرمز رنگی نشان داده شده است، نام انتخابی Emulator بالای پنجره نوشته شده است. حال برای آنکه اولین پروژه خود را اجرا کنیم مطابق تصویر زیر روی گزینه Run کلیک می کنیم:

    [​IMG]
    همانطور که در تصویر فوق با یک فلش قرمز رنگ نشان داده شده است، پروژه My First Android Project انتخاب شده است، از این روی دایرکتوری این پروژه به رنگ آبی در آمده است. حال زمانی نشانگر موس خود را روی دکمه Run که در تصویر فوق با یک مستطیل قرمز رنگ نشان داده شده است قرار دهیم، می بینیم که عبارت Run My First Android Project به معنی "پروژه My First Android Project را اجرا کن" ظاهر می شود(این عبارت با یک خط افقی قرمز رنگ مشخص شده است). در حقیقت از آنجا که ما از قبل پروژه خود را انتخاب کرده ایم محیط برنامه نویسی اکلیپس متوجه می شود که ما قصد داریم کدام پروژه خود را اجرا نماییم. حال به محض کلیک کردن روی دکمه Run خواهیم دید که اولین پروژه اندروید ما روی Emulator اجرا خواهد شد(لازم به ذکر است گاهی اوقات ممکن است پس از کلیک کردن روی گزینه Run اپلیکیشن بلافاصله اجرا نگردد و پنجره کوچک دیگری باز گردد که در این صورت می بایست گزینه Android Application را از لیست انتخاب کرده و روی گزینه OK کلیک نماییم):

    [​IMG]
    در واقع تصویر فوق نشانگر اجرای تنها Activity موجود در پروژه ما است که در حین ساخت پروژه خود در جلسه هشتم آن را ایجاد کردیم. محیط برنامه نویسی اکلیپس به صورت خودکار یک Layout تحت عنوان main به معنی اصلی ایجاد کرده و آن را در کلاس Activity ایجاد شده توسط ما فرا می خواند. به عبارت دیگر این Layout ایجاد شده همانطور که در تصویر فوق مشاهده می شود دارای یک رنگ پس زمینه مشکی با یک Text Box حاوی جمله Hello World, MainActivity! به معنی "سلام دنیا" است که به رنگ خاکستری نوشته شده است.

    [h=3]تاریخچه عبارت Hello World[/h] آقای Brian Kernighan در سال 1972 در حین نوشتن دفترچه راهنمای زبان برنامه نویسی B اولین برنامه ای که خروجی آن عبارت Hello World! به معنی "سلام دنیا!" بود را با Syntax زیر نوشت:



    • main( ) {
    • extrn a, b, c;
    • putchar(a); putchar(b); putchar(c); putchar('!*n');
    • }
    • a 'hell';
    • b 'o, w';
    • c 'orld';

    از آن پس برای برنامه نویسان کل دنیا نوشتن اولین برنامه خود در هر زبانی که خروجی آن عبارت Hello World! باشد به عنوان یک استاندارد در آمد که ما هم از این قاعده مستثنی نخواهیم بود!

    در آموزش بعد با نحوه اجرای اولین پروژه اندروید خود روی یک تلفن همراه واقع و همچنین اعمال یکسری تغییرات در محیط اکلیپس برای سهولت کار با آن در حین توسعه اندروید خواهیم پرداخت.

    پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
    1. برای بالا بردن سرعت اجرای Emulator در اجراهای آینده چه راه کاری پیشنهاد می شود؟
    2. چگونه می توان در محیط برنامه نویسی اکلیپیس یک پروژه را در Emulator اجرا نمود؟
    3. چرا در دنیا رسم است که اولین پروژه برنامه نویسی که می خواهند تست کنند از عبارت Hello World استفاده می کنند؟
     
  9. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : آموزش برنامه نویسی اندروید

    [​IMG] برنامه نویسی

    [h=1]آموزش برنامه نویسی اندروید - قسمت ۱۹: اجرای پروژه روی یک دستگاه واقعی[/h]
    اهداف آموزشی این قسمت عبارتند از:
    1. نقاط ضعف یک ماشین مجازی
    2. نقطه قوت یک دستگاه مجازی
    3. آشنایی با تنظیمات تلفن همراه برای تست کردن اپلیکیشن روی آن
    2. اتصال تلفن همراه به سیستم و شناساندن آن به اکلیپس

    در قسمت آموزشی پیشین با نحوه ساخت یک ماشین مجازی اندروید و تست کردن اولین پروژه خود روی آن آشنا شدیم. اما این در حالی است که در مورد تست کردن اپلیکیشن خود روی یک ماشین مجازی همواره بایستی این نکته را مد نظر قرار دهیم که ماشین های مجازی مثل Emulator هرچقدر هم که عملکردی شبیه به یک دستگاه واقعی داشته باشند باز هم "مجازی" هستند.

    ادامه مطلب را از دست ندهید.

    [h=3]نقاط ضعف یک ماشین مجازی[/h] از نقاط ضعف یک ماشین مجازی می توان به صرف زمان نسبتاً طولانی برای ساخت آن برای اولین بار(این زمان بسته به سخت افزار کامپیوتر یا لپ تاپ می تواند متغیر باشد ولی معمولاً چیزی در حدود 3 الی 4 دقیقه به طول خواهد انجامید)، سرعت کمتر آن نسبت به یک دستگاه واقعی، عدم توانایی در استفاده از ویبره در ماشین مجازی، کیفیت کمتر صفحه نمایش آن نسبت به یک دستگاه واقعی و غیره اشاره نمود.

    [h=3]نقطه قوت یک دستگاه مجازی[/h] درست است که یک Emulator از دید نگارندۀ این آموزش دارای نقاط ضعف زیادی است اما برشمردن یک ویژگی مهم Emulator در ارتباط با یک دستگاه واقعی خالی از لطف نیست. به عبارت دیگر ما به عنوان یک توسعه دهنده اپلیکیشن موظف هستیم اپلیکیشنی طراحی کنیم روی اکثر دستگاه های موجود در دست کاربران در جامعه دارای ظاهری مناسب بوده و UI آن از یک دستگاه نسبت به دستگاه دیگر دارای حداقل تفاوت باشد.

    برای این منظور دو رویکرد متفاوت را می توان اتخاذ نمود: اول اینکه به تعداد دستگاه های اندرویدی موجود در بازار از تلفن های همراه دو اینچی و چهار اینچی گرفته تا تبلت هایی در اندازه های متفاوت در اختیار داشته باشیم تا بتوانیم اپلیکیشن خود را روی تک تک آنها تست کنیم تا از ظاهر مناسب اپلیکیشن خود در دستگاه های متفاوت اطمینان حاصل کنیم.

    رویکرد دوم این است که به تعداد دستگاه های موجود در بازار اقدام به ساخت ماشین های مجازی متفاوت کنیم و اپلیکیشن خود را روی آنها تست کنیم. اگرچه که باز هم با اتخاذ چنین رویکردی با محدودیت های آن مواجه خواهیم بود اما این در حالی است که این رویکرد نسبت به رویکرد اول عملی تر بوده و اجرای آن به مراتب راحت تر و کم هزینه تر می باشد(از این جهت راحت تر است که اگر فرض هم کنیم که اکثر دستگاه های موجود در بازار در اختیارمان باشد، نصب درایور تک تک آنها و همچنین نصب آن ها یکی پس از دیگری از طریق کابل USB کار دشواری به نظر می رسد. از سوی دیگر این رویکرد از این جهت کم هزینه تر است که اگر بخواهیم اپلیکیشن خود را روی دستگاه های واقعی تست کنیم، نیاز است تا چندین میلیون تومان صرف خرید دستگاه های واقعی کنیم).

    [h=3]آشنایی با تنظیمات تلفن همراه برای تست کردن اپلیکیشن روی آن[/h] به منظور تست کردن اپلیکیشن خود روی تلفن همراه سه سری تنظیمات می بایست انجام داد. اول آنکه نرم افزار Companion اتصال دستگاه به کامپیوتر را روی سیستم خود نصب کنیم. برخی دستگاه ها دارای یک دی وی دی نصب این نرم افزار هستند و نرم افزار برخی دیگر از دستگاه ها را می بایست از وب سایت شرکت سازنده دانلود کرد. متأسفانه از ارائه آموزش در این زمینه خودداری می کنیم چرا شرکت های مختلف دارای نرم افزارهای Companion متفاوتی هستند و ارائه آموزش برای کلیه برندهای امکان پذیر نیست.

    اکنون تلفن همراه خود را از طریق کابل USB به کامپیوتر یا لپ تاپ خود متصل می کنیم. چنانچه هیچ مشکل غیر منتظره ای پیش نیاید، به محض اتصال دستگاه خود به کامپیوتر، محیط برنامه نویسی اکلیپس دستگاه ما را خواهد شناخت.

    [​IMG]
    سری دوم تنظیمات مربوط به خود دستگاه اندرویدی است. برای این منظور اول همانند تصویر زیر دکمه Menu تلفن همراه خود را می زنیم:

    [​IMG]
    سپس همانطور که در تصویر فوق نشان داده شده است دکمه Settings به معنی "تنظیمات" را زده و از میان گزینه های موجود در Settings روی گزینه Applications به معنی "اپلیکیشن ها" کلیک می کنیم:

    [​IMG]
    پس از کلیک کردن روی گزینه Applications صفحه ای به صورت زیر خواهیم دید:

    [​IMG]
    در این صفحه می بایست روی گزینه Development به معنی "توسعه" کلیک کرده و متعاقباً صفحه ای به صورت زیر خواهیم دید:

    [​IMG]
    همانطور که در تصویر فوق مشاهده می شود گزینه USB debugging به معنی "مشکل یابی از طریق کابل "USB غیر فعال است. با فعال کردن این گزینه تلفن همراه ما برای تست کردن اپلیکیشن ها آماده شده است:

    [​IMG]
    همانطور که در تصویر فوق توسط یک دایره قرمز رنگ نشان داده شده است، با فعال کردن گزینه USB debugging هشداری که داخل کادر مستطیلی قرمز رنگ نوشته شده است برای ما نمایان می شود. به طور خلاصه این هشدار حاکی از آن است که تلفن همراه این اخطار را به ما می دهد که USB debugging صرفاً برای اهداف توسعه اپلیکیشن بوده و از طریق این گزینه خواهیم توانست که داده ها را از روی کامپیوتر روی دستگاه خود کپی کرده و سپس اپلیکیشن ها را روی دستگاه خود نصب نماییم. با این توضیحات به نظر می رسد که این دقیقاً همان چیزی است که ما برای توسعه اپلیکیشن نیاز داریم از اینرو همانطور که در تصویر فوق با یک فلش قرمز رنگ نشان داده شده است دکمه OK را کلیک می کنیم.

    حال می توانیم به صفحه اصلی تلفن همراه خود بازگردیم و اقدام به اجرای سومین سری از تنظیمات کنیم.

    برای اینکه متوجه شویم که محیط برنامه نویسی اکلیپس تلفن همراه ما را شناخته است، همانند تصویر زیر عمل می کنیم:

    [​IMG]
    [​IMG]
    همانطور که در تصویر فوق مشخص است، از بخش منوی اصلی اکلیپس وارد گزینه Window سپس گزینه Show View شده و در نهایت روی گزینه Devices به معنی "دستگاه ها" کلیک می کنیم. پس از کلیک کردن روی این گزینه پنجره ای به شکل زیر مشاهده خواهد شد:

    [​IMG]
    در پنجره فوق گزینه شماره یک نشانگر Emulator یی است که در مرحله قبل ساختیم و کلمه Online نشانگر این مسئله است که این دستگاه مجازی فعال است. سپس مقابل آن نامی که در حین ساخت برای دستگاه مجازی تحت عنوان AVD-2.1-Version انتخاب کردیم نشان داده شده است.

    گزینه دوم مربوط به دستگاه تلفنی است که به کامپیوتر متصل شده است. همانطور که ملاحظه می شود به جای نشان دادن نام دستگاه تلفن یک id برای آن در نظر گرفته شده است. مجدداً کلمه Online را می بینیم که نشان می دهد که دستگاه تلفن هم به سیستم متصل است. در نهایت عدد 2.3.4 را می بینیم که نشانگر نسخه سیستم عامل اندروید نصب شده روی دستگاه تلفن بنده است(این عدد بسته به نوع تلفن همراه می تواند متغیر باشد).

    حال همانطور که در قسمت آموزشی گذشته توضیح داده شد، برای اجرای اپلیکیشن خود می بایست روی دکمه Run به معنی "اجرا کردن" به صورت زیر کلیک کنیم:

    [​IMG]
    در این مرحله از آنجا که اکلیپس بر سر دو راهی قرار خواهد گرفت که پروژه را روی کدام گزینه اجرا کند(دستگاه مجازی یا دستگاه واقعی)، بنابراین پنجره زیر نمایش داده خواهد شد:

    [​IMG]
    همانطور که ملاحظه می شود در این پنجره هر دو دستگاه نمایش داده شده اند. با کلیک کردن روی گزینه مورد نظر و آبی شدن آن به اکلیپس می گوییم که قصد داریم پروژه را روی گزینه انتخاب شده اجرا کنیم. حال می توانیم دکمه OK را کلیک کنیم. اما پیش از کلیک کردن، گزینه Use same device for future launches که در تصویر فوق با یک بیضی قرمز رنگ مشخص شده است به معنی "از این دستگاه برای اجراهای آینده استفاده کن" را می توانیم تیک بزنیم تا اکلیپس به طور خودکار دستگاه مد نظر ما را در اجراهای آینده مد نظر قرار داده و دیگر مجبور نباشیم این پنجره را تنظیم کنیم.

    اکنون به محض زدن دکمه OK همانطور که در تصویر زیر مشاهده می شود پروژه ابتدا روی دستگاه موبایل بنده نصب شده سپس به صورت خودکار اجرا می گردد:

    [​IMG]
    پس از اجرای اپلیکیشن چنانچه به لیست اپلیکیشن های گوشی خود مراجعه کنیم، خواهیم دید که اپلیکیشنی با نام My First Android Project با لوگوی معروف گوگل در کنار دیگر اپلیکیشن ها قرار گرفته است.

    در آموزش بیستم با نحوه شخصی سازی محیط برنامه نویسی اکلیپس به منظور در دسترس قرار دادن کلیه ابزارهای مورد نیاز برای توسعه اندروید خواهیم پرداخت.

    پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
    1. نقاط ضعف و قوت استفاده از یک ماشین مجازی برای توسعه اندروید کدامند؟
    2. برای اتصال یک دستگاه واقعی به سیستم چند سری تنظیمات می بایست انجام داد؟
    3. به چه شکل می توان تنظیم کرد که اکلیپس به صورت خودکار دستگاه واقعی را برای اجرای اپلیکیشن در نظر بگیرد؟
     
  10. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    پاسخ : آموزش برنامه نویسی اندروید

    [​IMG] برنامه نویسی

    [h=1]آموزش برنامه نویسی اندروید - قسمت ۲۰: شخصی سازی محیط اکلیپس برای کاربری آسانتر[/h]
    اهداف آموزشی این قسمت عبارتند از:
    1. معرفی Perspective در محیط اکلیپس
    2. باز کردن پنجره های مورد نیاز برای توسعه اندروید
    3. ساخت یک Perspective به نام خود

    در این آموزش قصد داریم تا ساختار محیط برنامه نویسی اکلیپس را شخصی سازی کرده و ابزارهای مورد نیاز در توسعه اندروید را در دسترس خود قرار داده تا بتوانیم با سرعت بیشتر و خطای کمتری به توسعه اندروید بپردازیم. ادامه مطلب را از دست ندهید.

    [h=3]معرفی Perspective در محیط اکلیپس[/h] به طور کلی در اکثر برنامه های معروف مثل فتوشاپ و غیره محیط کلی نرم افزار Workspace به معنی "محل کار" نامیده می شود. اما در محیط برنامه نویسی اکلیپس، به محیطی از این نرم افزار که در آن برنامه نویسی می کنیم Workspace گفته نمی شود بلکه این محیط Perspective به معنی "چشم انداز" یا "منظره" نامیده می شود:

    [​IMG]
    همانطور که در تصویر فوق نمایش داده شده است، محیط کلی اکلیپس Perspective نامیده می شود.

    [h=3]باز کردن پنجره های مورد نیاز برای توسعه اندروید[/h] کاری که در این آموزش قرار است انجام دهیم، مجهز کردن محیط برنامه نویسی اکلیپس به ابزارهای لازم و ضروری برای توسعه اندروید است. برای این منظور اولین گام این است که ابزارهای لازم برای توسعه اندروید را در محیط اکلیپس بگنجانیم سپس یک Perspective به نام خود بسازیم به طوریکه کلیۀ این تنظیمات را در خود ذخیره سازد.

    [​IMG]
    محیط برنامه نویسی اکلیپس به طور پیش فرض دارای سه Perspective اصلی تحت عناوین Java و Debug و DDMS است. به طور مثال همانطور که در تصویر فوق مشاهده می شود Perspective جاوا فعال است، این Perspective در برگیرندۀ کلیۀ ابزارهای لازم برای برنامه نویسی یک برنامه جاوا است. به طور کلی کاری که در این آموزش قرار است انجام دهیم این است که پنجره های لازم برای توسعه اندروید را باز کرده سپس آن ها را در قالب یک Perspective جدید تحت عنوان Behzad ذخیره می سازیم(در واقع علت اینکه نام Behzad را در نظر گرفتم این است که این Perspective را متعلق به خود بدانم. توصیه می شود علاقمندان این Perspective را به نام خودشان ذخیره سازند).

    مهم ترین پنجره در پروسه توسعه اندروید در محیط برنامه نویسی اکلیپس پنجره Package Explorer است. به عبارت دیگر در این پنجره به کلیۀ پروژه ها و فولدرهای تشکیل دهندۀ آنها دسترسی پیدا خواهیم کرد. همانطور که در تصویر فوق با یک فلش قرمز رنگ مشخص شده است، Package Explorer در Perspective مرتبط با Java قرار دارد و نیاز نیست تا آن را باز کنیم.

    [​IMG]
    همانطور که در تصویر فوق مشاهده می شود، برای دسترسی به کلیۀ پنجره های محیط برنامه نویسی اکلیپس بایستی از منوی اصلی وارد Window شده سپس روی گزینۀ Show View کلیک کرده و پنجره ای جدید باز خواهد شد(در تصویر فوق با یک مستطیل قرمز رنگ نشان داده شده است). در این پنجره لیستی از پنجره ها دیده می شوند که در صورتیکه روی هر کدام از آنها کلیک کنیم باز خواهد شد. اما برای ادامه کار به یکسری دیگر از پنجره ها نیاز داریم که در این لیست وجود ندارند. برای دسترسی به آنها همانطور که در تصویر فوق با یک فلش قرمز رنگ نشان داده شده است، می بایست روی گزینه Other به معنی "دیگر موارد" کلیک کنیم.

    به محض کلیک روی این گزینه پنجره ای به شکل زیر باز خواهد شد:

    [​IMG]
    از طریق این پنجره به کلیۀ بخش های محیط برنامه نویسی اکلیپس دسترسی پیدا خواهیم کرد. از میان گزینه های موجود در این پنجره، روی گزینه General کلیک کرده و همانطور که در تصویر زیر نشان داده شده است روی گزینه Properties به معنی تنظیمات کلیک می کنیم:

    [​IMG]
    پس از کلیک کردن روی این گزینه، دکمه OK فعال خواهد شد که با کلیک روی آن پنجره فوق بسته شده و به محیط اصلی اکلیپس باز گشته در حالی که پنجره Properties به محیط برنامه نویسی اکلیپس اضافه شده است:

    [​IMG]
    اکنون مجدداً از روشی که در بالا توضیح داده شده به پنجره قبل رفته سپس پوشه General را بسته و روی گزینه Android کلیک کرده تا موارد زیر شاخه آن نمایان شوند:

    [​IMG]
    از میان زیرشاخه های Android به Devices و LogCat نیاز داریم، بنابراین هر دوی آنها را به محیط اکلیپس طبق روش بالا اضافه می کنیم:

    [​IMG]
    همانطور که در تصویر فوق مشاهده می شود، هر سه پنجره جدید وارد اکلیپس شده اند اما این در حالی است که جایگاه این پنجره ها و همچنین پنجره Package Explorer مناسب نیست و بایستی جای آن ها را تغییر دهیم.

    [​IMG]
    همانطور که در تصویر فوق نشان داده شده است، موس خود را روی نام Package Explorer گذاشته کلیک کرده و آن را هم زمان با نگه داشتن دکمه موس کشیده و کنار پنجره Outline رها می کنیم:

    [​IMG]
    همانطور که در تصویر فوق مشخص است، پنجره Package Explorer در کنار پنجره Outline قرار می گیرد. سپس پنجره Properties را گرفته و همانند تصویر زیر در کنار Package Explorer قرار می دهیم:

    [​IMG]
    در آخرین مرحله، همانند تصویر زیر پنجره Devices را گرفته و در کنار دیگر پنجره ها قرار می دهیم:

    [​IMG]
    در این مرحله محیط اکلیپس می بایست به صورت زیر باشد:

    [​IMG]
    در تصویر فوق، بخشی که با مستطیل قرمز رنگ مشخص شده است جایی است که هر فایل پروژه خود را که باز کنیم در آن نمایش داده خواهد شد. گزینه شماره یک تحت عنوان Problems به معنی "مشکلات" این وظیفه را دارا است که اگر برنامه ما دارای مشکلی بود، نوع مشکل به همراه جایی در کد که آن مشکل از آنجا ناشی می شود را به ما نشان می دهد. گزینه شماره دو تحت عنوان LogCat کاری همچون پنجره Console در برنامه نویسی جاوا انجام می دهد. به عبارت دیگر یکی از کارهایی که LogCat انجام می دهد نشان دادن خروجی کدهایی است که می نویسیم. گزینه شماره سه تحت عنوان Package Explorer همانطور که قبلاً گفته شد لیست پروژه ها و زیرشاخه های آن ها را به ما نشان می دهد. گزینه شماره چهار تحت عنوان Outline به معنی "طرح کلی" به منزله پنجره ای است که لیست عناصر روی UI یا همان رابط گرافیکی کاربر را نشان خواهد داد. گزینه شماره پنج یا Properties به معنی "تنظیمات"، پنجره ای است که تنظیمات مربوط به عناصر روی UI را تنظیم خواهد کرد. گزینه شماره شش یا Devices به معنی "دستگاه ها" نشانگر دستگاه هایی است که می توان از آن طریق اپلیکیشن خود را تست کرد. در طول آموزش ها چنانچه به پنجره دیگری نیاز داشته باشیم بسته به نیاز خود آن را باز خواهیم کرد.

    [h=3]ساخت یک Perspective به نام خود[/h] حال که محیط برنامه نویسی اکیپس را برای توسعه اپلیکیشن های خود شخصی سازی کرده ایم، می توانیم این محیط جدید را به شکل یک Perspective ذخیره سازیم. برای این منظور از منوی اصلی روی گزینه Window کلیک کرده سپس روی گزینه Save Perspective As … به معنی "ذخیره سازی منظره به عنوان ..." کلیک می کنیم:

    [​IMG]
    سپس پنجره ای به صورت زیر باز خواهد شد:

    [​IMG]
    همانطور که در تصویر فوق مشاهده می کنیم، مقابل Name نام مد نظر خود برای این Perspective جدید می نویسیم(در این Perspective بنده نام Behzad را انتخاب کرده ام). حال می توانیم روی دکمه OK کلیک کنیم:

    [​IMG]
    همانطور که در تصویر فوق مشاهده می کنیم، در کنار Perspective های پیش فرض اکلیپس Perspective جدید ما تحت عنوان Behzad قرار گرفته است.

    نکته مثبت دیگری که در مورد Perspective ها وجود دارد این است که اگر سهواً پنجره ای را ببندیم و یا جای پنجره ای را تغییر داده سپس بخواهیم Perspective را به حالت اولیه خود در آوریم می توانیم این کار را از طریق گزینه Window در منوی اصلی سپس زیرشاخه Reset Perspective این کار را انجام دهیم:

    [​IMG]
    پس از کلیک کردن روی گزینه ای که در تصویر فوق با یک فلش قرمز رنگ نشان داده شده است پنجره زیر نمایان خواهد شد:

    [​IMG]
    در این پنجره این سوال از ما پرسیده می شود که "آیا واقعاً قصد داریم که Perspective مربوط به Behzad را به حالت پیش فرض بازگردانیم؟" که سپس می بایست روی گزینه Yes کلیک کنیم و مشاهده خواهیم کرد که کلیه پنجره ها سرای جای خود باز خواهند گشت.

    [h=3]نکته پایانی[/h] زمان های زیادی در برنامه نویسی برای ما پیش خواهد آمد که بدون آنکه بدانیم ریشۀ مشکلی در کجاست محیط برنامه نویسی Error می دهد و آنقدر این Error ها ادامه پیدا می کنند که در نهایت مجبور می شویم محیط برنامه نویسی را Uninstall کرده مجدداً آن را نصب نماییم. از آنجا که محیط برنامه نویسی اکلیپس نیازی به نصب ندارد، از اینرو نیازی به Uninstall هم نداشته و فقط با پاک کردن فولدر اصلی اکلیپس می توانیم آن را از سیستم خود حذف کنیم.

    به منظور رویارویی با مشکلات احتمالی پیشنهاد می شود پس از حصول اطمینان از اینکه اکلیپس به خوبی کار می کند و کلیه تنظیمات آن هم که در این آموزش توضیح داده شده اعمال شدند، یک کپی از فولدر اصلی این محیط برنامه نویسی که در زمان آماده سازی اکلیپس در آموزش هفتم دانلود کردیم گرفته و آن را در جای دیگری روی حافظه کامپیوتر خود ذخیره می سازیم. فایده چنین کاری این است که چنانچه با شرایطی مواجه شویم که عملکرد محیط برنامه نویسی اکلیس دچار اختلال گردد، می توان فولدر مربوط به اکلیپس را حذف کرده و یک کپی از نسخه کپی شده مجدداً گرفته و جای فولدر قبلی قرار دهیم(لازم به ذکر است پیش از پاک کردن نسخه قبلی اکلیپس می بایست پروژه های ایجاد شده در آن را در جایی روی هارد ذخیره کرده تا بعداً بتوانیم آن ها را به اکلیپس جدید Import کنیم. در قسمت های آتی با نحوه انجام این کار بیشتر آشنا خواهیم شد).

    پس از آشنایی با یکسری مقدمات توسعه اندروید همچون آماده سازی محیط برنامه نویسی اکلیپس، ساخت یک پروژه جدید، بررسی تک تک اجزای تشکیل دهنده یک پروژه، نحوه تست کردن اپلیکیشن روی یک دستگاه مجازی و یک دستگاه واقعی و غیره، در آموزش بعد مواردی این چنین را در مورد محیط برنامه نویسی اندروید استودیو نیز توضیح خواهیم داد.

    پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
    1. منظور از Perspective در محیط اکلیپس چیست؟
    2. به چه شکل می توان یک Perspective شخصی ساخت؟
    3. به چه شکل می توان تغییرات بوجود آمده در یک Perspective را به حالت اولیه در آورد؟