
به نام مهربانترین
امروزه نسل گوشیهای همراهی که فقط قابلیت ایجاد تماس را داشتند، منقرض شده است و برقراری تماس، تنها یکی از بیشمار کارهایی شده است که در حال حاضر گوشیهای هوشمند با برنامههای کاربردی متنوع خود انجام میدهند. این تغییر و رشد در وسایل الکترونیکی که بر مبنای سیستمعاملهایی نظیر اندروید کار میکنند و همچنین به تبع آن رشد تعداد علاقهمندان به توسعه برنامههای کاربردی اندروید ما را بر آن داشت که نقطه شروعی برای تمامی علاقهمندان حوزه اندروید ایجاد کنیم.
کتابی که در حال حاضر روبروی شما قرار دارد برگرفته از کتاب Android Programming: The Big Nerd Ranch Guide، یکی از معروفترین کتابهای موجود در زمینه اندروید و همچنین تجربیات چند ساله مولفان کتاب است. ما معتقدیم که کسب مهارت در برنامهنویسی، فقط با خواندن مطالب و یادگیری مفاهیم امکانپذیر نخواهد بود و مانند همه زبانهای برنامهنویسی دیگر، تمرین نقش اول و مهمی را در برنامهنویسی اندروید بازی میکند.
این کتاب سعی دارد با استفاده از مثالهای ساده و کاربردی بهترین و سریعترین روش یادگیری برنامهنویسی اندروید را برای شما فراهم نماید. به همین دلیل، تعدادی برنامه در این کتاب مطرح شده است. بعضی از آنها سادهاند و فقط یک فصل را به خود اختصاص دادهاند. بعضی دیگر پیچیدهترند و در تعداد فصل بیشتری کامل میشوند. تاکید میکنیم که همه برنامههای این کتاب به هدف آموزش مفاهیم و تکنیکهای مهم و بالا بردن تجربه شما در برنامهنویسی اندروید، طراحی شدهاند.
در ادامه خلاصهای از ۱۴ فصل این کتاب تشریح شده است. اگر علاقهمند به دریافت کتاب هستید، میتوانید از لینکهای زیر کمک بگیرید:
آموزش جامع برنامهنویسی اندروید، مقدماتی – انتشارات دیباگران
آموزش جامع برنامهنویسی اندروید، مقدماتی – فیدیبو (نسخه الکترونیکی)
۱ اولین برنامه اندروید
در این فصل به شما کمک خواهیم کرد که اولین برنامه اندروید خود را بنویسید. ابتدا شما با مفاهیم پایهای اندروید مانند اکتیویتی، layout، منابع و غیره آشنا خواهید شد و سپس با ایجاد یک پروژه در برنامه اندروید استودیو کدنویسی خود را شروع مینمائید. در نهایت که برنامهنویسی پروژه به پایان رسید، به شما آموزش خواهیم داد که چگونه آن را بر روی یک شبیهساز در اندروید استودیو اجرا کنید. برنامه این فصل رابط کاربری سادهای دارد. شما یک سوال را مشاهده میکنید که پاسخ درست و یا نادرست بودن آن را با کلیک کردن بر روی دکمههای TRUE و FALSE اعلام خواهید کرد. برنامه نیز درستی انتخاب شما را با یک پیغام به شما نمایش خواهد داد.
پروژه فصل ۱ را از اینجا دانلود کنید.
۲ اندروید و مدل MVC
در این فصل برای درک بهتر برنامهها به معرفی معماری MVC در اندروید میپردازیم. سپس کلاسهای برنامه GeoQuiz را که در فصل قبل شروع کردیم، در این معماری قرار خواهیم داد. در نهایت که بهروزرسانی برنامه به پایان رسید، این بار یک دستگاه واقعی را راهاندازی خواهیم کرد تا برنامه را بر روی آن اجرا کنیم. برنامه GeoQuiz در این فصل بهروزرسانی شده و قابلیتهای جدیدی به آن اضافه خواهد شد. این برنامه به جای مطرح کردن یک سوال، لیستی از سوالات را به کاربر نشان میدهد و همچنین یک دکمه جدید به نام NEXT به رابطکاربری آن اضافه خواهد شد تا کاربر با استفاده از آن بتواند سوالات بعدی را ببیند.
پروژه فصل ۲ را از اینجا دانلود کنید.
۳ چرخه حیات اکتیویتی
فصل سوم بررسی میکند که یک اکتیویتی از زمانی که اجرا میشود تا زمانی که از بین میرود در چه وضعیتهایی ممکن است قرار گیرد. کسب دانش در مورد چرخه حیات اکتیویتی باعث میشود که بتوانید مدیریت بهتری بر روی برنامه خود خصوصا در مواقع خاص، مانند زمانی که شما صفحه نمایش دستگاه خود را میچرخانید و یا با دکمه برگشت را کلیک میکنید و غیره، داشته باشید. این فصل همچنین چگونگی ثبت وقایع در اندروید را با استفاده از Logcat به شما آموزش خواهد داد. برنامه GeoQuiz در این فصل تغییر چشمگیری نخواهد کرد. صفحه جدیدی به این برنامه برای نمایش بهتر آن در حالت افقی دستگاه اضافه خواهد شد و وضعیت برنامه در این چرخش مدیریت میشود.
پروژه فصل ۳ را از اینجا دانلود کنید.
۴ دیباگ کردن برنامههای اندروید
گاهی اوقات در حین اجرای برنامهها با مشکلاتی روبهرو میشویم. برای نمونه ممکن است برنامه در حین اجرا با خطاهایی مواجه شود و این خطاها باعث شکست برنامه گردیده و اجرای آن را متوقف میکنند. یا اینکه برنامه هیچ خطایی به کاربر نشان ندهد و به خوبی اجرا شود اما منطق برنامه به درستی کار نکند، به عبارت دیگر روالی که از برنامه انتظار دارید، طی نشود. در این فصل میکوشیم تا با دیباگ کردن برنامه، خطاهای مختلف آن را مانند دو موردی که ذکر کردیم، پیدا کنیم. پیدا کردن منبع خطاهای نوع اول نسبت به نوع دوم آسانتر است. استفاده از Logcat و دیباگر و همچنین کار کردن با Lint که در این فصل به آنها میپردازیم، کمک شایانی در رفع خطاهای برنامههای اندرویدی به ما خواهد کرد.
۵ افزودن دومین اکتیویتی به پروژه
تا به اینجا ما یک برنامه ساده که فقط دارای یک اکتیویتی است، نوشتهایم. در این فصل قصد داریم که اکتیویتی دوم را به برنامه اضافه کنیم. هر اکتیویتی قادر است که اکتیویتی دیگری از برنامه را اجرا کند، سپس برای آن دادههایی را ارسال نماید و منتظر پایان یافتن اجرای آن و دریافت نتیجه از آن بماند. از طرف دیگر میدانیم که اجرای یک برنامه اندروید با اجرای یکی از اکتیویتیهای آن آغاز میشود. بنابراین زمانی که صحبت از دو و یا بیش از دو اکتیویتی در برنامه مطرح میشود، در مرحله اول باید اکتیویتیها به برنامه معرفی شوند و در مرحله بعد اکتیویتی که برنامه با آن شروع به کار میکند، مشخص گردد. همه این تعاریف در فایل مانیفست برنامه صورت میپذیرد. در این فصل برنامه GeoQuiz ارتقا خواهد یافت و اکتیویتی دیگری به برنامه اضافه میشود. وظیفه این اکتیویتی نمایش یک راهنمایی به کاربر برای حدس زدن جواب صحیح سوال است. به این منظور به برنامه یک دکمه جدید به نام CHEAT اضافه خواهد شد. کاربر با کلیک بر روی آن به صفحهای هدایت میشود، در آنجا راهنمایی خواهد شد و دوبار میتواند با دکمه برگشت دستگاه خود به صفحه اصلی برگردد و پاسخ صحیح را انتخاب کند. با این فصل همراه شوید.
پروژه فصل ۵ را از اینجا دانلود کنید.
۶ نسخههای مختلف SDK اندروید و سازگاری آنها
این فصل به معرفی نسخههای مختلف SDK اندروید میپردازد، بنابراین مطالعه این فصل شما را با تاریخچه نسخههای اندروید آشنا خواهد کرد. در فصل اول زمانی که پروژه GeoQuiz را ایجاد کردید، شما ملزم به انتخاب پایینترین نسخه SDK قابل پشتیبانی بودید. در این فصل پایینترین نسخه SDK قابل پشتیبانی، نسخه SDK مقصد و نسخه SDK کامپایل را بررسی و توصیف خواهیم کرد تا از این به بعد با آگاهی کامل این موارد را برای برنامه خود تنظیم نمائید.
پروژه فصل ۶ را از اینجا دانلود کنید.
۷ فرگمنتهای رابط کاربری و مدیر فرگمنت
این فصل با ایجاد یک برنامه کاربردی جدید به نام CriminalIntent آغاز میشود. این برنامه شرایطی پیش میآورد که شما باید یک صفحه را بارها و بارها براساس اطلاعات یک نوع شی نمایش دهید. برای رسیدن به این هدف ما به جای اکتیویتی، استفاده از فرگمنت را به شما پیشنهاد میکنیم. فرگمنتها غالبا برای کپسوله کردن کامپوننتهای اصلی برنامه بری استفاده دوباره از آنها، مورد استفاده قرار میگیرند و برای برنامه ما در این فصل بسیار مناسباند. این فصل به توصیف مواردی مانند تعریف یک فرگمنت، چگونگی استقرار فرگمنت در برنامه، چرخه حیات آن و غیره میپردازد. برای یادگیری این موارد با این فصل همراه شوید. برنامه CriminalIntent یک برنامه لیست-جزئیات است که از لیستی از آیتمهای مختلف با تعدادی پارامتر نگهداری میکند. این برنامه پیچیدهتر از برنامه قبلی است و در طول چند فصل به مرور کامل میشود. در این فصل فقط صقحه مربوط به تعریف یک اکتیویتی جدید طراحی خواهد شد و ادامه کار به فصلهای بعدی محول میشود.
پروژه فصل ۷ را از اینجا دانلود کنید.
۸ نمایش لیست با استفاده از RecyclerView
در این فصل برنامه CriminalIntent ارتقا پیدا خواهد کرد تا لیستی از آیتمهای مختلف در صفحه اول این برنامه نمایش داده شود. این لیست با استفاده از RecyclerView مدیریت میشود. RecyclerView در ابتدا تعدادی آیتم را تا پر شدن کامل صفحه به آن اضافه میکند و کاربر میتواند به آیتمهای بیشتر با scroll کردن صفحه، دسترسی پیدا کند. در آخر فصل کدنویسی را بهگونهای ادامه خواهیم داد که با کلیک بر روی هر آیتم پیغامی حاوی شناسه آن آیتم به کاربر نشان داده شود. این یک پیغام ساده است و در فصلهای بعدی بهروزرسانی خواهد شد تا اطلاعات کامل مربوط به هر آیتم را به کاربر نشان دهد.
پروژه فصل ۸ را از اینجا دانلود کنید.
۹ ساخت رابط کاربری با layout و ویجتها
این فصل به شما کمک خواهد کرد که طراحی صفحات رابط کاربری خود را با ابزار گرافیکی انجام دهید. ویرایشگر گرافیکی موجود در اندروید استودیو به راحتی با تمامی ویجتها خصوصا ویجت ConstraintLayout کار میکند و طراحی خوبی را ایجاد مینماید. در پایان این فصل شما میتوانید تصمیمگیری کنید که تمایل دارید که طراحی را بیشتر با کدنویسی XML انجام دهید ویا با ابزار گرافیکی اندروید.
پروژه فصل ۹ را از اینجا دانلود کنید.
۱۰ استفاده از آرگومانهای فرگمنت
این فصل برنامه CriminalIntent را کاملتر خواهد کرد تا با کلیک بر روی هر آیتم از لیست، شما جزئیات آن را مشاهده نمائید. هر آیتم برای نمایش جزئیاتش یک فرگمنت ایجاد خواهد کرد و برنامه نیز دادههایی را برای این فرگمنت ارسال مینمائید. همچنین ممکن است که منتظر دریافت نتیجه از فرگمنت بماند. تمرکز این فصل بر روی استفاده از فرگمنتها همراه با آرگومانهای آنها میباشد.
پروژه فصل ۱۰ را از اینجا دانلود کنید.
۱۱ استفاده از ViewPager
این فصل به مبحث ViewPager میپردازد. ViewPager به برنامه شما این قابلیت را میدهد که شما با کشیدن صفحه به سمت چپ و راست اطلاعات صفحه را بهروزرسانی کرده و صفحه را از اطلاعات جدید پر کنید.
پروژه فصل ۱۱ را از اینجا دانلود کنید.
۱۲ دیالوگ
استفاده از دیالوگ در برنامههای اندرویدی زیاد است. دیالوگها صفحاتی هستند که بر روی صفحه اصلی برنامه قرار میگیرند و اطلاعاتی را به کاربر نمایش میدهند. این فصل دکمه تاریخ در برنامه CrimeFragment را مدیریت میکند. کلیک بر روی این دکمه دیالوگی برای انتخاب تاریخ توسط کاربر را به او نشان میدهد.
پروژه فصل ۱۲ را از اینجا دانلود کنید.
۱۳ نوار ابزار
منوها از جمله ویژگیهای مهم و پرکاربرد در برنامههای اندروید هستند و قابلیتهای مختلف برنامه در قالب منو در اختیار کاربران قرار میگیرد. در این فصل یا اضافه کردن منو به برنامه CriminalIntent، کار با آن را آموزش خواهیم داد. منو در این برنامه قابلیت اضافه کردن آیتم جدید و همچنین محلی برای نمایش تعداد آیتمهای لیست فراهم میکند.
پروژه فصل ۱۳ را از اینجا دانلود کنید.
۱۴ پایگاهداده SQLite
اگر برای مدتی در اندروید کدنویسی کنید مطمئنا به موقعیتی برخواهید خورد که نیاز دارید تا دادههای خود را برای مدت زمانی در جایی نگهداری نمائید. این دادهها نباید با پایان یافتن اجرای برنامه از بین بروند، بلکه در اجراهای بعدی برنامه نیز باید قابل استفاده باشند و تغییرات نیز بر روی آنها اعمال شود. در این فصل برای رسیدن به این هدف پایگاهداده SQLite از اندروید را معرفی خواهیم کرد، تا بتوانیم دادههای خود را در آن نگهداری کنیم و هر زمان که نیاز بود آنها را واکشی کرده و یا بهروزرسانی کنیم. این فصل تغییری در ظاهر برنامه CriminalIntent ایجاد نخواهد کرد و قابلیت جدیدی نیز به آن اضافه نمیکند. تغییرات این برنامه مربوط به نحوی ذخیره دادههای آن است. دادههایی را که تا بهحال در لیست نگهداری میکردیم که با بسته شدن برنامه از بین میرفتند، اکنون در یک پایگاهداده ذخیره خواهیم کرد. در ادامه چگونگی ساخت پایگاهداده، اتصال به آن، خواندن از آن، نوشتن در آن و غیره را با جزئیات برایتان توصیف خواهیم کرد.
پروژه فصل ۱۴ را از اینجا دانلود کنید.
۱۵ Intentsهای ضمنی
در فصل ۵ از این کتاب ما اکتیویتی دوم را به برنامه اضافه کردیم، به این هدف که کاری را برای ما انجام دهد. گاهی اوقات ما نیاز به انجام کارهایی داریم که قبلا توسط برنامههای دیگر انجام شده است و ما میتوانیم از چنین برنامههایی با این قابلیتها، استفاده نمائیم. در این فصل به دنبال ارتباط با برنامههای دیگر برای انجام کارهایمان هستیم. در این فصل برنامه CriminalIntent را طوری تغییر میدهیم که با دو برنامه دیگر، یکی برنامهای که قابلیت نمایش لیست مخاطبان را دارد و دیگری برنامهای که قابلیت ارسال یک متن را دارد، ارتباط برقرار کند. سپس با استفاده از آنها برنامه را ارتقا خواهیم داد.
پروژه فصل ۱۵ را از اینجا دانلود کنید.
۱۶ عکس گرفتن با استفاده از Intentها
در فصل قبل چگونگی اجرای یک برنامه دیگر را از درون برنامه خود آموختیم. در این فصل از برنامه دوربین کمک خواهیم گرفت به هدف اینکه یک عکس گرفته و آن را در صفحه، نمایش دهیم. همچنین فایل عکس را در محلی بر روی سیستم خود ذخیره خواهیم نمود. کار با عکسها نیازمند دانستنیهایی است که در این فصل به تشریح آنها خواهیم پرداخت.
پروژه فصل ۱۶ را از اینجا دانلود کنید.