کتاب برنامه‌نویسی اندروید مقدماتی

فصل اول: اولین برنامه اندروید

در این فصل به شما کمک خواهیم کرد که اولین برنامه اندروید خود را بنویسید. ابتدا شما با مفاهیم پایه‌ای اندروید مانند اکتیویتی، 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ها

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

کد مربوط به این فصل از برنامه را از اینجا دانلود کنید.

برای تهیه این کتاب می‌توانید به دیباگران مراجعه کنید.