سلام من لی بریملو هستم و خوش آمدید به آموزش اساسی توسعه نرم افزار اندروید با جاوا.
در این درس من به شما یاد میدم که چطور از قدرت جاوا برای ساختن نرم افزار های اندروید استفاده کنید.
من به شما یک نمای کلی از توسعه اندروید میدم شامل :
چطور از رابط های کاربری مختلف استفاده کنیم برای درست کردن متن، لیست و طرح بندی های دلخواه.
من اهمیت پشتیبانی از سایزهای مختلف صفحه و ضخامت اشیا رو به شما شرح خواهم داد.
همچنین نحوه استفاده از قالب ها و سبک و سیاق های دلخواه.
و قدم به قدم به شما یاد خواهم داد که چطوری به برنامتون صدا و تصویر اضافه کنید.
و اینکه چطور اونها رو "مکان آگاه" کنید به وسیله ترکیبی از جی پی اس و نقشه ها.
پس راحت بشینید و لذت ببرید از : آموزش اساسی توسعه نرم افزار اندروید با جاوا.
متن کامل این فیلم (ترجمه شده به فارسی) :
خب قبل از اینکه شروع کنیم، میخواستم چند تا مطلبی که باید قبل از این درس ها تجربه کرده باشید رو بگم، ولی حالا اگه همه ی این مهارت ها رو هم ندارید و فقط می خواید یه امتحانی بکنید اشکالی نداره، چون خود من هم بعضی وقتا پیش میاد که برای اون دوره که میخوام بگذرونم همه شرایط اولیه لازم رو نداشته باشم.
ولی به طور قطع یک چیزی که حتما باید قبل از این آموزش بلد باشید اینه که تجربه کار با برنامه نویسی شی گرا رو داشته باشید. اندروید خیلی زیاد و سنگین از این مفاهیم استفاده می کنه، پس اینکه بدونید یه کلاس چیه و اینکه ارث بری چه مفهومی داره و اینا، به شما کمک شایانی می کنه برای اینکه تو زمینه اندروید موفق باشید
حالا شما باید یه تجربه هایی از کار با جاوا داشته باشید. دارم می گم یه تجربه هایی، چون خودمم خیلی تو جاوا متخصص نیستم، در واقع من یه پیش زمینه ای از اکشن اسکریپت فلش دارم، ولی تا زمانی که شما یه تجربه هایی با زبان های برنامه نویسی "اکم-اسکریپت" پایه داشته باشید مشکلی نخواهید داشت و هر چقدر هم بیشتر جاوا بلد باشید این دوره (درس) رو خیلی راحتتر پیش میبرید
حالا مطلب دیگه ای که میتونه خیلی براتون مفید باشه آشنایی با محیط توسعه ایکلیپسه. چون همه ابزارهای اندروید از طرف گوگل روی ایکلیپس پایه گذاری شده. پس یه بار دیگه، اگه قبلا با ایکلیپس کار کرده باشید این دوره براتون راحتتر میشه
یه مطلب دیگه ای که میتونه خیلی براتون مفید باشه، آشنایی با خود اندرویده، حالا یا خودتون یه گوشی اندروید دارید یا تو گوشی دوستتون دیدید….فقط یه دانش و آشنایی درباره قابلیت خود سیستم عامل اندروید
پس یه بار دیگه، با همه این پیش دانسته های پایه، شما کاملا آماده اید که این دوره رو بگذرونید :)
۱. دانلود "بسته توسعه نرم افزار" یا SDK از این آدرس، البته گوگل ایران رو تحریم کرده و با IP ایرانی به شما اجازه ورود به این سایت رو نمیده به همین خاطر جدیدترین نسخه اش رو در ادامه برای دانلود گذاشتم.
همون طور که مشاهده می کنید چند تا گزینه برای دانلود وجود داره : برای کاربران ویندوز ، مک و لینوکس
برای کاربران ویندوز دانلود فایل .exe پیشنهاد شده پس همون رو دانلود کنید.
دانلود SDK برای کاربران ویندوز (فایل .exe)
۲. برای استفاده از SDK اندروید به (JDK (Java Development Kit احتیاج دارید در نتیجه اگه قبلا نصب نکرده باشید ازتون می خواد که اول اونو نصب کنید بعد SDK اندروید نصب خواهد شد.
اگه قبلا نصب کردید به مرحله شماره ۴ برید.
۳. برای دانلود باید به این آدرس برید ولی چون شرکت اوراکل ایران رو تحریم کرده، از این آدرس دانلود کنید.
۴.فایل .exe دانلود شده رو اجرا کنید و همه گزبنه ها رو در حالت پیش فرض نگه دارید (هی Next بزن تا برسی به آخرش :دی)
۵. حالا دوباره اون فایل .exe مربوط به SDK (مرحله ۱) رو اجرا میکنی، الان دیگه خودش JDK رو پیدا میکنه
۶. پیشنهاد میشه همه گزبنه ها رو در حالت پیش فرض نگه دارید و Next رو بزنید ، آخرش هم در حالی که تیک این گزینه "Start SDK Manager" خورده روی Finish کلیک میکنید.
۷. حالا SKD Manager اجرا میشه و شروع می کنه به گرفتن (fetching) اطلاعاتی که لازمه دانلود کنید، ولی چون تحریم شدیم ممکنه پیغام خطا بده که نتونست fetching رو کامل انجام بده یا هیچ پیغامی نده، در هر صورت باید SDK Manager تون اینطوری باشه.
دانلود platform-tools برای کاربران ویندوز (Rev. 13) - حجم 10.65 MB
دانلود platform-tools برای کاربران مک (Rev. 13) - حجم 10.9 MB
دانلود platform-tools برای کاربران لینوکس (Rev. 13) - حجم 10.49 MB
دانلود API-10 [حجم ۸۲ مگابایت]
دانلود API-11 [حجم ۱۰۰ مگابایت]
برای استفاده از این بسته ها باید بعد از دانلود از حالت zip خارجشون کنید و داخل فولدر platforms در پوشهی مربوط به SDK بذارید. مثلا برای این عکسی که گذاشته شده فولدر platforms باید در مسیر C:\Useres\q\AppData\Local\Android\android-sdk\platforms، پیدا بشه (اگه وجود نداره خودتون یه فولدر با این اسم بسازید) و بعد فولدر android-7 رو توش قرار بدید.
دانلود API-7 Samples [حجم ۷ مگابایت]
برای استفاده از این بسته ها باید بعد از دانلود از حالت zip خارجشون کنید و داخل فولدر samples در پوشهی مربوط به SDK بذارید. مثلا برای این عکسی که گذاشته شده فولدر samples باید در مسیر C:\Useres\q\AppData\Local\Android\android-sdk\samples، پیدا بشه (اگه وجود نداره خودتون یه فولدر با این اسم بسازید) و بعد فولدر android-7 رو توش قرار بدید.
1.وقتی در طول توسعه نرم افزاتون، احتیاج به آزمایش (تست) برنامتون دارید، حتما نیاز به یه دستگاه مجازی (virtual device) یا شبیه ساز (emulator) دارید. خوب برای ساختن یه دستگاه مجازی اول برنامه مدیریت اس دی کی رو اجرا کنید و از ستون سمت چپ قسمت virtual device رو انتخاب کنید. (در نسخههای جدید ستون سمت چپ حذف شده، برای ساختن دستگاه مجازی از منوی بالای برنامه مدیریت اسدیکی، Tools و بعد هم ...manage AVDs رو انتخاب کنید - تصویر راهنما - )
۲.از ستون سمت راست گزینه new رو انتخاب کنید. در پنجره باز شده باید اسمی برای این دستگاه مجازیتون انتخاب کنید.
۳.حالا در قسمت هدف (target) باید اون نسخه ای از API رو انتخاب کنید که قبلا دانلود کردید. (توصیه می شه نسخه ۲.۱ رو انتخاب کنید تا نرم افزارتون روی دستگاه های بیشتری اجرا بشه)
۴.این شبیه ساز همه چیز رو شبیه سازی می کنه، باید حجم کارت حافظه (SD card) رو هم بهش بدید (پیشنهاد میشه عدد 10000 رو بنویسید)
۵. گزینه ی snapshot رو enabled کنید. این کار (که خیلی هم واجبه :دی) باعث میشه تا هر موقع شبیه ساز رو بستید یه عکس از آخرین وضعیت می گیره و دفعه بعد که خواستید اجراش کنید خیلی سریعتر بارگزاری میشه.
۶.بعدش باید براش یه وضوح تصویر (resolution) مناسب تعیین کنید. (وقتی که خواستیم کارمون رو تو وضوح تصویرهای مختلفی امتحان کنیم برمیگردیم به این قسمت و چند تا دستگاه مجازی با وضوح تصویرهای مختلف می سازیم، ولی فعلا بذارید همون پیش فرضش باشه)
۷.با توجه به سیستمی که استفاده می کنید یه خورده درست کردنش طول می کشه، پس صبر کنید تا تموم بشه.
۸.حالا برای بررسی اینکه آیا دستگاه مجازی درست کار می کنه یا نه، روی اون
دستگاه مجازی که ساختید کلیک کنید و از ستون سمت راست گزینه start رو
انتخاب کنید
۱۰.حالا ازتون می پرسه که شبیه ساز رو در چه اندازه ای می خواید اجرا کنید (با توجه به وضوح تصویرتون، عدد مناسب وارد کنید) مثلا اینجا اندازه ی ۸۰۰ در ۴۸۰ براش بزرگ بوده گزینه ی scale display to real size رو تیک زده و اندازه دلخواهش رو وارد کرده. در ضمن گزینه ی wipe user data رو میتونید تیک دار کنید تا اگه قبلا از این شبیه ساز استفاده شده باشه (یا حالا مثلا بعدا که دوباره خواستید برای یه پروژه دیگه ازش استفاده کنید) تمام اطلاعات اضافی ذخیره شده رو پاک می کنه و همه چیز رو به تنظیمات اولیه (کارخونه) بر میگردونه.
دو تا گزینه ی بعدی رو هم بذارید تیک دار بمونه (مربوط به توضیحات شماره ۵)
۱۱.حالا وقتی روی Lunch کلیک کنید، شبیه ساز شروع به کار می کنه (البته وقتی برای اولین بار اجراش می کنید خیلی کند پیش می ره از دفعه بعد درست می شه به خاطر ویژگی که تو شماره ۵ تیک دار کردید)
تو آموزش های بعد یاد میگیریم چطور از دستگاه مجازی های متنوع، برای امتحان نرم افزارمون تو نسخه های مختلف اندروید و یا اندازه صفحه های مختلف موبایل ها استفاده کنیم
تماشای بر خط (لینک مستقیم) فیلم آموزش مراحل نصب ایکلیپس در ویندوز
نسخه ی pdf این آموزش [2.13 مگابایت]
۰.قبل از نصب ایکلیپس باید اس دی کی رو نصب کرده باشید (راهنمای نصب SDK).
۱.ایکلیپس محیطیه که برای توسعه اندروید ازش استفاده می کنید. (به جای استفاده از notepad برای نوشتن کدها و command line برای کامپایل کردن، خیلی راحتتره که از ایکلیپس استفاده کنید) برای نصب ایکلیپس به سایت اصلیش (اینجا) برید و نسخهی مناسب سیستمتون رو دانلود کنید. برای این کار روی دکمه ی زرد بالا سمت راست صفحه کلیک کنید.
۲.با توجه به اینکه SDK رو نصب کردید، حتما JDK روی سیستمتون نصب هست. حالا برای توسعه اندروید به یه نسخه ی ساده از ایکلیپس احتیاج داریم. پس همون اولین گزینه (Eclipse IDE for Java Developers) رو انتخاب کنید. و با توجه به سیستمتون روی یکی از موارد 32 بیتی یا 64 بیتی کلیک کنید.
۳.روی لینک کمکی که براتون آورده کلیک کنید تا دانلود شروع بشه.
۴.فایل دانلود شده یه فایل zip هست. روش دوبار کلیک کنید تا داخلش بشید.
چون ایکلیپس یه نرم افزار بر پایهی جاواست یه فایل نصب مثلا با فرمت .exe نداره. برای همین پوشهی eclipse که داخل فایل زیپ هست رو cut کنید.
۵.از درایو C (درایوی که ویندوز توش نصب شده) به پوشهی Program files برید و paste کنید. (برای اینکار به اجازهی ادمین احتیاج دارید، اگه کاربر ادمین (administrator user) هستید، continue بزنید) - البته اگه خواستید می تونید این مرحله رو انجام ندید
۶.حالا وقتی روی پوشهای که paste کردید کلیک کنید، فایل اجرایی ایکلیپس رو میبینید. روش کلیک کنید تا برنامه اجرا بشه.
۷.ممکنه این پیغام رو بده که صحت و سقم این برنامه معلوم نیست، گزینهی Always ask before opening this file رو غیر فعال کنید تا هر دفعه ازتون نپرسه. و روی Run کلیک کنید تا برنامه اجرا بشه.
۸.وقتی روی برنامه کلیک میکنید، ازتون میپرسه که چه محلی رو برای ذخیره ی پروژه هاتون در نظر گرفتید؟
اگه نمی خواید هردفعه که ایکلیپس رو باز میکنید این سوال رو ازتون بپرسه، گزینهی use this as the default and don't ask again رو فعال کنید.
۹.برای اولین بار که ایکلیپس رو اجرا میکنید، یه صفحهی خوش آمد میاره، از تو این صفحه روی Workbench کلیک کنید
۱۰.خوب اینم از صفحهی ایکلیپس، نصبش تموم شد.
تماشای برخط (لینک مستقیم) فیلم آموزش مراحل نصب «ابزار توسعه اندروید» ADT در ایکلیپس
دریافت نسخه pdf این آموزش [3.22 مگابایت]
۱.برای نصب ADT باید به این آدرس برید، که البته چون گوگل ایران رو تحریم کرده و به IP ایرانی اجازه ورود به این سایت رو نمیده. اون چیزی که لازمه از اینجا دانلود کنید رو براتون آپلود کردم (نسخه 20.0.2 با حجم ۱۲ مگابایت). اگه میخواید از خود سایت استفاده کنید، تقریبا به انتهای صفحه برید جایی که نوشته Downloading the ADT Plugin، یه URL (آدس اینترنتی) اونجا هست کپیش کنید.
۲. به برنامه ایکلیپس برید و از منوی بالاش Help رو بزنید بعد هم Install New Software.
۳. اگه تو مرحله قبل، ADT رو به صورت zip شده دانلود کردید، روی Add کلیک کنید، گزینه Archive رو بزنید، به آدرسی برید که فایل zip شده رو ذخیره کردید، (همون طوری که zip هست و Extract یا UnArchive اش نکنید) فایل رو انتخاب کنید، open رو بزنید، یه اسم براش بذارید و OK رو بزنید.
اگه هم تو مرحله قبل آدرس اینترنتی رو کپی کردید، روی Add کلیک کنید، یه اسم براش بذارید، لینک رو paste کنید و ok رو بزنید و منتظر بمونید تا لیست رو بارگزاری کنه.
۴.وقتی لیست ابزار توسعه اومد، گزینه Developer Tool رو با تمام زیر شاخه هاش انتخاب کنید (چون همهش رو احتیاج داریم). next بزنید. بعد یه صفحه میاد که اون چیزایی که می خواید دانلود کنید رو مرور میکنه Next رو بزنید.
۵. باید جواز و مدارک اونا رو قبول کنید پس I agree with terms of the license agreement رو انتخاب کنید و Finish رو بزنید.
۶. حالا شروع به نصب میکنه، و با این پیغام روبرو میشید که به شما هشدار میده دارید مواردی رو نصب میکنید که ناشناخته هستن و ممکنه خطرناک باشن، مهم نیست OK رو بزنید.
۷.وقتی نصبش تموم شد، می تونید همون موقع شروع به کار کنید ولی خیلی توصیه میشه که یه بار برنامه رو از اول اجرا کنید، پس گزینه Restart Now رو انتخاب کنید (طولی نمیکشه)
۸.خوب وقتی دوباره ایکلیپس باز شد، سریعترین راه برای اینکه چک کنید همه چیز درست نصب شده اینه که باید قسمتی به نوار بالای برنامه اضافه شده باشه که شامل دستوراتی برای ساختن برنامه اندرویده. (تو تصویر مشخصه)
کاربرد دکمه هایی که اضافه شده (از چپ به راست به ترتیب)
باز کردن برنامه مدیریت اس دی کی (SDK manager)
ساختن یه پروژه اندروید جدید
ساختن یه پروژهی آزمایشی
ساختن یه فایل XML اندروید
۹.جالا بیاید یه کم محیطی که قراره باهاش کار کنیم رو اصلاح کنیم و تغییر بدیم. مثلا قسمت Task list که اول ستون سمت راسته به درد نمیخوره جا زیادی گرفته، ضربدرشو میزنیم. ما در کار با پروژه های اندرویدی خیلی به پنل ویژگیها (Property Panel) احتیاج داریم و باید دم دست باشه، پس روی window بعد هم Show view میریم، اگه توی لیست بود که انتخابش می کنیم وگرنه other رو بزنید تا پیداش کنیم.
۱۰. تو قسمت General انتخابش کنید و OK بزنید.
۱۱.الان پنل ویژگیها اون پایین اومده، برای اینکه باهاش راحتتر کار کنیم، میکشیم (Drag) میبریمش پیش OutLine (که تو ستون سمت راسته)
۱۲.اون پنل پایین رو هم خیلی احتیاج نداریم می تونید کوچیکش کنید (Minimize).
۱۳.خوب اگه دلتون میخواد ستون سمت راستی رو هم کوچیک کنید تا جا برای کد نوشتن وسیعتر بشه.
حالا کار مهمی که باید انجام بدیم اینه که به ایکلیپس بگیم که اندروید اسدیکی کجا هست (تا ایکلیپس بتونه بهش لینک بشه). برای این کار از نوار بالا window بعد هم preferences. (مک : از نوار بالا روی Eclipse کلیک کنید و بعد preferences)
۱۴.از ستون سمت چپ روی Android کلیک کنید، جلوی قسمتی که نوشته SDK Location و محل اسدیکی رو میخواد، روی Browse بزنید. به مکانی برید که اسدیکی رو ذخیره کردید. پوشهی android-sdk رو انتخاب کنید و ok بزنید.
۱۵. روی Apply کلیک کنید. حالا باید نسخه هایی رو که دانلود کردید رو نشون بده، اگه همه چیز مرتبه، OK بزنید.
۱۶. حالا اگه رو دکمهی باز کردن برنامه مدیریت اس دی کی (تو مرحله شماره ۸ گفته شده) کلیک کنید، مدیریت اسدیکی رو اجرا میکنه (اگه قبل از مرحله ۱۳ روش میزدید پیغام خطا میداد که محل اسدیکی رو نمیدونه)
۱۷.بعد از انجام تمام این کارا، شما الان رسما میتونید توسعه اندروید (کد زدن) رو آغاز کنید.
تماشای برخط (لینک مستقیم) فیلم آماده کردن دستگاه مجازی برای توسعه
دریافت نسخه pdf این آموزش [348 کیلوبایت]
وقتی میخواید که نرم افزارتون رو روی دستگاه واقعی اندروید (گوشی اندرویدی) امتحان کنید، باید یه سری نکات رو رعایت کنید تا برنامتون اجرا بشه.
خوب قبل از اینکه نشونتون بدم باید بگم که سیستم عامل گوشی های اندروید، ممکنه یه تفاوتهای کوچیکی باهم داشته باشن و خیلی کم پیش میاد دقیقا مثه همین شبیه سازی که میبینید باشه، مثلا گوشی های HTC یا Motorola و ... سیستم عاملشون یه تفاوتهایی داره و دقیقا همون نسخهی خام گوگل رو استفاده نمیکنن. ولی در کل محلی که تنظیمات (Setting) قرار میگیره معمولا یکیه.
۱.خوب با توجه به این توضیحات، توی گوشی اندرویدتون منو (Menu) رو بزنید. بعد هم Settings.
۲.بعد هم Applications.
۳. بعد هم Development.
خوب از همه مهمتر اینه که گزینهی USB Debugging فعال باشه تا وقتی با کابل گوشی رو به کامپیوتر وصل میکنید بتونید به راحتی نرم افزارتون رو روش امتحان کنید.
گزینهی سوم یعنی Allow Mock Locations زمانی به درد میخوره که تو برنامتون از امکانات جیپیاس (مکان یاب) استفاده کرده باشید. اگه این گزینه فعال نشده باشه اجازه نمیده برای تست کردن برنامتون از مکانهای جعلی استفاده کنید. مثلا احتیاج دارید ببینید تو یه شهر دیگه اون قسمتی از برنامتون که مربوط به مکان فرد میشه، چطور عمل میکنه. میتونید با فعال کردن این گزینه تو شهرخودتون باشید ولی جیپیاس نشون بده یه شهر دیگه اید تا اینطوری برنامتون رو امتحان کنید.
تماشای برخط (لینک مستقیم) فیلم «نمای کلی از توسعه اندروید»
اول بریم سراغ معماری اندروید :
حالا خیلی سریع به نسخه های مختلف اندروید می پردازیم
حالا نگاهی می اندازیم به بنیاد برنامههای اندروید :
بیاید یه خورده در مورد همین موارد آخر بیشتر یاد بگیریم.
فایل های ظاهری اندروید
مواردی که تا اینجا بررسی کردیم یک چکیده از توسعه اندروید بود و اگه جایی رو خوب متوجه نشدید نگران نباشید، وقتی وارد کار بشیم و تمرین کنیم حتما خوب متوجه خواهید شد.
خوب بعد از تمام مراحل اولیه ای که انجام دادیم، وقتش رسیده که یاد بگیریم چطور یه پروژهی اندروید بسازیم. برای این کار برنامه ایکلیپس رو باز کنید.
۱.برای ساختن یه پروژه قبلا یه راه طولانی بوده، اما الان می خوایم از راه سریعتری استفاده کنیم.فقط کافیه از ابزاری که بعد از نصب ADT تو ایکلیپس اضافه شد استفاده کنید. (راهنمای نصب ADT و ابزار اندروید در ایکلیپس). همون طور که قبلا گفته شد دکمهای برای ساختن پروژه جدید در اندروید وجود داره. (این عکس) روش کلیک کنید. خوب حالا باید مشخصات پروژه تون رو تعیین کنید.
اولین گزینه اسم برنامه است، (همون اسمی که تو play store خواهد بود و همین طور توی لیست برنامه ی گوشی)
فیلد بعدی اسم پروژهایه که میخواید بسازید و فقط تو محیط ایکلیپس ازش استفاده میشه و میتونه همون اسم واقعی برنامهتون باشه.
فیلد بعدی اسم پکیج یا بستهی برنامهتونه و package name معمولا برعکس دومین سازندهی برنامه است. باید حواستون باشه که این اسم خیلی مهمه چون وقتی میخواید برنامهتون رو به روز رسانی کنید تنها راهی که سیستم اندروید متوجه میشه این آپدیت مربوط به کدوم نرمافزاره از همین طریقه. و باید توی این دنیای برنامهها هر برنامهای package name مخصوص خودش رو داشته باشه.
در قسمت بعدی باید نسخهی اس دی کی مورد نظرتون رو انتخاب کنید. برای این کار پیشنهاد میشه کمترین API levelای که برنامتون میتونه باهاش کار کنه رو انتخاب کنید، مثلا اگه از هیچ ویژگی خاص جینجربرد استفاده نمی کنید، معقول تره که نسخه های پایین تری ازش رو انتخاب کنید تا کاربرانی که نسخه های پایین تری دارند هم بتونن از برنامتون استفاده کنن. در فیلد بعدی هم باید کمترین نسخهی API ای که کاربر میتونه داشته باشه رو انتخاب کنید، مثلا می خواید از یه ویژگی خاص آیسکریمسندویچ استفاده کنید ولی با این حال برنامهتون روی گوشی های مدل پایین ترهم اجرا میشه ولی ممکنه باگ داشته باشه، شما Minimum Required SDK رو میذارید رو API8 تا توی play store همه بتونن دانلودش کنن و بعدا وقت باگهاش دراومد درستش کنید.خود گوگل هم پیشنهاد کرده API 8 رو انتخاب کنید تا تقریبا تمام گوشیهای اندروید برنامهتون رو اجرا کنن.
گزینه ی ceate custom launcher icon اگه تیک خورده باشه یعنی اینکه همین الان که میخواید پروژهی برنامهتون رو بسازید، بیاید آیکون برنامهتون رو هم طراحی کنید و بذارید تو برنامه.
گزینهی بعدی برای اینه که بخواید کتابخانهی اندروید بسازید.
گزینهی بعدی هم اگه تیکش رو بردارید میتونید محل ذخیره شدن پروژه رو تغییر بدید.حالا که همه چیز رو مشخص کردید next رو بزنید.
۲. اگر تو مرحلهی قبل گزینهی ساختن آیکون رو تیک زده باشید حالا ازتون می خواد که آیکون برنامهتون رو درست کنید، میتونید یه نوشته رو انتخاب کنید و تزئینش کنید (Text) یا از طرحهای گرافیکی خود اندروید استفاده کنید (Clipart) یا اینکه یه عکسی رو از توی کامپیوترتون انتخاب کنید و به عنوان آیکون برنامه ازش استفاده کنید.
بعد با گزینه هایی که داره محل قرار گرفتن عکس رو تنظیم کنید. گزینهی Trim Surrounding Blank Space فضای خالی اطراف عکس رو میبره. اگه تیکش رو بردارید، می تونید خودتون انتخاب کنید چقدر از فضای اضافهی دور عکس بمونه.
Shape سه تا حالت داره یا هیچی (None) یا مربعی (Square) یا دایرهای (Circle). و میتونید رنگ پس زمینه رو هم انتخاب کنید.
بعد از طراحی آیکون برنامهتون next رو بزنید.
۳.گزینهی بعدی یه فعالیت (activity) میسازه. و مشخصه که هر برنامه ای حداقل باید یه صفحه داشته باشه که همون فعالیته. پس بذارید گزینهی Create Activity فعال بمونه، حالا باید انتخاب کنید که یه فعالیت معمولی میخواید یا یه فعالیت با جزئیات جامع (MasterDetailed). اگر فعالیت با جزئیات کامل رو انتخاب کنید بهتون این امکان رو میده که روی تبلتها دو تا ستون داشته باشید و روی صفحات کوچکتر یه ستون و دوتا فعالیت براتون میسازه و غیره و ازتون میخواد که سطح API برنامهتون رو بالاتر از API 11 انتخاب کنید تا این ویژگی فعال شه. اگر هم یه فعالیت معمولی میخواید که میتونید next رو بزنید.
۴.اگر در قسمت قبل انتخاب کرده باشید که یه فعالیت (activity) بسازید، الان ازتون میخواد که اول اسم فعالیت رو انتخاب کنید بعد اسم صفحه بندیاش رو انتخاب کنید. بعد ازتون میخواد ماهیت فعالیتتون رو انتخاب کنید اگر None رو انتخاب کنید مشکلی نیست ولی اگه هر کدوم از گزینههای دیگه رو انتخاب کنید ازتون میخواد که کمترین سطح API تون رو ۱۴ بذارید (و طبعا باید API 14 رو هم دانلود و نصب کرده باشید)
قسمت بعد از شما میخواد که برای وقتی که توی این فعالیت هستید و کلید بازگشت زده میشه، اگه تابع مشخصی تو نظرتون هست بنویسید اگر هم نه که خالی بذاریدش.
قسمت بعدی هم اسم فعالیته که در زمان اجرا بالاش نوشته میشه. Finish رو بزنید تا پروژه ساخته بشه.
ممکنه ازتون بخواد که کتابخانهی اندروید رو نصب کنید و این پیغام خطا رو نشون بده :
به مسیری که sdk تون ذخیره شده برید، جایی که فولدرهای tools, platform-tools, platforms و.... قرار داره، یه فولدر با اسم extras بسازید، بعد توش یه فولدر دیگه به اسم android بسازید، بعد این فایل رو دانلود کنید و از حالت فشرده خارج کنید و داخل فولدری که همین الان ساختید قرار بدید، ایکلیپس رو اگه باز هست ببندید و دوباره اجراش کنید، حالا شروع به ساختن پروژهی جدید کنید.
۵.خوب بعد از اینکه پروژه ساخته شد. قسمت سمت چپ ایکلیپس توی ستون Package Explorer باید اسم پروژتون رو ببنید. روی دکمهی مثلثی بغلش کلیک کنید تا زیرشاخه هاش رو نشون بده، بعد src رو انتخاب کنید و بعد هم اسم package تون رو. می بینید که یه فایل جاوا ساخته شده که مربوط به همون activity هست که تو مرحله قبل دستور داده بودید بسازه.
ما تو این فایل جاوا می تونیم توابع مختلفی رو override (دوباره نویسی تابعی که از والد -در اینجا کلاس Activity- ارث بری شده) کنیم تا activity کامل تری داشته باشیم. به طور پیش فرض خودش onCrete رو override کرده. همون طور که قبلا اشاره شد، می تونیم توابعی مثه onPause , onStart و... رو override کنیم.
۶.override کردن تابع onCreate ضروریه و می بینید که اول دستور super.onCreate رو فراخوانی می کنه بعد هم با دستور setContentView محتواش رو روی صفحه بندی (layout) این activity تنظیم می کنه. (با ارجاع به فایل xml ای که در شماره بعد توضیح داده شده) تا وقتی که ContentView تنظیم یا ست نشده باشه ما در خروجی چیزی نمی بینیم.
۷.اون R.layout.main به فایل xml ای ارجاع داده میشه به نام main. این فایل xml در زیرشاخه res و بعد هم layout قرار داره. (بقیه زیر شاخه ها رو تو شمارهی ۱۳ آموزش خواهیم داد) که اگه روش کلیک کنید براتون یه صفحه ای رو میاره که توش واسط کاربری (UI) برنامه تون رو میتونید درست کنید.
۸.اگه از قسمت پایینی همین صفحه main.xml رو انتخاب کنید، کد xml نوشته شده برای نمایش این activity رو بهتون نشون میده. همون طور که می بینید این activity روی یک linearlayout سوار شده (خط ۲ کد) و یک TextView هم که به صورت پیش فرض روی صفحه بود اینجا ساخته و مقدار دهی شده. (خط ۷ کد). در پست های بعدی این قسمت بیشتر توضیح داده خواهد شد.
۹. خوب حالا برای اجرای نرم افزار روی دکمهی Run بالای صفحه کلیک کنید (توی تصویر مشخصه). و چون اولین باره که می خواید پروژه های اندرویدی رو اجرا کنید ازتون می پرسه چه مدلی قصد دارید اجراش کنید، همون اولین گزینه یعنی Android Application رو انتخاب کنید و OK رو بزنید.
۱۰.حالا شبیه ساز (emulator) شروع به شبیه سازی این برنامه می کنه یعنی اول برنامه رو روی دستگاه مجازی نصب می کنه و بعد هم اون رو اجرا می کنه، که یه هم چین چیزی می شه :
و اگه تو دستگاه مجازی به قسمتی برید که همه برنامه ها رو نشون میده میبینید که این برنامه هم نصب شده و با باز و بسته کردن شبیه ساز از بین نمی ره و تنها در صورتی از بین می ره که خودتون wipe user data رو که قبلا توضیح دادم (شماره ۱۰ این آموزش) رو انتخاب کرده باشید یا به صورت دستی پاکش کنید (uninstall).
۱۱.خوب تا اینجا فهمیدیم که یه پروژه به صورت پیش فرض یه فایل جاوا داره که کلاس Activity رو ارث بری (extends) می کنه و توش به یه فایل xml اشاره می کنه که همون UI یا واسط کاربریه.
حالا بیاید با فولدرهای دیگهی پروژه آشنا بشیم. در ستون سمت چپ یه فولدری هست به نام gen که توصیهی اکید میشه اصلا دستکاریش نکنید. چون شامل فایل هایی هست که به صورت خودکار generated میشه. ولی حالا یه کم درباره اش توضیح می دیم. روی فایل R.java کلیک کنید تا بازش کنه.
همین طور که در طول برنامه ما منابعی (resources) رو به برنامه اضافه می کنیم (که در فولدر res ذخیره میشن) اندروید به صورت خودکار ورودی هایی رو براشون در این فایل R.java تعبیه می کنه. مثلا برای آیکن برنامه یه ورودی ic_launcher ساخته و بهش یه عدد خاصی رو نسبت داده.
خوب حالا لازم نیست نگران این قسمت باشید فقط می خواستم بدونید هم چین فایلی وجود داره.
۱۲.فولدر بعدی که می خوایم بررسی کنیم android 2.1 هست، این فولدر در واقع همون SDK هست که شامل تمام توابع و ساختار هاییه که به صورت پیش فرض تعریف شده و همشون در یک کتابخانه به نام android.jar گردآوری شده. شاید در طول انجام پروژه اصلا نیازی پیدا نکنید که بهش مراجعه کنید ولی خوب اگه از توابع و اینا خواستید مطلع بشید می تونید یه نگاهی بهش بندازید.
۱۳. بعدش فولدر assets هست (که بعدا بهش می پردازیم) و بعد هم فولدر res که مخفف resources به معنی منابع هست و تمام عکس ها و فایل هایی که می خواید تو برنامه تون ازش استفاده کنید رو باید اینجا نگه داری کنید. مثلا الان آیکن برنامه به صورت پیش فرض توی فولدرهای drawable وجود داره. تمام فایل های xml مربوط به layout ها (صفحه بندی ها) دراینجا نگه داری می شه.
۱۴. فایل بعدی AndroidManifest.xml هست که توی پست بعدی مفصل دربارش توضیح خواهیم داد. در واقع این فایل یک ویرایشگر بصریه (Visual Editor) که قسمت های مختلف نرم افزار رو می تونیم توش تغییر بدیم. در واقع این فایل برنامه شما رو برای سیستم اندروید تعریف و تشریح می کنه.
دو تا فایل بعدی یعنی progaurd.cfg و project.properties هم مهم نیستن.
خوب این یه شناخت پایه ای بود بر پروژه های اندرویدی!
تماشای برخط [لینک مستقیم] فیلم آموزش «کارکردن با AndroidManifest.xml»
زیرنویس انگلیسی [English Subtitle]
دریافت نسخه pdf این آموزش [1.31 مگابایت]
۱.حالا می خوایم یه نگاه دقیق تری روی AndroidManifest.xml داشته باشیم به خاطر اینکه فایل مهمیه و برنامه شما رو برای سیستم اندروید تشریح می کنه، پس مهمه که همه چیز رو در این فایل درست وضع کرده باشید. خوب یه پروژه اندروید بسازید (نحوه انجام این کار) و روی AndroidManifest.xml کلیک کنید تا باز بشه. خوبیه ایکلیپس اینه که به شما اجازه می ده این فایل رو در حالتهای مختلفی ویرایش کنید، مثلا حالت ویرایش بصری که تو عکس هست یا اینکه مستقیما از خود فایل xml ویرایش کنید (عکس بعدی).
۲.وقتی به حالت ویرایش xml نگاه می کنید میبینید که خیلی ساده تر از حالت ویرایش بصریه و بیشتر توسعه دهنده ها معمولا حالت ویرایش xml رو بیشتر میپسندن، ولی خوب این حالت یه نقطه ضعف هایی هم داره، مثلا ویژگی پیشنهاد کد (code hinting) نداره و برای صوفه جویی در وقت تو این جور مواقع بهتره از همون حالت ویرایش بصری کمک بگیریم.
۳.خوب حالا بیاید این حالت های ویرایش بصری رو یه نگاهی بندازیم و بررسی کنیم. در قسمت Manifest ما بسته (package) برنامه رو تعریف می کنیم (که قبلا انجام دادیم). و می تونیم نسخهی (version) درونی برنامه رو تعیین کنیم و یه رشتهی (string) شماره نسخه تعیین که کاربر می بینه. کاری که بعده ها قراره تو این صفحه انجام بدیم خروجی گرفتن از برنامه است (با کلیک روی Use the Export Wizard)
۴.در حالت ویرایش xml، تگ های manifest و application تغییراتی رو که در نوار Manifest و Application ایجاد می کنید منعکس می کنه.
۵. در نوار Application، موارد مختلفی رو می تونید تنظیم یا ویرایش کنید، مثلا Label همون اسم نرم افزارتونه که تو گوشی اجرا میشه، یا icon تصویریه که از برنامه شما تو گوشی دیده میشه، یا Theme که تو آموزش های آینده بیشتر توضیح داده خواهد شد. مثلا تو قسمت Permissions می تونید به کاربر قبل از نصب برنامتون هشدار بدید که از چه اطلاعاتیش استفاده می کنید.
تو اون قسمت پایینی به اسم Application Nodes، می تونید فعالیت های (Activities) برنامه رو تعریف کنید. (که فعلا تنها یه فعالیت main وجود داره.)
۶. در نوار Permissions می تونیم تمام در خواست هایی که از کاربر داریم (برای استفاده از اطلاعات داخل گوشیش) رو مطرح کنیم و از کاربر قبل از نصب برنامه اجازه استفاده از اون اطلاعات خاص رو بگیریم.
در مورد Instrumentation هم تو این دوره بهش نمی پردازیم.
تماشای برخط [لینک مستقیم] فیلم آموزش «فعالیت ها (activities)»
زیرنویس انگلیسی [English Subtitle]
دریافت نسخه pdf این آموزش [2.11 مگابایت]
همون طور که قبلا هم اشاره شد، فعالیت ها (activities) یکی از ساختارهای اصلی برنامه اندرویده. اگه بخوام خیلی ساده بگم، یه فعالیت یه صفحه ی ساده از برنامهی شماست. پس خیلی مهمه که مبانی فعالیتها رو خوب یاد بگیرید.
۱.برای شروع اول یه پروژه اندروید تو ایکلیپس میسازیم. (راهنما) از منوی سمت چپ روی اسم پروژه کلیک می کنیم و از شاخهی src به دومین زیر شاخه میریم که یه فایل جاواست. این فایل کلاس فعالیت رو ارثبری میکنه و توسعه میده. تو خط آخر این فایل جاوا (تو تصویر آبی شده) میبینیم که محتوای بصری این فعالیت (ContentView)، رجوع داده شده به یه فایل به نام main که در فولدر layout در منابع (resource) هست.
۲.پس اگه بریم توی شاخهی res و بعد layout و بعد main.xml این فعالیت رو میبینیم. که به طور پیش فرض یه متن Hello World توش وجود داره. توصیه میکنم برای اینکه مطمئن بشید برنامهتون درست کار می کنه یه بار Run کنید.
۳.خوب حالا میخوام خیلی سریع چند تا نکته رو تو AndroidManifest.xml براتون توضیح بدم. در حالت ویرایش xml، میبینیم که درون تگ application، تگ activity وجود داره. یکی از چیزایی که اینجا میبینیم <intent-filter> هست. (که با توضیحات مفصل تو یه پست دیگه بررسی خواهد شد) به طور ساده، این تگ به سیستم اندروید میگه که وقتی این برنامه شروع به کار میکنه، اولین فعالیتی که باید اجرا بشه، اون فعالیتیه که داخل تگ action قرار داره. و این طور معرفی شده :
<action android:name="android.intent.action.MAIN" />
۴.اگه بخوایم یه فعالیت دیگه هم به برناممون اضافه کنیم، احتیاج داریم که دو فایل Main.java و main.xml رو دوباره بسازیم. (البته اسم این دوفایل رو هرچیزی که دلتون بخواد میتونید بذارید و محدودیتی نداره ولی برای فراگیری راحتتر، سعی کردم که در همه پروژهها اسمهای یکسانی انتخاب کنم) یعنی باید اول یه فایل جاوا بسازیم که کلاس activity رو ارثبری کنه. برای این کار روی اسم package راست کلیک میکنیم، بعد New و بعد هم class.
۵.یه اسمی براش بذارید (جلوی فیلد Name) من اسمش رو میذارم Dovomi و بعد رو Browse کلیک کنید. اینجا میخوایم کلاسی رو انتخاب کنیم که این فعالیت قراره ارثبری کنه. پس تو فیلد choose type بنویسید activity و کلاس Activity - android.app رو انتخاب کنید. روی ok کلیک کنید بعد هم Finish.
۶.حالا یه فایل جاوا درست شده به نام Dovomi که کلاس Activity رو ارثبری میکنه. این فعالیت باید تابع (متد) onCreate رو دوباره نویسی (override) کنه. توی کلاس بنویسید oncre و با زدن ctrl + space اسم توابعی (متدهایی) که با این حروف آغاز میشه رو میاره، تابع onCreate رو انتخاب کنید.
۷.قدم بعدی، اینه که یه فایل xml بسازیم که شبیه main.xml باشه ولی واسط کاربری فعالیت Dovomi رو نگه داره. وقتشه که از سومین دکمهی مخصوص اندروید که در toolbar ایکلیپس وجود داره استفاده کنیم (این دکمه به ما کمک میکنه که یه فایل xml اندرویدی بسازیم - تصویر) روش کلیک کنید، صفحهای باز میشه، برای این فایل یه اسم بذارید (جلوی فیلد File) البته این نام گذاری خیلی سخت و محکمه - تنها از حروف کوچک و اعداد و خط زیر _ می تونید استفاده کنید و اول اسم هم باید با حروف شروع بشه - خوب Resourse Type که Layout باشه. Root Element به معنای المان ریشه رو هم باید انتخاب کنیم. فعلا همون LinearLayout باشه تا بعدا مفصل بقیه رو توضیح بدم. LinearLayout سادهترین طرحبندی صفحه است که وقتی چیزهایی رو به صفحه اضافه میکنیم به روش طولی (Linear) طرحبندی(Layout) میکنه. وقتی Finish رو بزنید یه فایل xml میسازه.
۸.وقتی فایل xml ساخته شد برای شما در حالت طرحبندی گرافیکی (Grafical Layout) میاره. که از اینجا میتونید هر عنصری که بخواید رو توی صفحهبندی تون انتخاب کنید. میتونید برای شروع یه متن از ستون سمت چپ بکشید و توی صفحهی مشکی رها کنید، برای تغییر متن، روش یه بار کلیک کنید و از properties (که قبلا آورده بودیمش سمت راست محیط کارمون)، فیلد Text رو پیدا کنید و متنش رو تغییر بدید. از بخش properties خیلی از ویژگیهای عناصر رو میشه تعیین کرد.
۹. حالا که فعالیت دوم رو ساختیم، نیاز داریم که یه جوری تو برناممون اجراش کنیم، چون وقتی برنامه باز میشه همون فعالیت اصلی اجرا میشه. برای این منظور، به فعالیت اصلیمون میریم (main.xml) و یه دکمه میذاریم. در قسمت properties، خود ایکلیپس به طور پیش فرض، یه id برای دکمه میذاره (اینجا button1)، که برای ارجاع هرچیزی به این دکمه، به id (شناسه) اش احتیاج داریم. شما میتونید این شناسه رو از همینجا تغییر بدید.
۱۰.الان میخوایم یه کدی بنویسیم که وقتی کاربر روی این دکمه کلیک کنه، فعالیت Dovomi اجرا بشه. برای اینکار میریم به فایل main.java. زیر آخرین خط نوشته شده در تابع (متد) onCreate، چند خط اضافه میکنیم تا به اون دکمهای که ساختیم بتونیم رجوع بدیم. برای این منظور، یه کنترل Button میسازم به اسم b. برای ارجاع از دکمهای که تو واسط کاربری ساختیم به این کنترل، باید از تابع findViewbyId استفاده کنیم. در واقع این تابع آدرس اون دکمه رو از واسط کاربری میگیره و به کنترلی (b) که تو فایل xml ساختیم ارجاع میده. توی پرانتزهای این تابع بنویسید R.id وقتی یک نقطه بعد از این بگذارید، تمام اشیائی که میتونید بهشون رجوع بدید رو نشون میده، button1 رو انتخاب کنید. (الان کنترل b، ارجاع داده شد به اون دکمهای که در شماره قبل ساختیم)
۱۱.با زدن کلیدهای ctrl +1 در ویندوز و cmd + 1 در مک، میبینیم که از برنامه خطا میگیره.
دریافت نسخه pdf این آموزش[2.78 مگابایت]
۱۱.با زدن کلیدهای ctrl+1 در ویندوز و cmd+1 در مک، میبینیم که از برنامه خطا میگیره و برای رفع مشکل پیشنهادهایی رو میده، اینجا بهتره با انتخاب گزینه 'import 'Button کلاس دکمه رو وارد(import) میکنیم.
۱۹.هر فعالیتی که در برنامه شما وجود داره، باید تو فایل manifest تعریف شده باشه، خوب پس الان باید تو فایل manifest یه فعالیت جدید درست کنیم، با نوشتن این کد
<activity android:name="" />
ساختن یه فعالیت جدید رو شروع میکنیم، در قسمت اسم باید به اسم فعالیتیمون ارجاع بدیم، یه نقطه (.) میذاریم تا به بستهی پیش فرض (ir.AndroidCode.ir) اشاره کنه و بعد مینویسیم Dovomi. چون نمیخواهیم intents تعریف کنیم، فقط کافیه همین کد رو بنویسم.
<activity android:name=".Dovomi" />
حالا دوباره پروژه رو اجرا کنید.
۲۰.وقتی برنامه تو شبیه ساز اجرا شد، روی دکمه کلیک کنید، میبینید که با این کار برنامه به فعالیت Dovomi رفته ولی هیچی نشون نمیده و خبری از اون متنی که نوشته بودیم نیست، خوب اگه به فایل جاوامون برگردیم، تفاوت فایل جاوای dovomi و main در اینه که ما هنوز محتوای بصری رو به فایل جاوا ضمیمه نکردیم، (یعنی تابع setContentView رو استفاده نکردیم، چون این تابع به سیستم اندروید میگه که برای این فعالیت از کدوم محتوای بصری -فایل xml- استفاده بکنه)
پس این کد رو اضافه میکنیم. (ورودی تابع : به قسمت منابع یا resource برو از پوشه ی layout فایل dovomi.xml رو بردار)
setContentView(R.layout.dovomi);
حالا پروژه رو دوباره اجرا کنید.
۲۱.خوب دیگه این دفعه، وقتی رو دکمه کلیک میکنید به فعالیت دوم می ره و متنی که نوشتیم رو نشون میده :)
به طور خلاصه : باید اول یه فایل جاوا بسازید، اگه میخواید محتوای بصری جدیدی درست کنید یه فایل xml هم برای اون درست میکنیم و به فایل جاوا پیوست میکنیم (شماره ۲۰) ، یه بخش مهم اینه که این فایل xml رو تو manifest تعریف کنید (شماره ۱۹)
دریافت source code این آموزش :
فایل های جاوا درون پکیج قرار می گیرد و فایل های xml داخل پوشه ی layout در پوشه ی res (راهنما : با توجه به این عکس فایل ها را در پوشه های مناسب قرار دهید)
دانلود فایل AndroidManifest.xml
این فایل در پوشه ی اصلی قرار می گیرد.
تماشای برخط [لینک مستقیم] فیلم «آموزش نحوه استفاده از مفاهیم آشکار»
زیر نویس انگلیسی [English Subtitle]
نسخه pdf این آموزش[1.75 مگابایت]
تا اینجا یاد گرفتیم که چطور با فعالیت ها (activities) کار کنیم، اگه یادتون باشه برای شروع فعالیت Dovomi از intent استفاده کردیم، کار مفهوم (intent) اینه که یه عنصری از برنامه تون رو فعال کنه.
دو نوع مفهوم (intent) وجود داره، مفاهیم آشکار و مفاهیم ضمنی یا مجازی.
با مفاهیم آشکار، یک عنصر مشخصی از برنامه رو برای فعال شدن تعیین میکنیم. مثلا میخوایم یه فعالیت(activity) دیگه رو تو برناممون اجرا کنیم، از یه مفهوم آشکار استفاده میکنیم که آشکارا به سیستم بگه میخوام اون فعالیت رو فعال(اجرا) کنم.
مفاهیم ضمنی (که تو پست بعدی بهش میپردازیم) در واقع یک پیام کلی برای سیستم میفرستن : که آیا برنامهای در سیستم عامل این گوشی وجود داره که بتونه این مفهوم رو اجرا کنه؟ اگه وجود داشته باشه لیست این برنامهها به کاربر پیشنهاد میشه و کاربر یکی رو انتخاب میکنه و از این طریق اون چیزی که با مفهوم فرستاده شده (ورودیهای intent) اجرا میشه.
خوب الان میخوایم رو مفاهیم آشکار تمرکز کنیم. برای شروع یه پروژه بسازید با دوتا فعالیت (activitie) که تو فعالیت اصلی (main) یه متنی که قابل نوشتن باشه یعنی کاربر میتونیه توش متن وارد کنه (از توی Text Fields اولی رو انتخاب کنید) و یه دکمه (برای اینکه به فعالیت دوم بره)، فعالیت دوم هم یه فیلد متنی ساده داشته باشه.(حواستون باشه که فعالیت دوم رو هم تو فایل manifest تعریف کنید).
۲.کاری که با این برنامه میخوایم بکنیم اینه که : کاربر یه متنی رو تو فیلد متنی قابل نوشتن مینویسه و دکمه رو میزنه، فعالیت دوم باز میشه و متنی که نوشته بوده رو نشون میده. یعنی میخوایم یاد بگیریم اطلاعاتی رو از یه فعالیت به فعالیت دیگه منتقل کنیم.
اول به فایل main.java می ریم و یه مرجع(اشارهگر) از دکمه و فیلد متنی میگیریم. با نوشتن این کد
EditText matn = findViewById(R.id.editText1);
یه مرجع از فیلد متنی قابل نوشتنمون میگیریم. خوب بازهم با ctrl+1 خطاهای برنامه رو درست میکنیم. (اینجا کافیه فقط cast انجام بدید.) همین کارو برای دکمه انجام میدیم.
Button d = findViewById(R.id.button1);
و برای دکمه تابع setOnclickListener رو صدا میزنیم تا کارایی که قراره با فشردن دکمه انجام بشه رو تعیین کنیم. با نوشتن این کد :
d.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } });
همون طور که قبلا گفته شد بعد از نوشتن new (خط اول) اگه بنویسید onclick و بعد ctrl+space رو بزنید خودش بهتون ادامهاش رو پیشنهاد میده و روی OnClickListener که کلیک کنید، بقیهاش رو خودش مینویسه.
۳.الان قصد داریم که یه intent بسازیم، همون طور که قبلا اشاره شد intent یک راه برای فعال کردن جزئی از برنامه است. پس برای اینکه یه نمونه از کلاس Intent بسازیم، مینویسیم Intent و یه اسم براش میذاریم و newاش میکنیم. (با ctrl+space، اون گزینه رو انتخاب میکنیم که مناسبه پاس کردن یه فعالیته -تو تصویر مشخصه-)
برای ورودیهای سازندهی intent، اول باید مولفهای که این درخواست رو کرده بنویسیم یعنی Main.this (که یه مرجع به این فعالیت اصلی هست). برای ورودی دوم، باید کلاس فعالیتی رو بدیم که میخوایم اجرا بشه یعنی Dovomi.class. پس کدمون اینجوری میشه :
Intent mafhoom = new Intent(Main.this, Dovomi.class);
در واقع ما میتونستیم همین قسمت (new Intent(Main.this, Dovomi.class رو به عنوان ورودی startActvity به کار ببریم (مثل آموزش قبلی) ولی این دفعه میخوایم یه چیزایی رو ضمیمهی mafhoom کنیم. چیزی که میخوایم اضافه کنیم همون متنیه که کاربر تو matn وارد میکنه. برای این کار از تابع putExtra از شی mafhoom استفاده میکنیم.
۴.ورودی اول این تابع یه رشته (String) است که به عنوان اسم اون کلیدی که میخوایم اضافه کنیم به کار برده میشه و ورودی دوم از هر نوعی میتونه باشه و ما چون اون متن رو میخوایم بفرستیم، برای ورودی دوم هم نوع رشته (String) رو انتخاب میکنیم. اسم کلید رو میذارم "matneVaredShode" و برای بازیابی اطلاعاتی که داخل matn (متنی که قراره کاربر وارد کنه) وجود داره، باید از تابع getText استفاده کنیم و اگه دقت کنید میبینید که خروجی این تابع از نوع Editable هست نه از نوع رشتهی خام پس با اضافه کردن ()toString. اونو به رشتهی خام تبدیل میکنیم.
mafhoom.putExtra("matneVaredShode", matn.getText().toString());
از matn ایراد میگیره و با زدن ctrl+1 بهمون پیشنهاد میکنه که اونو به final تغییر بدیم (چون قراره ازش تو یه کنترل کننده وقایع ناشناس استفاده کنیم).
ما اون اطلاعاتی که میخواستیم به فعالیت Dovomi بفرستیم رو به mafhoom اضافه کردیم، حالا وقتی میخوایم فعالیت جدید رو شروع کنیم، این اطلاعات براش فرستاده میشه. تابع startActivity رو استفاده میکنیم و mafhoom رو به عنوان ورودی براش میفرستیم.
۵.خوب تا اینحا دیگه کار ما با Main.java تموم میشه، حالا باید به Dovomi.java بریم و اطلاعاتی که همراه mafhoom فرستاده شده بازیابی کنیم و تو textView نشون بدیم. برای شروع اول یه مرجع از فیلد متنی میگیریم با این کد :
TextView matni = (TextView) findViewById(R.id.textView1);
برای اینکه این فیلد متنی، متن دلخواه ما رو نشون بده باید از تابع setText استفاده کنیم(هرچی به عنوان ورودی بفرستیم رو نشون میده)، برای گرفتن همون متنی رو که توسط mafhoom فرستاده شده، اول باید با getIntent مفهومی که این فعالیت رو اجرا کرده رو به دست بیاریم، و بعد از تابع getExtra برای گرفتن اطلاعات داخل intent استفاده میکنیم، که در واقع تمام اطلاعاتی که بهش داده بودیم رو برمیگردونه. اما ما فقط اون قسمتی از اطلاعاتش رو میخوایم که با کلید "matneVaredShode" مشخص شده (اگرچه در این تمرین قفط همین یدونه رو همراه mafhoom فرستادیم). و چون اون اطلاعاتی که میخوایم از نوع رشته است، از تابع getString استفاده میکنیم و کلید رو بهش میدیم.
matni.setText(getIntent().getExtras().getString("matneVaredShode"));
۶.حالا برنامه رو اجرا میکنیم و میبینیم همون متنی که تو فعالیت اصلی وارد کردیم تو فعالیت دوم نشون داده میشه :)
تماشای برخط [لینک مستقیم] فیلم «آموزش نحوه استفاده از مفاهیم ضمنی»
زیرنویس انگلیسی [English Subtitile]
دریافت نسخه ی pdf این آموزش [2.78 مگابایت]
حالا که خوب مفاهیم آشکار رو متوجه شدیم، وقتشه که به مفاهیم ضمنی بپردازیم، برای درک بهتر از یه مثال شروع میکنیم.
خوب برگردیم به ادامه آموزش، گفتیم که برنامهی Gallery با استفاده از یه مفهوم (intent) یه پیغام به سیستم میفرسته، حالا از کجا بفهمیم، این مفهوم چه پیغامی رو به فرستاده؟ برای اینکار دکمهی share رو تو شبیهساز میزنیم بعد به ایکلیپس میریم و اگه تو LogCat نگاه کنیم، خط های آخرش نوشته :
Starting: Intent { act=android.intent.action.SEND type=image/jpeg ...
android.intent.action.SEND یه مفهوم ضمنیه، که همراه با خودش نوع دادهای تصویر از نوع jpeg رو داره.
۲.بیاید یه برنامه بسازیم که بتونه به پیغامی که دکمهی share میده، جواب بده. اول یه پروژهی جدید میسازیم، بعد به AndroidManifest.xml میریم، جایی که میتونیم یه مفهوم ضمنی بسازیم، توی پروژه یه فعالیت (activity) اصلی داریم که من اسمشو گذاشتم main. و مشاهده میکنید که برای این فعالیت یه intent-filter وجود داره که قبلا دریارهاش توضیح دادم. برای ساختن یه مفهوم دیگه، همون بلوک intent-filter رو کپی میکنیم، هر کدوم از این بلوکها به سیستم میگه که این فعالیت قادر به مدیریت این مفاهیمه.
در قسمت action کد جدید به جای MAIN می نویسیم، SEND.
برای category هم مقدار DEFAULT رو به جای LAUNCHER مینویسیم. این category به سیستم میگه که این مفهوم ا چه نوعیه که معمولا همون مقدار پیش فرض رو می ذاریم و خلاص :دی
<intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>
۳.مورد بعدی که باید اضافه کنیم، یه تگ data است که نوع دادهای که میتونیم با این مفهوم مدیریت کنیم رو به اندروید میگه. یکی از حصوصیاتش mimetype هست که مساوی */image می ذاریم به این معنی که هرنوع عکسی رو می تونه مدیریت کنه.
<intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> </intent-filter>
با اضافه کردن همین چند خط کد، برنامه مون این توانایی رو پیدا میکنه که اگه کسی خواست عکسی رو بفرسته و روی دکمهی share کلیک کرد، ما هم میتونیم اون رو براش مدیریت کنیم.
۴.وقتی عکس از برنامهی Gallery برامون فرستاده شد، بیاید یه راهی برای نمایش اون فراهم کنیم. به فایل main.xml داخل layout میریم و اون فیلد متنی رو پاک میکنیم. و از ستون سمت چپ تو قسمت Images & Media یه کدوم از گزینه هایی که می تونه تصویر رو نشون بده رو انتخاب میکنیم، و یه عکس الکی می ذاریم روش.
بعد به فایل جاوای مربوط به این xml میریم، که main.java هست. اول یه مرجع از اون imageView که تو فایل xml گذاشتیم میگیریم. با نوشتن این کد (قبلا مفصل توضیح داده شده):
ImageView image = (ImageView) findViewById(R.id.imageView1);
۵.حالا میخوایم اون عکسی که از Gallery برامون فرستاده میشه رو به عنوان محتویات این imageView قرار بدیم. با استفاده از تابع setImageURI از کلاس imageView. این تابع باید به جایی اشاره کنه که قراره از اونجا محتویات تصویر مشخص بشه. و ما میخوایم این محتویات رو از مفهوم ضمنی بگیریم، پس مینویسیم (تو پست قبل توضیح دادم):
image.setImageURI(getIntent().getExtras().get(Intent.EXTRA_STREAM));
از setImageURI خطا میگیره، باید crtl+1 رو بزنید و اولین گزینه ی تصحیح اینه که cast کنید. پس اینجوری می شه:
image.setImageURI((Uri) getIntent().getExtras().get(Intent.EXTRA_STREAM));
این Intent.EXTRA_STREAM تمام رشته ای که این مفهوم میفرسته رو میگیره که در واقع آدرس URI همون عکسه است.
۶.برنامه رو run کنید. وقتی بالا میاد یه خطا میگیره که انتظارش هم میرفت، چون وقتی همین جوری برنامه رو اجرا کنید آدرس هیچ عکسی فرستاده نشده و موقعی که دارید واقعا برنامه تولید میکنید باید به این خطاها فکر کنید و راه حلی براشون پیدا کنید.
۷.حالا به Gallery میریم و روی عکس دکمهی share رو میزنیم، و میبینیم که برنامهی ما هم به لیستی که میتونه این کارو انجام بده اضافه شده!
و با انتخاب برنامهی خودمون میبینیم که عکس فرستاده شده نمایش داده میشه.
تماشای برخط [لینک مستقیم] فیلم آموزشی «نحوه ی ساخت و استفاده از منابع»
دریافت نسخه pdf این آموزش [1.73 مگابایت]
وقتی دارید برنامتون رو میسازید احتمال زیاد از منابع بیرونی هم استفاده خواهید کرد، مثل فایلهای ویدیویی یا شنیداری، تصاویر، xml و ... پس باید بدونید چطور از داخل برنامتون به این منابع ارجاع بدید. منابع برنامتون داخل پوشه ی res ذخیره می شن. و یه سری فایلها به صورت خودکار بهش اضافه می شه مثل :
layout : شامل فایل های xml ای که مربوط به محیط های کاربریه.
values : شامل تمام مقادیریه که توی برنامتون تعریف می کنید و بهشون یه اسم می دید و بعدا با اون اسم بهشون رجوع می کنید و ازشون استفاده می کنید.
فایل string.xml هم به طور پیش فرض در این فولدر به وجود اومده. نحوهی کارکرد string.xml این طوریه که ما یه سری منابع رشتهای داریم که مثلا (با توجه به تصویر) هرجا که تو برناممون بخوایم از Hello World, Main! استفاده کنیم، به جاش می تونیم به این منبع ارجاعش بدیم و بنویسیم hello.
حالا چرا این منابع رو بیرون نگه میداریم؟ به خاطر اینکه بتونیم متغیرهای سراسری (global) داشته باشیم، مثلا می تونیم چند تا فولدر برای زبان های مختلف داشته باشیم و فقط لازمه که به فایل xml مربوط به اون زبان بریم و دیگه لازم نیست تمام کدهای برناممون رو به خاطر تغییر زبان کاربر تغییر بدیم.
۲.اگه به سایت اصلی توسعه اندروید مراجعه کنید یه قسمت داره به اسم API Guide که توش راهنمایی های مفیدی برای ساخت برنامه کرده، یکی از این راهنماها مربوط به منابع می شه، خود اندروید به طور پیش فرض یه سری از فولدرها رو تو res تشخیص میده مثلا
اگه فولدر anim رو درست کنید و توش یه فایل xml مخصوص انیمیشن بذارید، اندروید متوجه می شه که انیمیشنه. (تو آموزش های بعدی مفصل به انیمیشن می پردازیم).
یا مثلا اگه میخواید یه لیستی از رنگ ها رو در برنامتون استفاده کنید می تونید تو فولدر color بذاریدشون.
هر کدوم از عکسهامون یا هر فایل xml مربوط به گرافیک در داحل فولدر drawable قرار می گیره.
فولدر layout شامل فایلهای xml مربوط به چیدمان صفحه است.
اگه بخوایم منو برای برناممون بسازیم (که بعدا آموزش داده خواهد شد) باید اونو تو فولدر menu بذاریم و ...
چون تمام این منابع نوعی assets هستن، ممکنه از خودتون بپرسید پس این فولدر assets چیه (معمولا بالای فولدره bin هست)، در واقع می تونید منابعتون رو تو این فولدر بذارید ولی نمی تونید با یک id بهشون ارجاع بدید. به همین خاطر بهتره تمام منابع رو توی همون فولدر res قرار بدیم چون به طور خودکار براشون id ساخته می شه و با دستور R.id می تونید بهشون رجوع کنید.
۳.اگه تو زیر شاخه های فولدر res دقت کرده باشید، خود فولدر drawable به تنهایی وجود نداره بلکه سه تا فولدر drawable-hdpi، drawable-ldpi و drawable-mdpi وجود دارن، این به خاطر یک ویژگی مهمه اندرویده که دستگاه ها رو به سه وضوح تصویر تقسیم بندی کرده : دستگاههای با وضوح تصویر بالا (High dpi)، دستگاههای با وضوح تصویر متوسط (Medium dpi) و دستگاههای با وضوح تصویر پایین (Low dpi). برای هر کدوم از این وضوح تصویرهای مختلف میتونیم assetهای مربوط به خودشون رو بذاریم، و سیستم اندروید با توجه به دستگاهی که داره روش اجرا میشه، asset مربوطه رو بیرون میکشه و در برنامه ازش استفاده می کنه (توی یه آموزش دیگه بهش میپردازیم) ولی فقط بدونید که اگر از یه asset خواستید که تو همهی وضوح تصاویر استفاده بشه، کافیه فقط توی drawable-hdpi بذاریدش، اون وقت تو یه دستگاه با وضوح تصویر متوسط یا پایین هم سیستم از تو فولدر drawable-hdpi برشون میداره.
۴.راحتترین راه برای اضافه کردن asset به برنامهتون اینه که محتوایی که می خواید رو بکشید و تو فولدر مورد نظر ول کنید.
برای این که به پیغام خطا برخورد نکنید حواستون باشه اسم asset هایی که میخواید وارد کنید فقط میتونه شامل حروف a تا z، اعداد 0 تا 9 و خط زیر باشه.
۵.تو فولدر gen اگه R.java رو باز کنید، میبینید که به اون asset جدیدی که اضافه کردید یه عدد نسبت داده، لازم نیست برای ارجاع به این asset اون عدد رو استفاده کنید بلکه از راه دیگه ای این کارو میکنیم که الان توضیح میدم. (حواستون باشه که اصلا تغییری هم توی فایل R.java ایجاد نکنید چون این فایل به طور خودکار درست میشه و اگه تغییرش بدید برنامتون به هم میریزه.)
۶.من برای این آموزش یه پروژهی جدید ساختم و تا اینجا فقط یه عکس به فولدر drawable-hdpi اضافه کردم، از فولدر res به layout برید و فایل xml اصلی تون رو انتخاب کنید (برای من main.xml هست)، اون فیلد متنی رو پاک کنید، به جاش میخوایم عکسی که به پروژه اضافه کردیم رو بذاریم، از منوی کنار Images & Media رو انتخاب کنید و اون المانی که تو عکس دورش قرمز شده رو انتخاب کنید و به داخل صفحه بکشید و ول کنید، حالا ازتون میخواد منبع عکس رو مشخص کنید.
برای اینکه متوجه بشید دقیقا چه اتفاقی افتاده، به قسمت ویرایش متنی xml برید، تو مشخصات این تصویر یه قسمت داره به اسم android:src
که با کد @drawable/androidcode_logo
به تصویر مورد نظر ارجاع داده.
اصولا برای ارجاع به هر چیزی از علامت @ استفاده میکنیم.مثلا اینجا بعد از علامت @ می خوایم به drawable بریم.
و بعد هم یه تصویر دیگه رو انتخاب میکنیم، مثل ic_launcher.
دقت کنید که برای رسیدن به androidcode_logo یا هر asset دیگهای، نیازی نبود که بنویسیم @drawable-hdpi
فقط کافی بود از @drawable
استفاده کنیم. اینکه این asset از کدوم وضوح تصویر انتخاب بشه رو، خود
سیستم عامل اندروید با توجه گوشی کاربر انجام میده. حالا اگه به قسمت
گرافیکی main.xml بریم، میبینیم که تصویر عوض شده.
خوب این روش ارجاع در فایل های xml بود، حالا اگه از فایلهای جاوا بخوایم به منابعمون ارجاع بدیم باید چی کار کنیم؟
۷.اول یه ارجاع از خود ImageView میگیریم :
ImageView ax = (ImageView) findViewById (R.id.imageView1);
بعد منبع این ImageView رو میذاریم عکسی که میخوایم :
ax.setImageResource(R.drawable.androidcode_logo);
این دستور باعث میشه وقتی که برنامه اجرا شد، منبع عکس از اون چیزی که بوده، تغییر پیدا کنه به R.drawable.androidcode_logo
و وقتی برنامه رو اجرا میکنیم، این خروجی رو میبینیم.
فایل main.xml :
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> </LinearLayout>
فایل Main.java :
package ir.AndroidCode.intent; import android.app.Activity; import android.os.Bundle; import android.widget.ImageView; public class Main extends Activity { @Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageView ax = (ImageView) findViewById (R.id.imageView1); ax.setImageResource(R.drawable.androidcode_logo); } }