آموزش برنامه نویسی اندروید - قسمت ۲۶: شخصی سازی Launcher Icon اولین اپلیکیشن

اهداف آموزشی این قسمت عبارتند از:
1. نحوه ایجاد آیکانی شخصی برای Density های مختلف
2. جایگزین کردن عکس های ایجاد شده با عکس پیش فرض اکلیپس

در آموزش بیست و پنجم با نحوه ایجاد یک Template با تعدادی Guide به منظور ایجاد Padding آشنا شدیم. حال در این آموزش قصد داریم تا آیکان هایی برای انواع صفحه نمایش با Density هایی متفاوت طراحی کنیم.

اگر خاطرمان باشد در آموزش هشتم پروژه خود را My First Android Project به معنی "اولین پروژه اندروید من" نامیدیم. حال اگر بخواهیم تصویری مرتبط با اولین پروژه طراحی کنیم که هم اصول طراحی در آن رعایت شده باشد و در عین حال جذاب، گیرا و تاثیرگذار هم باشد، به نظر می رسد از یک سو چند قسمت آموزش را به خود اختصاص دهد و از سوی دیگر کمی از هدف این سری از آموزش ها که بیشتر با رویکرد برنامه نویسی طراحی شده اند فاصله خواهیم گرفت. برای همین منظور به طرحی کاملاً ساده بسنده خواهیم کرد:

920610-a26-IMAGE 1.jpg

به طور مثال همانطور که در تصویر فوق ملاحظه می شود شکلی آبی رنگ در نظر گرفته شده است. فقط نکته ای که حتما می بایست مد نظر قرار داده شود این است که لبه های شکل ما از Guide های ترسیم شده بیرون نزند.

همانطور که در آموزش پیش توضیح داده شد، فرمت آیکان های اندروید می بایست PNG سی و دو بیتی باشد، از این رو نیاز داریم تا این تصویر را با فرمت PNG ذخیره سازیم.


920610-a26-IMAGE 2.jpg

همانطور که در تصویر فوق مشاهده می شود، از منوی اصلی گزینه File سپس گزینه Save As را انتخاب می کنیم سپس پنجره ای به شکل زیر مشاهده خواهیم کرد:


920610-a26-IMAGE 3.jpg

در این پنجره در بخش File name به معنی "نام فایل" نام ic_launcher که در پروسه ساخت فایل وارد نمودیم آمده است. در بخش Format همانطور که در تصویر فوق با یک بیضی قرمز رنگ مشخص شده است فرمت PNG را انتخاب می کنیم. همانطور که قبلا گفته شده قصد داریم تا این آیکان را جایگزین آیکانی کنیم که خود نرم افزار اکلیپس به صورت پیش فرض برای پروژه ما ساخته است، از این رو پیش از زدن دکمه Save می بایست مسیر ذخیره سازی را به مسیری که در ابتدای نصب اکلیپس برای workspace در نظر گرفتیم، سپس فولدر My First Android Project سپس فولدر res و در نهایت فولدر drawable-xhdpi تغییر داده حال می توانیم دکمه Save را کلیک نماییم(در واقع علت اینکه فولدر drawable-xhdpi را انتخاب کردیم این بود که ابعاد تصویر ما برای صفحه نمایش هایی با تراکم xhdpi می باشد و این فولدر هم مسئول ذخیره سازی تصاویر برای این گروه از صفحه نمایش ها می باشد):


920610-a26-IMAGE 4.jpg

پس از کلیک کردن دکمه Save خواهیم دید که پنجره ای به صورت فوق نمایان می شود که در این صورت تنظیمات پیش فرض را مد نظر قرار داده و دکمه OK را کلیک می کنیم.

اکنون نیاز داریم تا آیکان هایی برای Density هایی معادل با hdpi و mdpi و ldpi به ترتیب با ابعاد 72 در 72 و 48 در 48 و 36 در 36 ایجاد کنیم. برای این منظور ابتدا از hdpi شروع کرده و عکس طراحی شده را به ابعاد 72 در 72 کاهش می دهیم. برای این منظور می بایست به طور هم زمان دکمه های Ctrl و Alt و حرف I را فشار دهیم و خواهیم دید که پنجره ای به شکل زیر باز خواهد شد:


920610-a26-IMAGE 5.jpg

همانطور که در تصویر فوق مشاهده می شود در بخش Width و Height عدد 96 وارد شده است. در همین تصویر گزینه Constrain Proportions با یک بیضی قرمز رنگ نشان داده شده است. در صورتیکه این گزینه تیک دار باشد، ابعداد طول و عرض تصویر ما به صورت متناسب با یکدیگر بزرگ و کوچک خواهند شد اما از آنجا که تصویر ما یک مربع است، هر عددی که برای Width یا همان عرض تصویر در نظر بگریم برای Height یا همان طول تصویر نیز در نظر گرفته خواهد شد. حال مقابل Width عدد 72 را وارد کرده و خواهیم دید که عدد مقابل Height به صورت خودکار از عدد 96 به 72 تغییر پیدا می کند. اکنون گزینه OK را کلیک می کنیم و خواهیم دید که تصویر ما به ابعاد 72 در 72 در خواهد آمد. حال مجدد همچون مراحل قبل این فایل را Save کرده اما این بار محل ذخیره سازی را داخل فولدر res درون فولدر drawable-hdpi در نظر می گیریم و به محض کلیک کردن گزینه Save با تصویر زیر مواجه خواهیم شد:


920610-a26-IMAGE 6.jpg

در واقع همانطور که در تصویر فوق مشاهده می شود داخل فولدر drawable-hdpi فایلی تحت عنوان ic_launcher.png وجود دارد که اکلیپس به طور خودکار درحین ساخت پروژه ایجاد کرده است و از آنجا که نام انتخابی ما برای آیکان جدید با نام آیکان پیش فرض یکی است، همانطور که در تصویر فوق با کادری قرمز رنگ نشان داده شده است این اخطار به ما داده می شود که "فایلی با همین نام در این فولدر وجود دارد. آیا می خواهید آن را با فایل جدید جایگزین کنید؟" که پاسخ ما به این سوال بلی بوده از این رو روی گزینه OK کلیک می کنیم.

به همین روش یکبار دیگر تصویر خود را به ابعاد 48 در 48 درآورده سپس آنرا در فولدر drawable-mdpi ذخیره می سازیم. در نهایت تصویر خود را به اندازه 36 در 36 در آورده و آن را جایگزین تصویری می کنیم که در فولدر drawable-ldpi قرار دارد.

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

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

چنانچه مورد اول درباره ما صدق کند، همچون تصویر زیر عمل خواهیم کرد:


920610-a26-IMAGE 7.jpg

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


920610-a26-IMAGE 8.jpg

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

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

آموزش برنامه نویسی اندروید - قسمت ۲۵: استفاده از فتوشاپ جهت ساخت تمپلت برای Launcher Icon

اهداف آموزشی این قسمت عبارتند از:
1. آشنایی با محیط فتوشاپ
2. نحوه ایجاد یک Launcher Icon در فتوشاپ

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

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

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

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

920610-a25-IMAGE 1.jpg

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


920610-rs25-IMAGE 2.jpg

همانطور که در پنجره فوق نشان داده شده است در بخش Name به معنی "نام" عبارت ic_launcher را وارد می کنیم(لازم به ذکر است که این نام کاملاً اختیاری است). در بخش Width و Height که به ترتیب "عرض" و "طول" معنی می دهند عدد 96 را وارد کرده و این در حالی است که واحد انتخابی هر دو آنها بایستی Pixel باشد. در بخش Background Contents به معنی "محتویات پس زمینه" از میان گزینه های موجود مورد Transparent به معنی "شفاف، واضح و یا خالی" را انتخاب می کنیم(علت انتخاب این گزینه این است که زمانیکه می خواهیم Padding برای آیکان خود در نظر بگیریم، نواحی حاوی Padding بدون رنگ و شفاف باشند).

همانطور که قبلا توضیح داده شد صفحه های نمایش به طور کلی دارای چهار Density یا "تراکم" مختلف هستند. حال سوالی که ممکن است در اینجا به ذهن خطور کند این است که چرا ما در ابتدا اقدام به ساخت آیکان برای صفحه نمایشی با تراکم بسیار بالا یا به عبارتی صفحه نمایش xhdpi کردیم. در پاسخ به این سوال بایستی گفت که با اینکار مراحل ساخت آیکان را برای خود کاهش خواهیم داد. فرض کنیم که در ابتدا آیکانی به ابعاد 36 در 36 برای صفحه نمایشی با تراکم پایین یا به عبارتی ldpi ایجاد می کنیم. حال اگر بخواهیم پس از تکمیل طراحی، ابعداد تصویر را به طور مثال به 48 در 48 برای mdpi افزایش دهیم، کیفیت آیکان ما تا حدودی کاهش پیدا خواهد کرد و این مسئله در مورد افزایش سایز آیکان به 96 در 96 به مراتب مشهود تر می باشد. اما عکس این قضیه صادق نیست. یعنی اگر در ابتدا آیکانی به ابعاد 96 در 96 پیکسل ایجاد کنیم سپس طرح اولیه را به ترتیب به ابعاد 72 در 72 سپس 48 در 48 و در نهایت به 36 در 36 پیکسل کاهش دهیم، می توانیم انتظار نتایج به مراتب مطلوب تری داشته باشیم.

اکنون با دانستن این نکات می توانیم روی گزینه OK کلیک کرده و تصویر ایجاد شده را مشاهده کنیم:


920610-a25-IMAGE 3.jpg

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

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


920610-a25-IMAGE 4.jpg

در این پنجره می توانیم طول و عرض شکلی که می خواهیم ایجاد کنیم را تعریف کنیم. به طور مثال در این آموزش عدد 4 پیکسل را برای هم طول و هم عرض شکل خود در نظر می گیریم. پس زدن گزینه OK تصویر زیر را مشاهده خواهیم کرد:


920610-a25-IMAGE 5.jpg

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


920610-a25-IMAGE 6.jpg

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


920610-a25-IMAGE 7.jpg

همانطور که در تصویر فوق مشاهده می شود با استفاده از ابزار Move Tool به معنی "ابزار جابجایی" مربع قرمز رنگ را به منتها الیه سمت راست تصویر خود کشیده سپس به روش قبل یک خط شبرنگ دیگر یا به اصطلاح یک Guide دیگر مماس با ضلع سمت چپ مربع می کشیم. همین روش را برای قرار دادن Guide های بالایی و پایینی هم تکرار می کنیم و در نهایت تصویر ما به صورت زیر در خواهد آمد:


920610-a25-IMAGE 8.jpg

از آنجا که دیگر به مربع قرمز رنگ در طراحی خود نیازی نداریم، به صورت زیر آن را از تصویر خود حذف می کنیم:


920610-a25-IMAGE 9.jpg

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


920610-a25-IMAGE 10.jpg

می بینیم که شکل حذف شده و فقط Guide های شبرنگ روی صفحه باقی مانده اند. به طور خلاصه می توان گفت که در خروجی گرفتن از فتوشاپ با هر فرمتی این Guide ها چاپ نخواهند شد و صرفاً جهت مشخص سازی نقاطی از تصویر می باشند.

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

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

آموزش برنامه نویسی اندروید - قسمت ۲۴: اصول طراحی Launcher Icon

اهداف آموزشی این قسمت عبارتند از:
1. آشنایی با Launcher Icon
2. اهداف به کار گیری Launcher Icon
3. باید ها و نباید ها در طراحی آیکان
4. فرمت و اندازه آیکان برای صفحه نمایش های مختلف
5. علت استفاده از Padding در طراحی آیکان

آشنایی با Launcher Icon

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

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


920605-a24-IMAGE 1.jpg

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


اهداف به کار گیری Launcher Icon

اهداف به کار گیری آیکان ها در یک اپلیکیشن بسیارند اما در اینجا به برخی از مهم ترین آنها اشاره خواهیم کرد که عبارتند از:

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

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

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


بایدها و نباید ها در طراحی آیکان

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


920605-a24-IMAGE 2.jpg

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

همانطور که در مورد سوم از اهداف به کارگیری آیکان ها در قسمت بالا توضیح داده شد، تصویر بکار گرفته شده در آیکان نمی بایست تصویری Cropped شده یا بریده شده از یک تصویر بزرگ تر باشد:


920605-a24-IMAGE 3.jpg

همانطور که در تصویر فوق مشاهده می شود، تصویر سمت چپ نسبت به تصویر سمت راست از جذابیت بصری کمتری برخوردار است.

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


920605-a24-IMAGE 4.jpg

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


فرمت و اندازه آیکان برای صفحه نمایش های مختلف

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


920605-a24-IMAGE 5.jpg

همانطور که در جدول فوق ملاحظه می شود برای صفحه نمایشی با dpi پایین می بایست آیکانی به ابعداد 32 در 32 پیکسل، صفحه نمایشی با dpi متوسط آیکانی با ابعاد 48 در 48 پیکسل، صفحه نمایشی با dpi بالا آیکانی با ابعداد 72 در 72 پیکسل و در نهایت صفحه نمایشی با dpi بسیار بالا آیکانی با ابعداد 96 در 96 پیکسل داشته باشیم.

اکنون با دانستن این ابعاد می توانیم نکته دیگری را هم مد نظر قرار داده و آن اینکه به منظور رعایت فاصله آیکان اپلیکیشن ما با دیگر آیکان ها می توانیم برای آیکان خود Padding در نظر بگیریم. مثلاً اگر بخواهیم آیکانی برای یک صفحه نمایش با Density متوسط طراحی کنیم با استفاده از نرم افزاری همچون فتوشاپ تصویری با پس زمینه Transparent یا شفاف با ابعداد 48 در 48 پیکسل ایجاد کرده و به منظور قرار دادن Padding از هر طرف تصویر خود مثلاً 4 پیکسل را خالی می گذاریم. به عبارت دیگر عکس ما دارای ابعاد 48 در 48 است اما فضای مفید استفاده شده از آن 40 در 40 می باشد.

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

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

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

آموزشی برنامه نویسی اندروید- قسمت ۲۳: پنجره های مورد استفاده در برنامه نویسی در اندروید استودیو

اهداف آموزشی این قسمت عبارتند از:
1. معرفی بخش های مختلف محیط برنامه نویسی اندروید استودیو

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


اگر خاطرمان باشد در اکلیپس جایی که می توانستیم از آن طریق به پروژه های خود دسترسی پیدا کنیم Package Explorer نامیده می شد. اما پنجره ای که در محیط اندروید استودیو این وظیفه را بر عهده دارد Project نامیده می شود که در تصویر زیر با یک کادر مستطیلی قرمز رنگ نشان داده شده است. به طور کلی می توان گفت که چیدمان فولدرها در اندروید استودیو نسبت به اکلیپس تا حدودی متفاوت است. به عبارت دیگر در محیط برنامه نویسی اکلیپس در زیرشاخه Root Directory یا همان "دایرکتوری اصلی" پروژه ای که ایجاد می کنیم، یک فولدر تحت عنوان src قرار دارد که کلیه پکیج ها و کلاس های جاوای اپلیکیشن ما در آن قرار دارند. فولدر res نیز در همین دایرکتوری اصلی قرار گرفته است.

اما این در حالی است که ساختار فولدرهای تشکیل دهنده یک پروژه در اندروید استودیو تا حدودی متفاوت است. در حقیقت در اندروید استودیو در Root Directory یک دایرکتوری با همان نامی که برای پروژه خود انتخاب می کنیم وجود داشته سپس در همان دایرکتوری اصلی یک دایرکتوری دیگر با همان نام پروژه ای که داشتیم وجود دارد. در زیرشاخه دایرکتوری دوم فولدری تحت عنوان src وجود دارد که داخل آن یک فولدر دیگر به نام main به معنی "اصلی" وجود دارد. داخل فولدر main یک فولدر به اسم java وجود دارد که در برگیرنده کلیه پکیج ها و کلاس های جاوای اپلیکیشن است. علاوه بر فولدر java فولدر دیگر تحت عنوان res نیز در زیرشاخه فولدر main وجود داری که حاوی کلیه منابع مورد استفاده در اپلیکیشن است. برای روشن تر شدن مطالب فوق، تصویر زیر نشان دهنده کلیه این فولدرها در محیط اندروید استودیو است:

920602-a23-IMAGE 1.jpg

همانطور که در تصویر فوق مشاهده می شود فایل بسیار مهم AndroidManifest.xml نیز در زیرشاخه فولدر main قرار گرفته است. اگر این فایل را باز کنیم خواهیم دید که بر خلاف اکلیپس این فایل XML را فقط از طریق کدنویسی می توان ویرایش کرد و این در حالی است که در اکلیپس این فایل دارای پنج Tab مجزا از یکدیگر بود که چهارتای آنها دارای ظاهر گرافیکی بوده و فقط یک مورد از آنها امکان ویرایش کدنویسی را به ما می داد.

برای آنکه بتوانیم یک فولدر جدید در زیرشاخه فولدر res ایجاد کنیم، تصویر زیر را مد نظر قرار داده و طبق آن عمل می کنیم:


920602-a23-IMAGE 2.jpg

در واقع، روی فولدر res کلیک راست کرده سپس روی گزینه New کیک کرده و سپس همانطور که در تصویر فوق با یک بیضی قرمز رنگ نشان داده شده است روی گزینه Android resource directory کلیک می کنیم. پس از کلیک پنجره ای به شکل زیر باز خواهد شد:


920602-a23-IMAGE 3.jpg

در این پنجره در بخش مربوط به Directory name به معنی "نام دایرکتوری" می بایست نام فولدری که می خواهیم بسازیم را وارد کنیم. به طور مثال قصد داریم که یک فولدر برای عکس ها با هر زرولوشنی ایجاد کنیم. برای این منظور نام از پیش تعیین شده drawable را وارد کرده و از بخش Resource type به معنی "نوع منبع ذخیره سازی" گزینه drawable را انتخاب می کنیم. به عبارت دیگر می بایست مابین چیزی که می خواهیم ایجاد کنیم و نوع آن چیز هماهنگی وجود داشته باشد.

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


920602-a23-IMAGE 4.jpg

به طور خلاصه، با انتخاب گزینه Language به معنی "زبان" و سپس کلیک کردن روی دکمه ای که در تصویر فوق با یک کادر مستطیلی قرمز رنگ مشخص شده است می توانیم به توصیف کننده های مربوط به زبان های مختلف دنیا دست پیدا کنیم. به طور مثال fa:Persian را برای زبان فارسی انتخاب کرده و می بینیم که به محض انتخاب آن، پسوند fa با پس از قرار گرفته یک Dash به صورت خودکار به ادامه نام انتخابی ما اضافه خواهد شد.

در این قسمت فقط نیاز داریم تا یک فولدر drawable ایجاد کنیم بنابراین به Available qualifiers کاری نداریم. حال پس از کلیک روی دکمه OK خواهیم دید که فولدر ساخته شده به لیست فولدر ها اضافه خواهد شد:


920602-a23-IMAGE 5.jpg

کادری که در تصویر زیر با رنگ قرمز مشخص شده است جایی است که برای نمایش دادن فایل ها است خواه این فایل یک کلاس جاوا باشد خواه یک Layout از جنس XML در این کادر باز خواهد شد:


920602-a23-IMAGE 6.jpg

در تصویر زیر گزینه Android در یک کادر مستطیلی قرمز رنگ مشخص شده است:


920602-a23-IMAGE 7.jpg

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

نکته ای که برای بنده کمی عجیب به نظر می رسد این است که چرا گوگل به چیزی به این سادگی در حین طراحی اندروید استودیو توجه نکرده و آن هم این که مثلا عناوین کل پنجره ها مثل Devices با حرف بزرگ شروع شده اما پنجره logcat نه تنها با حرف بزرگ نوشته نشده است بلکه به صورت camelCase نیز در نیامده است. به هر حال می توان این مسائل را جزو Bug های بی اهمیت این محیط برنامه نویسی تلقی کرد(برای آشنایی بیشتر با اصطلاح camelCase به سری آموزش های جاوا در سایت نردبان قسمت دهم مراجعه نمایید).

چنانچه یک فایل مرتبط با رابط گرافیکی کاربر یا همان GUI باز کنیم، خواهیم دید که پنجره مرتبط با بخش تنظیمات یا همان Properties نمایان خواهد شد:


920602-a23-IMAGE 8.jpg

همانطور که در تصویر فوق مشاهده می شود، می توانیم تنها فایل مربوط به Layout پروژه که فایلی تحت عنوان activity_main.xml است را از زیرشاخه res داخل فولدری به نام layout قرار دارد را باز کنیم. پس از باز کردن این فایل همانطور که در تصویر فوق مشاهده می شود گزینه Designer به معنی "طراح" در یک کادر مستطیلی قرمز رنگ مشخص شده است. پس از کلیک روی آن به پنجره ای که در اکلیپس هم تحت عنوان Properties وجود داشت دست خواهیم یافت که در تصویر فوق با یک بیضی قرمز رنگ نشان داده شده است.

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

روابط زن و مرد ایرانی در آستانه تحول

 

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

تحول عظیم اجتماعی

همه آمارهایی که این روزها منتشر می‌شوند، حکایت از تحول عظیم اجتماعی دارند. جامعه شناسان می‌گویند تغییراتی که امروز جامعه شاهد آن است، برای همیشه چهره ایران را تغییر خواهد داد. تغییراتی که چندان هم خوشنایند "دکترین اسلامی" حاکم نیست.

کوچک شدن خانواده‌ها

خانواده‌های ایرانی دیگر به بزرگی گذشته نیستند. خانواده‌های تشكيل شده از حيث تعداد اعضا دچار تغيير و تحول بنيادی شده‌اند. حركت خانوار ايرانی از ۵ و ۶ نفره در دهه ۶۰ و اوايل هفتاد به‌سوی ۲ و ۳ در اواخر دهه ۸۰ و اوايل دهه ۹۰ نشان از تعریف جدید ایرانیان از خانواده دارد. دست‌خط مشکلات اقتصادی، زندگی شهری و میزان تحصیلات در این تعریف بوضوح دیده می‌شود.

وضعیت خانواده در مناطق روستایی

در گذشته خانواده‌های روستایی به حیث نیاز به نیروی کار بزرگتر از خانواده‌های شهری بودند. در سال‌های گذشته خانواده‌های روستایی نه تنها کوچک شده‌اند، بلکه به قول محسن رضایی، روستاها به خانه سالمندان تبدیل شده‌اند. بسیاری از روستاییان جوان به‌خصوص در مناطق مرکزی ایران به شهرها مهاجرت کرده‌اند.

بزرگ‌شدن کودکان بدون پدر و مادر در روستاها

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

کاهش ازدواج

روند کاهش ازدواج در حالی که از سال ۱۳۹۰ برای نخستین بار رشد منفی نشان داد در سال ۹۱ نیز ادامه یافت. ازدواج درسال ۹۱ به میزان منفی ۱ / ۵ درصد رسید که این نسبت درنقاط روستایی ۹ / ۵ درصد بوده است.

افزایش سن ازدواج

مشکلات اقتصادی بویژه بیکاری شدید در میان جوانان و تغییرات ارزشی و هویتی جوانان باعث بالارفتن سن ازدواج به بعد از ۲۵ سالگی شده است. به گفته مدیر کل دفتر اطلاعات و آمار جمعیتی سازمان ثبت احوال سهم ازدواج‌های بالای ۳۵ سال برای مردان و بالای ۳۰ سال برای زنان در محدوده زمانی سال‌های ۸۴ تا ۹۱ دوبرابر شده است.

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

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

افزایش طلاق

در طی سال‌های ۱۳۸۳ تا ۱۳۹۰ در مجموع ۸۶۸ هزار و ۳۱۲ زوج در ایران از هم جدا شدند. میزان طلاق در سال ۹۱ نسبت به سال قبل ۶ درصد افزایش یافت.

دلائل افزایش طلاق

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

طلاق عاطفی

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

تغییر هویت‌زنان

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

زنان شاغل

حضور زنان در بازارکار و کسب درآمد باعث استقلال مالی زنان بسیاری شده است.جامعه‌شناسان می‌گویند استقلال مالی زنان بر نقش و جایگاه آنان در درون نهاد خانواده تاثیر به‌سزایی دارد. از سوی دیگر استقلال مالی دختران شاغل حتی در روند انتخاب و یا عدم انتخاب همسر در سنین بین ۲۵ تا ۳۰ سال نیز دخیل است.

تحولی دیگر

افزایش ازدواج دختران با پسران کم سن و سال‌تر از خود تحولی جدید است. در ۷ / ۱۰ درصد ازدواج‌هایی که در سال ۹۱ در ایران ثبت شده، سن زن بیشتر از مرد است. جالب اینکه این تحول در روستاها نیز دیده می‌شود و حتی درصد آن از شهرها کمی بالاتر است. از کل ازدواج‌هایی که در نقاط روستایی صورت گرفته ۱۱ درصد از کل آمار را این ازدواج‌ها تشکیل می‌دهند.

خانواده‌های غیر قانونی

اکنون خانواده در ایران دیگر نهادی متشکل از مرد و زن نیست که عقدنامه‌ی شرعی و قانونی داشته باشند و زن مکلف به تمکین به شوهر باشد. در سال‌های اخیر دختران و پسران به زندگی با هم پرداخته‌اند و به هم تعهد عاطفی دارند، اما رسما ازدواج نکرده‌اند. این خانواده‌ها در ایران غیر قانونی هستند.

بحران فرهنگ مردسالار

اكنون انتظارات زوجين در خانواده ايرانی از يكديگر در حال دگرگونی است. گسترش بی‌بازگشت و هر چه بيشتر اشتغال زنان اين دگرگونی را بازهم بیشتر خواهد کرد. تغییر نوع روابط مرد و زن که به کاهش قدرت مرد در رابطه با زن انجامیده، فرهنگ مرد‌سالار و باورهای سنتی و دینی را بحرانی کرده است.

آموزش برنامه نویسی اندروید - قسمت ۲۲: نحوه ساخت ماشین مجازی در اندروید استودیو

اهداف آموزشی این قسمت عبارتند از:
1. نحوه ساخت ماشین مجازی در اندروید استودیو
2. به کار گیری ماشین های مجازی از پیش تعریف شده

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

نحوه ساخت ماشین مجازی در اندروید استودیو

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


920530-a22-IMAGE 1.jpg

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


920530-a22-IMAGE 2.jpg

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


920530-a22-IMAGE 3.jpg

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


920530-a22-IMAGE 4.jpg

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


920530-a22-IMAGE 5.jpg

اما این در حالی است که اگر این ماشین مجازی را در محیط اندروید استودیو ویرایش کنیم و آن را برای نسخه سیستم عامل اندروید 4.2.2 تنظیم کنیم، چنانچه بخواهیم این ماشین مجازی را در محیط اکلیپس اجرا کنیم باز هم با موقعیت زیر مواجه خواهیم شد:


920530-a22-IMAGE 6.jpg

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


920530-a22-IMAGE 7.jpg

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

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


920530-a22-IMAGE 8.jpg

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


به کار گیری ماشین های مجازی از پیش تعریف شده

ابتدا به تصویر زیر توجه کنید:


920530-a22-IMAGE 9.jpg

در این تصویر در کنار Tab مربوط به Android Virtual Device یک Tab دیگری تحت عنوان Device Definitions به معنی "دستگاه های از پیش تعریف شده" وجود دارد که با یک بیضی قرمز رنگ مشخص شده است در این Tab دستگاه های مجازی از پیش تعریف شد ای وجود دارند که توسعه دهنده با استفاده از هر کدام از اینها دیگر نیازی ندارد تا کلیه تنظیمات را خود انجام دهد(اطلاعاتی همچون اندازه صفحه هر کدام و همچنین مقدار RAM اختصاص داده شده به هر دستگاه نشان داده شده است). به طور مثال در تصویر فوق گزینه اول انتخاب شده است که به رنگ آبی در آمده است که Nexus S نام دارد. حال با کلیک کردن روی گزینه Create AVD که در تصویر فوق با یک فلش قرمز رنگ مشخص شده است می توان به پنجره تنظیمات رفته و آن را طبق نیاز خود Customize کرد و کار ساخت یک ماشین مجازی را به پایان رساند. از جمله کارهایی در که در Customize کردن می توان انجام داد می شود به تغییر نام ماشین مجازی اشاره کرد.

اما چنانچه بخواهیم یک ماشین مجازی را خود از ابتدا بسازیم، می بایست مجدد به Tab مربوط به Android Virtual Device رفته سپس روی گزینه New کلیک نماییم. اکنون بایستی مطابق تصویر زیر عمل کنیم:


920530-a22-IMAGE 10.jpg

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

همانطور که در تصویر فوق با یک کادر قرمز رنگ مشخص شده است، مقدار 1907 وارد شده است که بایستی این عدد به کمتر از 768 تقلیل یابد. بنابراین عدد کمتری مثل 500 را وارد می کنیم و تنظیمات ما به صورت زیر در خواهد آمد(مقدار مرتبط با RAM و SD Card بسته به سخت افزار کامپیوتری که با آن کار می کنیم می تواند تحت تاثیر قرار گیرد. در صورتیکه در حین اجرای Emulator با مشکل مواجه شدید می توانید این مقادیر را کاهش دهید):


920530-a22-IMAGE 11.jpg

آپشن جدید که در پنجره مربوط به ساخت یک دستگاه مجازی در اندروید استودیو وجود دارد، گزینه مربوط به GPU است که در تصویر فوق با یک بیضی قرمز رنگ نشان داده شده است. به طور خلاصه می توان گفت که GPU مخفف واژگان Graphical Processing Unit به معنی "واحد پردازشگر گرافیکی" است. در واقع با تیک زدن این گزینه می توان شاهد تصاویر صاف تر بود. نکته ای که در ارتباط با تیک زدن این گزینه می بایست همواره مد نظر داشته باشیم این است که نمی توانیم به طور هم زمان هم گزینه Use Host GPU و هم گزینه Snapshot را تیک زد.

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

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

آموزش برنامه نویسی اندروید - قسمت ۲۱: چرا باید کار با اندروید استودیو را فرا گرفت ولی نباید با آن کا

اهداف آموزشی این قسمت عبارتند از:
1. چرا بایستی توسعه اپلیکیشن با اندروید استودیو را یاد بگیریم.
2. چرا نمی بایست در توسعه اندروید روی اندروید استودیو تمرکز کنیم.
3. روشی به منظور ارتقاء سرعت اجرای اندروید استودیو

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

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

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

در این قسمت قصد داریم تا به مزایای محیط برنامه نویسی اندروید استودیو اشاره ای داشته باشیم. اندروید استودیو رایگان است و برای دانلود و شروع کار با آن هیچ هزینه ای نیاز نیست بپردازیم(اگر چه که در اینجا حتی فتوشاپ هم رایگان است اما اندروید استودیو واقعاً رایگان است). یکی از مزیت های اندروید استودیو بر محیط برنامه نویسی اکلیپس این است که نیازی نیست تا SDK و ADT را روی آن نصب کنیم بلکه از قبل این کار توسط گوگل روی آن صورت گرفته است(البته همانطور که در مقدمه این سری از آموزش ها بیان شد، محیط توسعه اندروید ADT Bundle نیز همین شرایط را دارا است).

با فعال کردن Preview All Screen Sizes در اندروید استودیو این امکان برای ما فراهم خواهد شد تا بتوانیم به طور همزمان خروجی اپلیکیشن خود در سایزهای مختلف را مشاهده کنیم:


920528-a21-IMAGE 1.jpg

تصویر فوق نمایی از Preview All Screen Sizes پروژه My First Android Project است که در قسمت ششم از این سری از آموزش ها ایجاد کردیم. در حقیقت این ویژگی اندروید استودیو امکانی را برای ما فراهم می آورد که بتوانیم UI اپلیکیشن خود را به صورت هم زمان روی دستگاه هایی با ابعدا مختلف مشاهده کنیم(البته کلیه مدل های استفاده شده مربوط به برند Nexus می باشند).

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

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

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

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


920528-a21-IMAGE 2.jpg

چرا نمی بایست در توسعه اندروید روی اندروید استودیو تمرکز کنیم!

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


روشی به منظور ارتقاء سرعت اجرای اندروید استودیو

به عنوان راه کاری که از آن طریق می توان سرعت اندروید استودیو را تا حدودی ارتقاء بخشید می توان به غیر فعال کردن گزینه Real-time file system protection به معنی "محافظت از فایل های سیستم به صورت هم زمان" در نرم افزار آنتی ویروس نصب شده روی سیستم اشاره کرد. در حقیقت زمانیکه این گزینه فعال باشد، هر موقع که اقدام به اجرای پروژه خود در اندروید استودیو می کنیم، کلیه فایل های موجود در Output Directory یا "دایرکتوری خروجی برنامه" اسکن می شوند و همین مسئله موجب می گردد که سرعت توسعه اپلیکیشن به مراتب پایین تر آید. اعمال این تنظیمات بسته به نوع آنتی ویروسی که استفاده می کنیم می تواند متفاوت باشد اما برای مثال در آنتی ویروس ESET Smart Security 4 این تغییرات به صورت زیر صورت خواهد گرفت:


920528-a21-IMAGE 3.jpg

همانطور که در تصویر فوق مشاهده می شود، وارد Setup آنتی ویروس شده و از بخش Real-time file system protection همانطور که در تصویر فوق با بیضی قرمز رنگ مشخص شده است روی گزینه Configure به معنی "تنظیم کردن" کلیک می کنیم و سپس پنجره ای به شکل زیر خواهیم دید:


920528-a21-IMAGE 4.jpg

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

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

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

تو یک دختری…

GIrlWwW.KamYab.Ir  جدیترین عکس های طنز با توضیح ( شرح در تصویر خنده دار سری یازدهم)

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

بیست اختراع برتر سال!

alt


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

 


alt


    زاریوس، دستگاه ساخت آلمان، که با استفاده از باد، انرژی تولید می کند و با آن می توان باتری دستگاه های الکترونیکی را شارژ کرد.

 


alt


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

 


alt


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

 


alt


    این دستگاه ساخت آمریکا به نام "روو لایتس" با ایجاد حلقه های نورانی در اطراف چرخ ها، ایمنی دوچرخه سواران را بالا می برد.

 


alt


    "کامب" نوعی کامیون بدون راننده که با استفاده از سیستم موقعیت یابی (جی پی اس) هدایت می شود. این وسیله نقلیه ساخت اتریش است.

 


alt


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

 


alt


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

 


    alt


    دستگاه "تیم او" به کسی که با جلیقه نجات روی آب کشیده می شود، امکان می دهد صورتش خارج از آب قرار گیرد. ساخت بریتانیا.

 


alt


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

 


    alt
    این ژنراتور برق پیش از این جایزه جیمز دایسون را در بریتانیا برده است. این دستگاه با استفاده از حرکت امواج، برق تولید می کند.

 


    alt


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

 


alt


    گفته شده که "بازوی تایتان"، ساخت آمریکا، توان بدنی شخص را بالا می برد و سازندگانش می گویند که به افراد آسیب دیده کمک می کند که عضلاتشان را بازسازی کنند.

 


alt


    این دستگاه با استفاده از رایانه، فشار خون، میزان اکسیژن خون و سایر علائم حیاتی را اندازه می گیرد. ساخت اسپانیا.

 


alt


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

 


عکس: بیست اختراع برتر سال


    قطعات این دست مصنوعی نیز که ساخت ژاپن است را می توان با یک چاپگر سه بعدی بازسازی کرد.

 


  عکس: بیست اختراع برتر سال


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

 


عکس: بیست اختراع برتر سال


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

 


عکس: بیست اختراع برتر سال


    "روم"، ساخت استرالیا یک سیلندر اکسیژن است که برای کودکان ساخته شده. به گفته سازندگانش حمل آن برای مبتلایان به آسم راحت تر از سیلندر های رایج کنونی است.

 


عکس: بیست اختراع برتر سال


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

آموزش برنامه نویسی اندروید - قسمت ۲۰: شخصی سازی محیط اکلیپس برای کاربری آسانتر

اهداف آموزشی این قسمت عبارتند از:
1. معرفی Perspective در محیط اکلیپس
2. باز کردن پنجره های مورد نیاز برای توسعه اندروید
3. ساخت یک Perspective به نام خود

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

معرفی Perspective در محیط اکلیپس

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


920522-a20-IMAGE 1.jpg

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


باز کردن پنجره های مورد نیاز برای توسعه اندروید

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


920522-a20-IMAGE 2.jpg

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

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


920522-a20-IMAGE 3.jpg

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

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


920522-a20-IMAGE 4.jpg

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


920522-a20-IMAGE 5.jpg

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


920522-a20-IMAGE 6.jpg

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


920522-a20-IMAGE 7.jpg

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


920522-a20-IMAGE 8.jpg

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


920522-a20-IMAGE 9.jpg

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


920522-a20-IMAGE 10.jpg

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


920522-a20-IMAGE 11.jpg

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


920522-a20-IMAGE 12.jpg

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


920522-a20-IMAGE 13.jpg

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


ساخت یک Perspective به نام خود

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


920522-a20-IMAGE 14.jpg

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


920522-a20-IMAGE 15.jpg

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


920522-a20-IMAGE 16.jpg

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

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


920522-a20-IMAGE 17.jpg

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


920522-a20-IMAGE 18.jpg

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


نکته پایانی

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

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

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

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


خانوما با این جملات دلشون آب میشه!!!


 

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

 

● چقدر زیبایی
زن ها دوست دارند ظاهرشان را ستایش کنید و گاهی به آن ها بگویید که چه چهره زیبا یی دارند. حتی اگر همسر شما واقعا به این زیبایی نباشد از این که گمان کند در نظر شما این طور به نظر می رسد، احساس غرور خواهد کرد. البته بی گدار به آب نزنید و بدون آن که برای حرف تان دلیلی داشته باشید او را ستایش نکنید. چون درست در زمانی که به همسرتان می گویید، چقدر زیبا هستی… او دلیل شما را خواهد پرسید و خواهد گفت از چه نظر؟ پس سعی کنید برای این ادعای تان جزئیاتی را هم مطرح کنید و به این فکر کنید، چه چیز در او زیباتر است و بعد سراغ تعریف کردن بروید.

 

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

 

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

 

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

 

● متاسفم
برای زن ها مهم ترین اتفاقی که می تواند بعد از یک دعوا یا دلخوری پیش بیاید، شنیدن عذرخواهی مردشان است. آن ها دوست دارند تاسف واقعی شما را ببینند و بعد از این دلخوری ها مورد دلجویی قرار گیرند. غرورتان را کنار بگذارید و اگر اشتباه کرده اید قبل از توضیح دادن دلایل تان از او عذر خواهی کنید. این که شما بدون گفتن این که پشیمانید شروع به توضیح دادن و دلیل تراشی کنید می تواند ناراحت کننده ترین واکنش بعد از دعوا برای یک زن باشد. پس اگر نمی خواهید اوضاع را از این که هست خراب تر کنید با یک جمله ای که از ته دل می گویید همه چیز را رو به راه کنید؛ بگویید: ببخشید و متاسفم!

 

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

 

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

آموزش برنامه نویسی اندروید - قسمت ۱۹: اجرای پروژه روی یک دستگاه واقعی

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

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

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

نقاط ضعف یک ماشین مجازی

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


نقطه قوت یک دستگاه مجازی

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

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

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


آشنایی با تنظیمات تلفن همراه برای تست کردن اپلیکیشن روی آن

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

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


920520-a19-IMAGE 1.jpg

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


920520-a19-IMAGE 2.jpg

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


920520-a19-IMAGE 3.jpg

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


920520-a19-IMAGE 4.jpg

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


920520-a19-IMAGE 5.jpg

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


920520-a19-IMAGE 6.jpg

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

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

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


920520-a19-IMAGE 7.jpg

920520-a19-IMAGE 7.jpg

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


920520-a19-IMAGE 8.jpg

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

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

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


920520-a19-IMAGE 9.jpg

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


920520-a19-IMAGE 10.jpg

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

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


920520-a19-IMAGE 11.jpg

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

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

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

کمی جدی جیغ بکشید!!!

رتبه کنکور دختر عموم رو واسش اس ام اس کردن
اومده میگه : نمیدونم کی واسم شارژ ایرانسل فرستاده !!
.
.
.
افلاطون را گفتند چرا هرگز غمگین نمیشوی ؟
گفت :
نمیدانـــم :))
.
.
.
کیه؟ کیه؟ کیه؟
کیه؟ط£آ¢ط¢â‚¬ط¢آ¦ط£آ¢ط¢â‚¬ط¢آ¦ط£آ¢ط¢â‚¬ط¢آ¦ط£آ¢ط¢â‚¬ط¢آ¦کیه؟
کیه؟
واکنش اعضای خانواده وقتی شما تلفن وجواب می دی
(نمیذارن نفست بالا بیاد)
.
.
.
بعضی هام هستن وقتی دست تو دماغشون میکنن
دهنشون کج میشه و ۱۱۶ تا عصب صورتشون درگیر میشه !
.
.
.
داشتم با تبلت پسر عموم ط£آ¢ط¢â‚¬ط¢إ“Angry Beardsط£آ¢ط¢â‚¬ بازی میکردم !
بابام اومد بقلم نشست ، یه سری تکون داد زیر لب گفت :
ط£آ¢ط¢â‚¬ آخرشم کفتر باز دیجیتالی شدط£آ¢ط¢â‚¬
.
.
.
تو یه روز سرد پیجامه گرمت رو می پوشی و می پری تو تختت
بالشت رو درست می کنی، پتو رو می کشی رو خودت
خودت رو اینور و اونور می کنی، یکمم خودت رو می کشی
حسابی که گرم شدی چشاتو می بندی که بخوابی ط£آ¢ط¢â‚¬ط¢آ¦
یه دفعه می بینی چراغ اتاق رو یادت رفته خاموش کنی!
.
.
.
همسایمون اسمش ط£آ¢ط¢â‚¬ط¢إ“طلاط£آ¢ط¢â‚¬ست
توی ط£آ¢ط¢â‚¬ط¢إ“نقرهط£آ¢ط¢â‚¬ فروشی کار میکنه
تازگیارفته برنزه کردهط£آ¢ط¢â‚¬ط¢آ¦!
فکرکنم اخر با مِسی ازدواج کنه
بچه شم شکل استیلی میشه !
.
.
.
ﺭﻭﺯﺍﻱ ﺗﻌﻄﻴﻞ ﺯﻧﮓ ﺳﺎﻋﺘﻤﻮ ﺭﻭﻱ ﺳﺎﻋﺖ
ﻫﻔﺖ ﺗﻨﻈﻴﻢ ﻣﻴﮑﻨﻢ
ﺯﻧﮓ ﮐﻪ ﺧﻮﺭﺩ، ﭘﺎ ﻣﻴﺸﻢ ﺑﻬﺶ ﻣﻴﮕﻢ ﮔُ*ﻪ ﻧﺨﻮﺭ!
ﺩﻭﺑﺎﺭﻩ ﻣﻴﺨﻮﺍﺑﻢ ^-^ ای حال میده !
.
.
.
دوستم منتظر کارای ویزاش اوکی بشه بعد تا آخر تابستون بره اروپا رو بگرده
منم منتظرم PES 2014 بیاد ببینم میشه با هاشم بیگ زاده توپو از رونالدو گرفت یا نه !؟
.
.
.
یارو میره دبی تو رستوران میگه:
الکباب
کباب براش میارن
میگه:الپیاز
پیاز براش میارن
میگه:البرنج
برنج براش میارن
با غرور میگه چقدر خوبه آدم عربی بلد باشه
گارسونه بهش میگه اگه من ایرانی نبودم الکوفت هم بهت نمیدادن !!
.
.
.
نصف جذابیت دخترا به ترسو بودنشونه
دختری که سوسک بکشه به درد زندگی نمیخوره !
.
.
.
اوج استفاده مامانم از گوشیش اینه که زنگ بخوره صداشو نشنوه جواب نده !
.
.
.
پسر خالم آیپدشو گذاشته بود رو زمین
منم فک کردم از این ترازو دیجیتالاس رفتم روش وایسادم :|
هیچی دیگه بیچاره کور شد از بس گریه کرد
.
.
.
ﯾﻪ ﭘﺴﺮﻩ نوشته ﺑﻮﺩ:
ﺩﻧﯿﺎ ﺍﮔﻪ ﻣﺮﺩ
ﺑﻮﺩ ﺍﺳﻢ ﺩﺧﺘﺮﻭﻧﻪ ﺭﻭﺵ ﻧﺒﻮﺩ!
ﺑﻌﺪ ﯾﻪ ﺩﺧﺘﺮﻩ ﺟﻮﺍﺏ ﺩﺍﺩﻩ ﺑﻮﺩ:
ﺷﻤﺎ ﺻﺪﺍﺵ ﺑﺰﻥط£آ¢ط¢â‚¬ﺟﻬﺎﻥط£آ¢ط¢â‚¬ﺑﺒﯿﻨﻢ ﻓﺮﻗﯽ ﺑﻪ ﺣﺎﻟﺘﻮﻥ ﻣﯿﮑﻨﻪ !؟
.
.
.
خنده بر هر درد بی درمان دواست
ط£آ¢ط¢â‚¬ط¢آ¦.
غیر از اسهال !
.
.
.
Aط¢آ«تو کز نجابت صدها بهار لبریزی٬ چرا به ما که رسیدی همیشه پاییزی؟
ببین! سراغ مرا هیچ‌کس نمی‌گیرد٬ مگر که نیمه شبی، غصه‌ای، غمی، چیزیAط¢آ»
.
.
.
زندگی یعنی:
باید مثل خر درس بخونی دهنت سرویس بشه
تا در آینده بتونی مثل خر کار کنی دهنت سرویس بشه !
.
.
.
عروسی های هالیوودی:
عروس خانم قبوله عااایاااا؟؟
عروس :با اجازه بچه هااااااامون و همچنین نوه مون که تازه به دنیا اومده!
.
.
.
ﺩﺭ ﺧﺎﻧﻮﺍﺩﻩ ﻣﺎ ﻫﺮﺟﺎ ﺳﺨﻦ ﺍﺯ ﺍﻧﺤﺮﺍﻑ ﺍﺳﺖ
ﻧﺎﻡ ﺯﯾﺒﺎﯼ ﻣﻦ ﻣﯿﺪﺭﺧﺸﺪ !
.
.
.
دوست دارم خیلى راحت و بى دردسر تو خواب بمیرم،مثل بابابزرگم.
نه با جیغ و داد مثل مسافراى اتوبوسشط£آ¢ط¢â‚¬ط¢آ¦!
.
.
.
ﺑﺎﻍ ﻭﺣﺶ ﻣﻤﻠﻮ ﺍﺯ ﺟﻤﻌﯿﺖ ﺑﻮﺩ، ﺍﺯ ﺑﻠﻨﺪﮔﻮﯼ ﺑﺎﻍ ﻭﺣﺶ ﺍﯾﻦ ﺟﻤﻠﻪ ﺷﻨﯿﺪﻩ ﺷﺪ:
ط£آ¢ط¢â‚¬ ﺑﺎﺯﺩﯾﺪﮐﻨﻨﺪﮔﺎﻥ ﮔﺮﺍﻣﯽ ﺍﺯ ﺩﺍﺩﻥ ﻫﺮ ﮔﻮﻧﻪ ﻏﺬﺍ ﻭ ﺧﻮﺭﺍﮐﯽ ﺑﻪ ﺣﯿﻮﺍﻧﺎﺕ ﺧﻮﺩﺩﺍﺭﯼ ﻓﺮﻣﺎﯾﯿﺪ .ط£آ¢ط¢â‚¬
ﺑﻌﺪ ﺍﺯ ﻣﺪﺗﯽ ﻣﺠﺪﺩﻥ ﺍﺯ ﺑﻠﻨﺪ ﮔﻮ ﺍﻋﻼﻡ ﺷﺪ
ط£آ¢ط¢â‚¬ ﺑﺎﺯﺩﯾﺪﮐﻨﻨﺪﻩ ﮔﺮﺍﻣﯽ ﺍﺯ ﺷﻤﺎ ﺧﻮﺍﻫﺶ ﮐﺮﺩﯾﻢ ﮐﻪ ﺍﺯ ﺗﻐﺬﯾﻪ ﺣﯿﻮﺍﻧﺎﺕ ﺧﻮﺩﺩﺍﺭﯼ ﻓﺮﻣﺎﯾﯿﺪ !ط£آ¢ط¢â‚¬
ﺍﯾﻦ ﻫﺸﺪﺍﺭﻫﺎ ﺑﺎ ﻟﺤﻦ ﻫﺎﯼ ﻣﺨﺘﻠﻒ ﭼﻨﺪﯾﻦ ﺑﺎﺭ ﺗﮑﺮﺍﺭ ﺷﺪ
ﺁﺧﺮﯾﻦ ﻫﺸﺪﺍﺭ ﺑﻠﻨﺪﮔﻮ ﺍﯾﻦ ﺑﻮﺩ :
ط£آ¢ط¢â‚¬ ﺣﯿﻮﺍﻧﺎﺕ ﻋﺰﯾﺰ ﺧﻮﺍﻫﺸﻤﻨﺪﯾﻢ ﺍﺯ ﺁﺩﻣﻬﺎ ﻏﺬﺍ ﻧﮕﯿﺮﯾﺪ !ط£آ¢ط¢â‚¬
.
.
.
(جک بلند !)
ﺳﻪ ﺗﺎ ﺯﻥ ﺗﻮﯼ ﺗﺼﺎﺩﻓﯽ ﮐﺸﺘﻪ ﺷﺪﻥ ﻭ ﺳﻪ ﺗﺎﺷﻮﻥ
ﺭﻓﺘﻦ ﺑﻬﺸﺖ!
ﺩﻡِ ﺩﺭِ ﺑﻬﺸﺖ ﻣﺎﻣﻮﺭ ﻧﮕﻬﺒﺎﻥ ﮔﻔﺖ:
ﺷﻤﺎ ﺁﺯﺍﺩﯾﺪ ﻫﺮ ﮐﺎﺭﯼ ﺑﮑﻨﯿﺪ ، ﺗﻨﻬﺎ ﻗﺎﻧﻮﻥ ﺍﯾﻨﺠﺎ ﺍﯾﻨﻪ
ﮐﻪ : ﺭﻭﯼ ﺍﺭﺩﮎ ﻫﺎ ﭘﺎ ﻧﺬﺍﺭﯾﻦ!
ﺯﻧﻬﺎ ﻗﺒﻮﻝ ﮐﺮﺩﻥ ﻭ ﺭﻓﺘﻦ ﺗﻮﯼ ﺑﻬﺸﺖ.
ﺧﯿﻠﯽ ﺯﯾﺒﺎ ﻭ ﺳﺮﺳﺒﺰ ﺑﻮﺩ ﻭﻟﯽ ﻫﻤﻪ ﺟﺎ ﭘﺮ ﺍﺯ ﺍﺭﺩﮎ ﺑﻮﺩ!
ﻫﻤﻮﻧﺠﺎ ﺍﻭﻟﯿﻦ ﺯﻥ ﭘﺎﺵ ﺭﻓﺖ ﺭﻭﯼ ﯾﻪ ﺍﺭﺩﮎ ﻭ ﻟﻪ ﺷﺪ
ﻣﺎﻣﻮﺭ ﻧﮕﻬﺒﺎﻥ ﻫﻤﻮﻥ ﻟﺤﻈﻪ ﻫﻤﺮﺍﻩ ﺑﺎ ﯾﻪ ﻣﺮﺩ ﺧﯿﻠﯽ ﺑﺪﻗﯿﺎﻓﻪ ﺍﻭﻣﺪ ﻭ ﮔﻔﺖ :
ﺗﻮ ﻗﺎﻧﻮﻥ ﺭﻭ ﻧﻘﺾ ﮐﺮﺩﯼ ﻭ ﺑﺮﺍﯼ ﺗﻨﺒﯿﻬﺖ ﺑﺎﯾﺪ ﺗﺎ ﺍﺑﺪ ﺑﺎ ﺍﯾﻦ ﻣﺮﺩ ﺑﻤﻮﻧﯽ
ﻓﺮﺩﺍ ﺍﻭﻥ ﺭﻭﺯ ، ﺯﻥ ﺩﻭﻡ ﭘﺎﺵ ﺭﻓﺖ ﺭﻭﯼ ﺍﺭﺩﮎ ﻭ
ﻣﺎﻣﻮﺭ ﻧﮕﻬﺒﺎﻥ ﺳﺮﯾﻊ ﺍﻭﻣﺪ ﻭ ﻫﻤﺮﺍﻫﺶ ﯾﻪ ﻣﺮﺩ ﺯﺷت ﺩﯾﮕﻪ ﺑﻮﺩ ﻭ ﮔﻔﺖ :
ﺗﻮﺍﻡ ﻗﺎﻧﻮﻥ ﺭﻭ ﻧﻘﺾ ﮐﺮﺩﯼ ﻭ ﺑﺎﯾﺪ ﺗﺎ ﺍﺑﺪ ﺑﺎ ﺍﯾﻦ ﻣﺮﺩ ﺑﻤﻮﻧﯽ ﺑﺮﺍﯼ ﺗﻨﺒﯿﻪ
ﺯﻥ ﺳﻮﻡ ﮐﻪ ﺍﯾﻨﺎ ﺭﻭ ﺩﯾﺪﻩ ﺑﻮﺩ ﺧﯿﻠﯽ ﺗﺮﺳﯿﺪ ﻭ
ﺣﻮﺍﺳﺸﻮ ﺟﻤﻊ ﮐﺮﺩ ﮐﻪ ﭘﺎﺷﻮ ﺭﻭﯼ ﺍﺭﺩﮎ ﻫﺎ ﻧﺬﺍﺭﻩ!
ﭼﻨﺪ ﻣﺎﻩ ﻫﻤﯿﻨﺠﻮﺭﯼ ﮔﺬﺷﺖ ﮐﻪ ﯾﻪ ﺭﻭﺯ ﻧﮕﻬﺒﺎﻥ ﺑﺎ ﯾﻪ
ﻣﺮﺩ ﻓﻮﻕ ﺍﻟﻌﺎﺩﻩ ﺧﻮﺵ ﺗﯿﭗ ﻭ ﺯﯾﺒﺎ ﺍﻭﻣﺪ ! ﻧﮕﻬﺒﺎﻥ ﺭﻭ
ﺑﻪ ﺯﻥ ﮐﺮﺩ ﻭ ﮔﻔﺖ : ﺷﻤﺎ ﺑﺎﯾﺪ ﺗﺎ ﺍﺑﺪ ﭘﯿﺶ ﻫﻤﺪﯾﮕﻪ ﺑﻤﻮﻧﯿﺪ ط£آ¢ط¢â‚¬ط¢آ¦
ﺯﻥ ﮐﻪ ﺗﻮﯼ ﻋﻤﺮﺵ ﻫﻤﭽﯿﻦ ﻣﺮﺩﯼ ﻧﺪﯾﺪﻩ ﺑﻮﺩ ﺑﺎ ﺫﻭﻕ ﺍﺯ ﻣﺮﺩﻩ ﭘﺮﺳﯿﺪ :
ﻭﺍﺍﺍﺍﯼ ﻣﻦ ﻧﻤﯿﺪﻭﻧﻢ ﭼﯿﮑﺎﺭ ﮐﺮﺩﻡ ﮐﻪ ﭘﺎﺩﺍﺷﻢ ﺗﻮ ﻫﺴﺘﯽ ..!
ﻣﺮﺩﻩ ﮔﻔﺖ : ﻣﻨﻢ ﭼﯿﺰﯼ ﻧﻤﯿﺪﻭﻧﻢ ! ﻓﻘﻂ ﻣﯿﺪﻭﻧﻢ ﮐﻪ ﯾﻪ ﺍﺭﺩﮎ ﺭﻭ ﻟﻪ ﮐﺮﺩﻡ :))

آموزش برنامه نویسی اندروید - قسمت ۱۸: اجرای Emulator و تست اولین اپلیکیشن

اهداف آموزشی این قسمت عبارتند از:
1. نحوه اجرای ماشین مجازی اندروید یا همان AVD
2. تاریخچه عبارت Hello World

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

نحوه اجرای ماشین مجازی اندروید

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


920510-a18-IMAGE 1.jpg

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

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


920510-a18-IMAGE 2.jpg

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


920510-a18-IMAGE 3.jpg

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


920510-a18-IMAGE 4.jpg

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


920510-a18-IMAGE 5.jpg

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


تاریخچه عبارت Hello World

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


  1. main( ) {
  2. extrn a, b, c;
  3. putchar(a); putchar(b); putchar(c); putchar('!*n');
  4. }
  5. a 'hell';
  6. b 'o, w';
  7. c 'orld';

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

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

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

آموزش برنامه نویسی اندروید - قسمت ۱۷: نحوه ساخت دستگاه اندرویدی مجازی برای تست اپلیکیشن

اهداف آموزشی این قسمت عبارتند از:
1. معرفی رویکردهای تست کردن اپلیکیشن
2. تفاوت مابین Emulator و Simulator
3. چرا در توسعه اپلیکیشن اندرویدی از Emulator استفاده می کنیم
4. نحوه ساخت Emulator در محیط اکلیپس

آشنایی با نحوه تست کردن اپلیکیشن

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

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

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


تفاوت مابین Emulator و Simulator

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

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


علت استفاده از Emulator در توسعه اندروید

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

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


نحوه ساخت Emulator در محیط اکلیپس

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


920510-a17-IMAGE 1.jpg

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

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


920510-a17-IMAGE 2.jpg

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


920510-a17-IMAGE 3.jpg

در بخش 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 تکمیل شده باشد:


920510-a17-IMAGE 4.jpg

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

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


920510-a17-IMAGE 5.jpg

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


920510-a17-IMAGE 6.jpg

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


920510-a17-IMAGE 7.jpg

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

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

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

آموزش درست کردن سورمه در منزل

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

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

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

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



گردآوری : گروه سبک زندگی سیمرغ
www.seemorgh.com/lifestyle
منبع : 3nasl.com

آموزش برنامه نویسی اندروید - قسمت ۱۶: آشنایی با واحدهای اندازه گیری در سیستم عامل اندروید

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

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

معرفی dpi

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

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


آشنایی با واحد اندازه گیری dip

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

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


آشنایی با واحد اندازه گیری sp

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

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


نقطه ضعف واحد اندازه گیری sp

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


فرمول تبدیل واحد اندازه گیری dip به Pixel

به طور کلی برای اینکه متوجه شویم که یک 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 به پیکسل چیست؟

تجازوهای اجباری +عکس

به گزارش پرداد به نقل از مهر: هر روز رسوایی های جدید از تروریست‌ های سوری و گروه های تکفیری در مورد جهاد نکاح مخابره می شود جدیدترین خبر جهاد نکاح مرتبط با داستان تلخ دختر نوجوان سوری به نام احلام است.

حرفهای تلخ و دلخراش یک دختر سوری از تجازوهای اجباری +عکس

احلام - اسم مستعار یک دختر نوجوان سوری است که از قربانیان جهاد تجاوز و به اصطلاح تروریستها نکاح است. این دختر 14 ساله از روستاهای اطراف شهر حماه است و در حالی به لبنان آمده که باردار است.
احلام داستان تلخ زندگی خود را این گونه بیان می کند: من مادری که از فرزند خود نفرت داشته باشد مثل مادرم ندیده ام و مادری مجرم تر از مادرم خود مشاهده نکرده ام. مادرم زندگی مرا نابود کرد، مرا فروخت مثل اینکه مرا به دنیا نیاورده است و اگر حقیقتا مادر بود با من این کارها را نمی کرد.
وی ادامه می دهد: پدرم در کنار لشگر به اصطلاح آزاد سوریه با لشگر سوریه جنگ می کرد بعد به جبهه النصره ملحق شد، افرادی که با ارتش سوریه جنگ می کردند به منزل ما می آمدند، مادرم به استقبال آنها می رفت و برای آنها غذا تهیه کرده و لباسهایشان را می شست و زمانی که پدرم در خانه نبود با مادرم  به اطاق خواب می رفتند! زمانی که از وی علت این کار را می پرسیدم مرا تهدید می کرد که اگر این جریان را به پدرم بگویم مرا به قتل می رساند. در حالی که پدرم این چیزها را قبول نمی کرد و با من در مورد جهاد نکاح حرف نزد پدرم با ارتش سوریه می جنگید ولی این مسائل را قبول نداشت.

حرفهای تلخ و دلخراش یک دختر سوری از تجازوهای اجباری +عکس

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

گردآوری: گروه خبری پرداد

آموزش برنامه نویسی اندروید - قسمت ۱۵: طراحی Layout برای دستگاه هایی با تراکم پیکسلی متفاوت‎

اهداف آموزشی این قسمت عبارتند از:
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 بسیار زیاد مورد استفاده قرار می گیرد.


بررسی نسبت مابین صفحه نمایش هایی با Density متفاوت

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


تقسیم بندی دستگاه های موجود در بازار بر حسب Size و Density

به منظور تقسیم بندی دستگاه های موجود بر حسب اندازه می توانیم نمودار زیر را مد نظر قرار دهیم:


920506-a15-IMAGE 2.jpg

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

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


920506-a15-IMAGE 3.jpg

در قسمت بالایی این نمودار تراکم واقعی دستگاه بر حسب تعداد نقطه در هر اینچ از 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 خاص، اندروید از چه فولدری استفاده خواهد کرد؟

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

آموزش برنامه نویسی اندروید - قسمت ۱۴: طراحی Layout برای دستگاه هایی با اندازه صفحه متفاوت

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

1. معرفی Size و Density
2. معرفی کلیۀ فولدرهای پیش فرض layout


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

معرفی Size و Density

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

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

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


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

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

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

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


معرفی کلیۀ فولدرهای پیش فرض layout

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

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


920431-a14-IMAGE 2.jpg

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


920431-a14-IMAGE 3.jpg

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

آموزش برنامه نویسی اندروید - قسمت ۱۰: بررسی فولدرهای Andrtoid و assets و bin و libs

اهداف آموزشی این قسمت عبارتند از: 1. معرفی فولدر Android 2.1
2. معرفی فولدر assets
3. معرفی فولدر bin
4. معرفی فولدر libs

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

معرفی فولدر Android 2.1

فولدر بعدی در این لیست فولدر Andtroid 2.1 نام دارد که تصویر آن در بالای مطلب درج شده است.


اگر خاطرمان باشد در حین ساخت اولین پروژه خود در اندروید در پنجره مربوط به مشخص کردن Build Target نسخه اندروید 2.1 را انتخاب کردیم. در حقیقت این فولدر در برگیرندۀ فایل android.jar است که حاوی کلیۀ API های لازم در SDK اندروید نسخه 2.1 است که اپلیکیشن ما تحت آن ساخته می شود. اگر این فولدر را باز کنیم، جایی که این API ها روی کامپیوتر ما نصب شده اند نشان داده خواهد شد. برای روش تر شدن مطلب به تصویر زیر دقت نمایید:


920409-a10-IMAGE 2.jpg

همانطور که مشاهده می شود مسیر C:\dev\android\platforms\android-7 جایی است که بنده در حین آماده سازی محیط برنامه نویسی اکلیپس و ابزار SDK مشخص کرده ام. از این پس در حین توسعه هر اپلیکیشنی Library ها یا اصطلاحاً "کتابخانه های" در برگیرندۀ API های لازم به توسعه تحت یک نسخه خاص از اندروید از این مسیر کپی خواهند شد.

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


معرفی فولدر assets

این فولدر به صورت پیش فرض خالی است و دارای کاربردی شبیه به فولدر res می باشد با این تفاوت که هر چیزی که در فولدر res قرار می گیرد دارای یک id خواهد شد که از طریق همان id در هر جایی از اپلیکیشن خود که بخواهیم از آن استفاده کنیم از طریق فایل R.java فراخوانی می شود(در توضیحات پیرامون فولدر res در ادامه همین آموزش بیشتر با این مفاهیم آشنا خواهیم شد. برای آشنایی بیشتر با فایل R.java به آموزش نهم مراجعه نمایید).


920409-a10-IMAGE 3.jpg

اما این در حالی است که آزادی عمل ما در فولدر assets به مراتب بیشتر بوده و در واقع هر چیزی که بخواهیم به صورت raw یا "خام" در اپلیکیشن خود قرار دهیم را در این فولدر قرار می دهیم(واژه assets به معنی "دارایی ها" می باشد). از سوی دیگر می توانیم فولدرهای زیرمجموعه فولدر assets را بر اساس سلیقه خود دسته بندی کنیم سپس از طریق جاوا به چیزهای داخل این فولدر دسترسی پیدا کنیم. این فولدر بیشتر در مورد طراحی بازی اندرویدی کاربرد خواهد داشت که نیاز داریم از عناصر زیادی برای یک بازی بهره مند شویم. یا فرض کنیم که می خواهیم یک اپلیکیشن یادداشت برداری یا اصطلاحاً نت برداری طراحی کنیم که این اپلیکیشن برای سهولت کاربر دارای یک دیکشنری است که واژگانی که کاربر وارد می کند را حدس زده و تکمیل می کند(همانند اس ام اس دادن که با تایپ قسمت اول یک لغت، اپلیکیشن اس ام اس آن را برای ما تکمیل می کند). حال فرض کنیم که این دیکشنری یک فایل XML یا یک پایگاه داده از جنس SQLite است. فایل هایی از این دست را می بایست داخل فولدر assets قرار دهیم.

در قسمت های ابتدایی آموزش اندروید تمرکز بیشتر روی فولدر res خواهد بود.


معرفی فولدر bin

همانطور که در تصویر زیر مشاهده می شود، پس از معرفی فولدر های فوق الذکر فولدر bin قرار گرفته است:


920409-a10-IMAGE 4.jpg

به طور خلاصه می توان گفت که اندروید خروجی های برنامه پس از Compile شدن را در این فولدر قرار می دهد. به عبارت دیگر کلیۀ فایل های Compile شدۀ جاوا که با پسوند class ذخیره می شوند(مثلاً MainActivity.class که از روی فایل MainActivity.java کامپایل شده است) و حتی فایلی با پسوند apk که با فرستادن آن روی تلفن همراه یا تبلت می توانیم اپلیکیشن را نصب کنیم در این فولدر قرار می گیرند. به طور مثال در ساخت اولین پروژه اندروید پس از تکمیل اپلیکیشن خود فایلی تحت عنوان MyFirstAndroidProject.apk در این فولدر ذخیره خواهد شد که به سادگی با کپی کردن آن روی تلفن همراه خواهیم توانست اپلیکیشن خود را اجرا کنیم.


معرفی فولدر libs

فولدرهای مرتبط با Library ها یا "کتابخانه های اندروید" که در برگیرنده API های لازم برای توسعه اندروید می باشند در یک اپلیکیشن قابل روئیت نیستند اما آشنایی با آن بی فایده نیست. به طور خلاصه این فولدر حاوی Library هایی است که شرکت های طراحی و توسعه اپلیکیشن تولید کرده و یا به صورت رایگان و یا به صورت فروشی در اختیار دیگر برنامه نویسان و توسعه دهندگان اندروید قرار می دهند. به عنوان مثال library مرتبط با jTwitter دارای API های لازم برای به کارگیری Twitter در اپلیکیشن اندرویدی می باشد. در واقع اگر به طور مثال بخواهیم از قابلیت های Twitter در اپلیکیشن خود استفاده کنیم، می بایست Library مرتبط با jtwitter.jar را داخل فولدر libs قرار دهیم(کلمه libs مخفف واژه Libraries به معنی "کتابخانه ها" می باشد).

پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
1. فولدر Andtroid 2.1 حاوی چه اطلاعاتی است؟
2. نحوه دسترسی به اطلاعات داخل فولدر Andtroid 2.1 به چه شکل است؟
3. تفاوت فولدرassets یا فولدر res چیست؟
4. فایل apk در کدام فولدر قرار می گیرد؟
5.وظیفه فولدر libs چیست؟

در آموزش آتی با فولدر res که یکی از مهم ترین فولدرهای یک پروژه است آشنا خواهیم شد.

آموزش برنامه نویسی اندروید- قسمت ۱۳: بررسی دو فایل بسیار مهم در توسعه اپلیکیشن

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

1. معرفی فایل AndroidManifest.xml
2. آشنایی با Version Code
3. آشنایی با Version Name
4. معرفی فایل project.properties

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

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


معرفی فایل AndroidManifest.xml

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


920430-a13-IMAGE 1.jpg

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

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


920430-a13-IMAGE 2.jpg

همانطور که در تصویر فوق نشان داده شده است پس از باز کردن فایل 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 ساختیم به شکل زیر نمایش داده خواهد شد:


  1. xml version="1.0" encoding="utf-8"?>
  2. xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.behzadmoradi.mainpackage"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6. android:minSdkVersion="7" />
  7. android:icon="@drawable/ic_launcher"
  8. android:label="@string/app_name" >
  9. android:name=".MainActivity"
  10. android:label="@string/app_name" >
  11. android:name="android.intent.action.MAIN" />
  12. android:name="android.intent.category.LAUNCHER" />

کاری که این فایل انجام می دهد این است که اطلاعاتی کلی پیرامون اپلیکیشن طراحی شده در سیستم اندروید می دهد. به عبارت دیگر، این فایل 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 است.


آشنایی با Version Code

منظور از 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 قرار می گیرد.


آشنایی با Version Name

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

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


معرفی فایل project.properties

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

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


920430-a13-IMAGE 3.jpg

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


920430-a13-IMAGE 4.jpg

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


920430-a13-IMAGE 5.jpg

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

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


920430-a13-IMAGE 6.jpg

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


920430-a13-IMAGE 7.jpg

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

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


آموزش برنامه نویسی اندروید - قسمت ۱۲:نحوه ساخت فولدرها و فایل های جدید در فولدر res

اهداف آموزشی این قسمت عبارتند از:
1. نحوه ایجاد یک فولدر جدید
2. نحوه ایجاد یک فایل جدید در فولدر values
3. مقدمات بومی سازی یک اپلیکیشن

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

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

نحوه ایجاد یک فولدر جدید

برای ایجاد فولدرهایی که به صورت پیش فرض در یک اپلیکیشن قرار ندارند به صورتی زیر اقدام می کنیم:


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


92-0409-a12-IMAGE 2.jpg

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


92-0409-a12-IMAGE 3.jpg

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


نحوه ایجاد یک فایل جدید در فولدر values

چنانچه بخواهیم یکی از فایل های زیرمجوعه فولدر values را ایجاد کنیم می بایست به صورت زیر عمل نماییم:


92-0409-a12-IMAGE 4.jpg

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


92-0409-a12-IMAGE 5.jpg

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

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


92-0409-a12-IMAGE 6.jpg

مقدمات بومی سازی یک اپلیکیشن

همانطور که در معرفی فولدر res در آموزش یازدهم مثالی در رابطه با نصب یک اپلیکیشن روی یک تلفن و تبلت زدیم و دیدیم که با تغییر زبان یک دستگاه می توانیم این دستور را به اندروید بدهیم که در حین نصب با توجه به زبان انتخابی از منابع مرتبط با آن زبان استفاده کند. برای روشن تر شدن این مسئله به مثال زیر توجه نمایید:

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


92-0409-a12-IMAGE 7.jpg

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

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

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

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

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

آموزش برنامه نویسی اندروید - قسمت ۹: بررسی فولدرهای src و gen

اهداف آموزشی این قسمت عبارتند از:
1. معرفی فولدر src
2. نحوه ایجاد یک پکیج جدید
3. معرفی فولدر gen و فایل R.java

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


920405-9-IMAGE 1.jpg

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


معرفی فولدر src

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


920405-9-IMAGE 2.jpg

همانطور که در تصویر فوق مشاهده می شود، اولین فولدر در یک پروژه اندروید src نام دارد. در واقع واژه src مخفف واژه Source به معنی "منبع" یا "مأخذ" می باشد. این فولدر در برگیرندۀ کلیۀ فایل های جاوا است که در اپلیکیشن خود مورد استفاده قرار می دهیم. زیر مجموعه این فولدر همان پکیجی قرار دارد که در حین ساخت پروژه تحت عنوان com.behzadmoradi.mainpackage ساختیم. به طور کلی کاری که این پکیج می کند این است که از تداخل فایل های جاوا که برای توسعه اپلیکیشن خود طراحی می کنیم جلوگیری به عمل آورده و موجب می گردد کلاس های مورد استفاده سازماندهی شوند.


ایجاد یک پیکج جدید در جاوا

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


920405-9-IMAGE 3.jpg

همانطور که در تصویر فوق نشان داده شده است، با قرار دادن نشانگر موس خود روی آیکونی که با فلش قرمز رنگ مشخص شده است، پیام New Java Package به معنی "یک پکیج جدید جاوا" نمایان خواهد شد. با کلیک کردن روی این آیکون پنجره زیر نمایان می گردد:


920405-9-IMAGE 4.jpg

همانطور که در تصویر فوق مشخص است، در بخش Source folder مسیر فولدر src موجود در پروژه My First Android Project مشخص شده است. در بخش Name به معنی "نام" می بایست نامی برای پکیج جدید خود در نظر بگیریم. نکته ای که در انتخاب نام پیکج می بایست همواره مد نظر قرار داده شود این است که دو بخش اول نام پیکج که بخش اول مربوط به نام دامین است که در اینجا com می باشد و بخش دوم که مربوط به آدرس دامین است که در این مثال behzadmoradi است حتماً بایستی با دو بخش اول نام پکیجی که در حین ساخت پروژه تعریف کردیم یکی باشد وصرفاً بخش آخر یا همان قسمت سوم نام پیکج می بایست نامی جدید باشد. علت این مسئله هم ایجاد یکنواختی در کلیۀ پکیج های یک پروژه می باشد. حال با دانستن این نکته همانطور که در تصویر فوق نشان داده شده است نام com.behzadmrodi.secondpackage را وارد می کنیم که عبارت secondpackage به معنی "پکیج دوم" است(برای آشنایی بیشتر با نحوه نامگذاری پیکج ها در جاوا به آموزش چهارم مراجعه نمایید).

اکنون می توانیم دکمه Finish زده و پیکج ایجاد شده در پروژه خود را مشاهده کنیم:


920405-9-IMAGE 5.jpg

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


معرفی فولدر gen و فایل R.java

واژۀ gen مخفف واژه Generated به معنی "تولید شده" یا "حاصله" می باشد. این فولدر محل ذخیره سازی فایل جاوایی تحت عنوان R است:


920405-9-IMAGE 6.jpg

همانطور که در تصویر فوق مشاهده می شود فایل تولید شده R.java نام دارد(حرف R از اول واژه Resource به معنی "منبع" گرفته شده است). به طور خلاصه می توان گفت که ما در توسعه اپلیکیشن اندرویدی از عناصر زیادی استفاده می کنیم که برخی از آنها توسط XML ایجاد می شوند مثل Layout ها، دکمه ها و غیره و برخی دیگر عناصری هستند همچون عکس ها، فایل های صوتی و ... که جزو منابع اپلیکیشن ما قرار دارند. حال برای آنکه بتوانیم به کلیه این عناصر در Activity ها دسترسی داشته باشیم بایستی آدرس آنها را داخل کلاس مرتبط با Activity وارد کنیم(برای آشنایی بیشتر با Activity ها به آموزش دوم مراجعه نمایید).

اگر بخواهیم آدرس XML یی مثلا یک دکمه که در XML ساخته شده است را در کلاس خود بیاوریم، نه تنها این آدرس ممکن است طولانی شود، بلکه ممکن است در حین Run شدن اپلیکیشن نیز با مشکل مواجه شویم و در اینجا است که اهمیت فایل R دوچندان می شود. به عبارت دیگر سیستم عامل اندروید با این کار Java و XML را به یکدیگر مرتبط می سازد. کاربرد این فایل به این شکل است که یک id یا یک "شماره معرف" برای هر یک از عناصر موجود src اپلیکیشن ما من جمله layout، متون، عکس ها، فونت ها و غیره در این فایل ساخته می شود. نکتۀ جالب در ارتباط با این فایل این است که این فایل به صورت خودکار توسط برنامه ایجاد می گردد.

به عبارت دیگر به محض اینکه ما یک عنصر جدید مثلاً یک دکمه جدید داخل UI برنامه می کنیم، اندروید به صورت خودکار به آن دکمه یک id اختصاص داده و آن id را وارد فایل R.java می کند. حال زمانیکه بخواهیم به طول مثال عکس خاصی در یک Activity به کار بریم، از طریق id آن عنصر خاص در فایل R به آن عکس دسترسی پیدا خواهیم کرد. به نظر می رسد علت انتخاب یک نام بسیار کوتاه تک حرفی تحت عنوان R برای این فایل این است که در حین آدرس دادن به عناصر موجود در اپلیکیشن زمان زیادی صرف نوشتن نام این فایل نکنیم(فقط با نوشتن R.id سپس نام عنصر مد نظر به آن دست پیدا خواهیم کرد).

مزیت دیگر این فایل این است که اگر عناصر موجود در src را با همان اسامی XML یی خودشان به فایل جاوا لینک دهیم، چنانچه مثلاً مشکلی در فایل XML باشد این مشکل در حین Run شدن یا "اجرای برنامه" خود را نشان خواهد داد و این اتفاق خوبی نیست چرا که ممکن است این مشکل خود را زمانی نشان دهد که اپلیکیشن به دست کاربر رسیده است. اما زمانیکه یک id برای هر یک از عناصر در فایل R ایجاد می شود، چنانچه مشکلی در برنامه وجود داشته باشد این مشکل در حین Compile شدن برنامه خود را نشان خواهد داد و این مسئله خبر خوبی است چرا که پیش از اینکه اپلیکیشن به دست کاربران برسد، خود برنامه نویس یا توسعه دهنده با مشکلات احتمالی رو به رو خواهد شد.

چنانچه دو بار روی نام این فایل کلیک کنیم خواهیم توانست محتوایات آن را مشاهده کنیم:


  1. package com.behzadmoradi.mainpackage;
  2.  
  3. public final class R {
  4. public static final class attr {
  5. }
  6. public static final class drawable {
  7. public static final int ic_launcher=0x7f020000;
  8. }
  9. public static final class layout {
  10. public static final int main=0x7f030000;
  11. }
  12. public static final class string {
  13. public static final int app_name=0x7f040001;
  14. public static final int hello=0x7f040000;
  15. }
  16. }
  17.  

کد فوق مربوط به محتویات فایل R است که برای پروژه My First Android Project به صورت خودکار توسط برنامه ایجاد شده است. به طور مثال نام ic_launcher مربوط به نام آیکون سبز رنگ اندروید است که به عنوان آیکون اپلیکیشن پس از نصب مورد استفاده قرار می گیرد و یا نام main مربوط به Layout یی است که در حین ساخت پروژه ایجاد کردیم. همانطور که مشاهده می شود هر یک از این اسامی دارای یک id نیز می باشند.

نکتۀ بسیار مهمی که در ارتباط با این فایل وجود دارد این است که به هیچ وجه نمی بایست آن را ویرایش کرده و تغییری در آن ایجاد کنیم که در این صورت Compiler به محض Save کردن این فایل پس از تغییر آن را به حالت اول در خواهد آورد اما این در حالی است که می توان آن را به کلی حذف کرد و برنامه بدون هیچ مشکلی اجرا خواهد شد زیرا به محض Compile شدن اپلیکیشن این فایل مجدداً به صورت خودکار با اعمال آخرین تغییرات ساخته خواهد شد.

نکته پایانی در ارتباط با فایل R این است که در هر بار Compile شدن اپلیکیشن این فایل Update خواهد شد تا ببیند آیا عنصر جدیدی به برنامه اضافه شده است که بخواهد برای آن یک id اختصاص دهد و یا آیا عنصری حذف شده است که نیاز باشد id اختصاص داده شده به آن را حذف کند یا خیر.

پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
1. فایل های اصلی جاوا در یک اپلیکیشن در کدام فولدر قرار می گیرند؟
2. چگونه می توان یک پیکج جدید ایجاد کرد؟
3. علت استفاده از پکیج ها چیست؟
4. علت به کار گیری فایل R.java چیست؟
5. اگر در اپلیکیشن خود به جای لینک دادن از طریق فایل R اقدام به نوشتن آدرس کامل مثلا یک layout بپردازیم، ممکن است با چه مشکلی مواجه شویم؟
6. مزیت آدرس دهی از طریق فایل R چیست؟
7. اگر یکی از اجزای اپلیکیشن خود مثل یک دکمه را حذف کنیم چه اتفافی برای id آن دکمه در فایل R خواهد افتاد؟
8. به چه نحوی می توان فایل R را ویرایش کرد؟
9. در صورت حذف کردن فایل R چه مشکلی برای اپلیکیشن پیش خواهد آمد؟
در آموزش دهم با فولدر res به طور مفصل آشنا خواهیم شد.

آموزش برنامه نویسی اندروید - قسمت ۱۱: بررسی فولدر res

اهداف آموزشی این قسمت عبارتند از:
1. معرفی فولدر res
2. روش نامگذاری فولدرهای زیرمجموعه res

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

معرفی فولدر res

در یک کلام، کلیۀ عناصر موجود در یک اپلیکیشن اندرویدی از 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 ها ایجاد خصوصیاتی کلی است که با نسبت دادن آن خصوصیات به عنصری در اپلیکیشن دیگر نیاز به تعریف تک تک آن خصوصیات برای هر چیزی در اپلیکیشن نیست.

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


920409-a11IMAGE 1.jpg

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

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

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


آموزش برنامه نویسی اندروید - قسمت ۸: ساخت اولین پروژه در محیط اکلیپس

اهداف آموزشی این قسمت عبارتند از:
1. تعیین مسیر Workspace
2. مراحل ساخت یک پروژه جدید

پس از نصب موفقیت آمیز محیط برنامه نویسی اکلیپس و ابزارهای مورد نیاز برای توسعه اندروید که عبارتند از JDK و ADT و SDK و انجام تنظیمات اولیه توسعه اندروید در محیط اکلیپس اکنون می توانیم اقدام به ساخت اولین پروژه اپلیکیشن اندرویدی خود در اکلیپس نماییم(لازم به ذکر است کاربرانی که به جای اکلیپس از ADT Bundle گوگل استفاده می کنند نیز خواهند توانست بر اساس همین آموزش اقدام به ساخت پروژه در این محیط برنامه نویسی کنند با این تفاوت که ممکن است جای برخی چیزها اندکی تغییر کرده باشد).
ادامه مطلب را از دست ندهید.

تعیین مسیر Workspace

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


920327-8-IMAGE 1.jpg

در حقیقت این صفحه Welcome Screen یا "صفحه خوشامدگویی" نرم افزار است. همانطور که در تصویر فوق با یک فلش قرمز رنگ نشان داده شده است، با کلیک کردن روی گزینه Workbench خواهیم توانست وارد صفحه اصلی نرم افزار شویم.


مراحل ساخت یک پروژه جدید

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


920327-8-IMAGE 2.jpg

با قرار دادن نشانگر موس روی این گزینه عبارت Opens a wizard to help create a new Android project نشان داده خواهد شد(در تصویر فوق با خط قرمز نشان داده شده است). ترجمه تحت الفظی این عبارت "بازکردن پنجرۀ ساخت یک پروژه جدید اندروید" می باشد. پس از کلیک کردن روی این گزینه پنجره ای به شکل زیر مشاهده خواهد شد:


920327-8-IMAGE 3.jpg

در این پنجره در بخش Project Name می بایست نامی برای پروژه خود انتخاب نماییم. در حقیقت این نام به منزله نام اپلیکیشن ما نخواهد بود بلکه نامی است که از آن طریق پروژه ما در Workspace ذخیره خواهد شد. اکنون نام My First Android Project به معنی "اولین پروژه اندروید من" را مقابل Project Name می نویسیم. سپس می بایست یکی از سه گزینه موجود را انتخاب نماییم و از آنجا که قصد داریم یک پروژه جدید ایجاد کنیم، گزینه Create new project in workspace به معنی "ساخت پروژه جدید در workspace ایجاد شده" را انتخاب می کنیم. سپس با تیک دار کردن گزینه Use default location به معنی "استفاده از محل ذخیره سازی پیش فرض"، این دستور را به اکلیپس می دهیم که همان مسیری که در ابتدای نصب اکلیپس برای Workspace انتخاب کردیم را برای ذخیره سازی این پروژه نیز استفاده کند. در صورتیکه بخواهیم پروژه خود را در مسیر دیگری ذخیره سازیم، می توانیم تیک این گزینه را برداشته و مسیر جدید را وارد کنیم. حال می توانیم روی دکمه Next کلیک کنیم:


920327-8-IMAGE 4.jpg

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

از سوی دیگر لیست API های موجود در این پنجره بسته به تعداد SDK هایی که در مرحله آماده سازی محیط برنامه نویسی اکلیپس دانلود می کنیم می تواند متفاوت باشد. به طور مثال در این نسخه از SDK که دانلود نموده ایم از نسخه های 1.1 و 1.6 و 3.2 به طور مثال خبری نیست. علت این مسئله هم به نظر می رسد این باشد که مدیر وب سایتی که ما SDK را در آموزش پیشین از آن دانلود کرده ایم ممکن است بر این باور باشند که تفاوت بسیار چندانی مابین نسخه های نزدیک به هم وجود ندارد(مثلاً مابین نسخه 2 و 2.1 ) و این در حالی است که باور ایشان کاملاً درست است.

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


920327-8-1-IMAGE 5.jpg

در این پنجره می بایست اطلاعات کلی اپلیکیشن خود را وارد نماییم. همانطور که در تصویر فوق مشاهده می شود بر اساس نامی که در مرحله پیش برای پروژه خود انتخاب نمودیم، جاهای خالی این پنجره پر شده اند. در بخش Application Name به معنی "نام اپلیکیشن" می بایست نامی که می خواهیم اپلیکیشن ما داشته باشد را وارد کنیم. به عبارت دیگر این همان نامی است که کاربران پس از نصب اپلیکیشن ما روی تلفن همراه خود خواهند دید. نام وارد شده را تغییر نداده به مرحله بعد می رویم. در بخش Package Name به معنی "نام پیکج" می بایست نامی برای پکیج اپلیکیشن خود انتخاب کنیم. در واقع هر اپلیکیشن حداقل از یک پکیج تشکیل شده است و کار این پکیج قرار دادن فایل های مرتبط به یکدیگر در اپلیکیشن ما در کنار یکدیگر است. در این پروژه بنده نام com.behzadmoradi.mainpackage را انتخاب می کنم. در واقع این نام بسته به شخص یا شرکتی که اپلیکیشن را طراحی می کند متفاوت است(برای آشنایی بیشتر با نحوه نامگذاری پیکج ها در توسعه اندروید به آموزش چهارم مراجعه نمایید).

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

در بخش Minimum SDK به معنی "حداقل SDK مورد نیاز" عدد 7 به طور پیش فرض توسط خود اکلیپس وارد شده است. این بدان معنا است که اپلیکیشن ما برای آنکه اجرا شود حداقل به API سطح 7 نیاز دارد. به عبارت دیگر این اپلیکیشن روی تلفن همراهی اجرا خواهد شد که نسخه اندروید آن Éclair باشد(برای آشنایی بیشتر با نام ها و سطوح API اندروید به آموزش سوم مراجعه نمایید). در واقع این عدد با توجه به نوع نسخه اندروید که در مرحله پیش انتخاب کردیم انتخاب شده است. به عبارت دیگر از آنجا که ما نسخه 2.1 را انتخاب کردیم و API اندروید به کار گرفته شده در این نسخه API 7 است، از این رو عدد 7 وارد شده است. نکته ای که در اینجا می بایست حتما مد نظر داشته باشیم این است که API وارد شده در Minimum SDK نمی بایست از API متناظر با نسخه تعیین شده در مرحله پیش بزرگ تر باشد. به طور مثال از آنجا که در مرحله پیش نسخه 2.1 انتخاب شده است از این رو برای Minimum SDK نمی توانیم مثلاً API 15 را انتخاب کنیم(برای آشنایی بیشتر با API ها در توسعه اندروید به آموزش سوم مراجعه نمایید).

اکنون مراحل ساخت اولین پروژه اندروید ما به پایان رسیده و می توانیم دکمه Finish را بزنیم.

پس از زدن دکمه Finish به محیط اکلیپس بازگشته و پروژه ای تحت عنوان My First Android Project در بخش Package Explorer اکلیپس مشاهده خواهد شد:


920327-8-IMAGE 6.jpg

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

1. پروژه های ما در چه مکانی روی هارد ذخیره می شوند؟
2. آیا نامی که در بخش Project Name وارد می کنیم با نامی که کاربران روی تلفن همراه خود می بینند یکی است ای خیر؟
3. منظور از Build Target چیست؟
4. منظور از Minimum SDK چیست؟

در آموزش آتی به بررسی دو فولدر اول پروژه که همان فولدرهای src و gen می باشند خواهیم پرداخت.


آموزش برنامه نویسی اندروید - قسمت ۷: آماده سازی محیط اکلیپس برای توسعه

اهداف آموزشی این قسمت عبارتند از:
1. روش نصب JDK جاوا
2. معرفی SDK و ADT اندروید
2. دانلود ADT Bundle برای توسعه اندروید
3. آموزش دانلود محیط برنامه نویسی اکلیپس و ابزار های مورد نیاز توسعه اندروید

روش نصب JDK جاوا

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


معرفی SDK و ADT اندروید

در واقع با دانلود رایگان محیط برنامه نویسی اکلیپس از سایت آن و همچنین دانلود رایگان SDK اندروید که برای توسعه، تست و مشکل یابی اپلیکیشن های طراحی شده مورد استفاده قرار می گیرد و در نهایت دانلود رایگان پلاگین ADT که مخفف واژگان Android Development Tools به معنی ابزارهای توسعه اندروید است از اینجا خواهیم توانست برنامه نویسی اندروید را شروع کنیم.

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

به طور خلاصه، SDK در برگیرندۀ API های لازم و ضروری برای توسعه اندروید می باشد که توسط تیم برنامه نویسی گوگل طراحی شده اند. در واقع پس از دانلود رایگان SDK و نصب آن روی محیط برنامه نویسی اکلیپس، علاوه بر استفاده از API های جاوا که از طریق JDK در اختیار اکلیپس قرار می گیرند، به API های اختصاصی اندروید که با Syntax یا ساختار زبان برنامه نویسی جاوا نوشته شده اند نیز دسترسی پیدا نموده و از این طریق خواهیم توانست توسعه اندروید را آغاز نماییم. اما پیش از اینکار نیاز داریم تا ADT اندروید را نیز دانلود نموده و به محیط برنامه نویسی اکلیپس معرفی نماییم.

در حقیقت نصب پلاگین ADT این امکان را به ما می دهد تا بتوانیم از طریق محیط برنامه نویسی اکلیپس و استفاده از API های موجود در SDK که برای توسعه اندروید تعبیه شده اند دست به طراحی اپلیکیشن اندروید بزنیم. از سوی دیگر این پلاگین دارای یک ابزار طراحی GUI است که با استفاده از آن خواهیم توانست بدون کدنویسی و صرفا با Drag and Drop به طور مثال به ایجاد یک دکمه بپردازیم(عبارت GUI مخفف واژگان Graphical User Interface به معنی رابط گرافیکی کاربر است).


دانلود ADT Bundle برای توسعه اندروید

علاوه بر محیط برنامه نویسی اکلیپس، شرکت گوگل نسخه ای از نرم افزار اکلیپس را تحت عنوان ADT Bundle تولید کرده است که کلیۀ ابزارهای لازم برای توسعه اندروید از جمله خود محیط برنامه نویسی اکلیپس به علاوۀ SDK و ADT را دارا است. این محیط برنامه نویسی به هیچ وجه نیاز به نتظیمات خاصی نداشته و صرفاً با اجرای برنامه خواهیم توانست توسعه اندروید را شروع نماییم.

برای دانلود این نرم افزار می بایست به سایت توسعه شرکت گوگل مراجعه نموده و این نرم افزار را به صورت کاملاً رایگان دریافت نمود ولی از آنجا که امکان دسترسی کاربران ایرانی به این وب سایت امکان پذیر نمی باشد، اکثر کاربران نخواهند توانست به سادگی ADT Bundle را دانلود کنند.

کاربرانی که نمی توانند سرورها گوگل را دور زده و این نرم افزار را دانلود نمایند، می توانند به این آدرس مراجعه نموده و نسخه کامل ADT Bundle را دانلود نمایند. به نظر می رسد چنانچه کاربران طبق دستورات نصب در وب سایت فوق الذکر عمل کنند با هیچ مشکل خاصی مواجه نشوند.


دانلود محیط برنامه نویسی اکلیپس و ابزارهای مورد نیاز برای توسعه اندروید

نکته ای که در رابطه با آماده سازی محیط برنامه نویسی از اهمیت بسزایی برخوردار است آگاهی از این موضوع است کدام نسخۀ اکلیپس با کدام نسخۀ SDK بهترین هم خوانی را دارد. از سوی دیگر از آنجا که سایت رسمی اندروید اجازۀ استفاده کاربران ایرانی را از امکانات رایگان این سایت نمی دهد، بالتبع کاربران ایرانی نمی توانند SDK و ADT که برای توسعه اندروید لازم و ضروری است را دانلود کنند.

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

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


920327-IMAGE 1.jpg

پس از ورود به بخش مطالعه آموزش های رایگان، سپس کلیک کردن بر روی گزینه آماده کردن محیط برنامه نویسی می توان به لینک های دانلود دسترسی پیدا کرد(در تصویر زیر گزینه 5):


920327-IMAGE 2.jpg

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

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

1. کدامیک از نسخه های JDK و JRE در برگیرنده دیگری است؟
2. وظیفه SDK چیست؟
3. وظیفه ADT چیست؟
4. اختصار GUI مخفف چه کلماتی است؟
در آموزش هشتم نحوه ساخت اولین پروژه در محیط برنامه نویسی اکلیپس آموزش داده خواهد شد.

اگر می خواهید موهای تان رشد خوبی داشته باشد اینها را بخورید

 

اگر می خواهید موهای تان رشد خوبی داشته باشد اینها را بخورید
بهترین راه حل برای داشتن موهایی خوب درمان گیاهی است که در این مطلب به آن اشاره شده است.

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

رزماری :
این گیاه براق کننده مو است و با شوره سر و ریزش مو مقابله می کند. این گیاه را یا می توان به غذا افزود یا پس از شامپو و شستن مو با دم کرده آن موها را آب کشید.

بابونه :
این گیاه که خاصیت درمانی زیادی دارد، خارش سر را نیز برطرف می کند. کافی است سر را با دم کرده آن بشویید.

دم اسب :
می توان این گیاه را به شامپو افزود. این گیاه به رشد مو کمک می کند.

گزنه :
این گیاه را در روغن زیتون خیس کنید و به مدت ۳هفته در مکان تیره و خنک قرار دهید سپس با این روغن کف سر خود را ماساژ دهید. این روغن مانع از نازک شدن مو می شود.

بابا آدم :
روغنی که از ریشه این گیاه به دست می آید، در رشد مو موثر است. این گیاه باعث بهبود گردش خون در فولیکول های مو می شود.



گردآوری : گروه سبک زندگی سیمرغ
www.seemorgh.com/lifestyle
منبع : tebyan.net

آموزش برنامه نویسی اندروید - قسمت ۶: اولین پروژه اندروید در محیط اندروید استودیو [با ویدیو]

اهداف آموزشی این قسمت عبارتند از:
1. ساخت اولین پروژه در اندروید استودیو
2. آشنایی با نحوه نامگذاری Activity ها در اندروید
3. آشنایی با نحوه نامگذاری Layout ها در اندروید
4. آشنایی با نحوه نصب فایل های Gradle در اندروید استودیو
5. آشنایی با رفع مشکل نصب فایل های Gradle

پس از نصب موفقیت آمیز محیط برنامه نویسی اندروید استودیو، اکنون قادر خواهیم بود تا اولین پروژه اندروید خود را بسازیم. برای این منظور برنامه اندروید استودیو را اجرا می کنیم. پس از اجرای برنامه اولین پنجره ای که مشاهده خواهیم کرد پنجره ای به شکل زیر می باشد: (ادامه مطلب را از دست ندهید)

920327-6-IAMGE 1.jpg

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


ساخت اولین پروژه در اندروید استودیو

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


920327-6-IIMAGE 2.jpg

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

در بخش Application name به معنی "نام اپلیکیشن" نامی برای اپلیکیشن خود در نظر می گیریم. در این مثال نام My First Android Project به معنی "اولین پروژه اندروید من" را وارد می کنیم(لازم به ذکر است رایج است که اولین حرف نام اپلیکیشن می بایست با حرف بزرگ نوشته شود). به محض وارد کردن نامی در بخش Application name مابقی جاهای خالی نیز به طور خودکار بر اساس نام انتخابی ما پر خواهند شد. به طور خلاصه نام ورودی در Application name نامی است که پس از نصب اپلیکیشن روی یک تبلت یا تلفن همراه در معرض دید کاربر قرار خواهد گرفت.

در بخش Module name به معنی "نام ماژول" می بینیم که نام MyFirstAndroidProject وارد شده است. در حقیقت این همان نامی است که در بخش Application name وارد کردیم با این تفاوت که کلیه Space ها حذف شده اند. در واقع این نام نامی است که از آن طریق پروژه ما روی کامپیوتر ذخیره خواهد شد و در اندروید استودیو پروژه ما به این نام شناخته خواهد شد.

در بخش Package name نام com.example.myfirstandroidproject به صورت خودکار وارد شده است اما این در حالی است که با این نام به هیچ وجه نخواهیم توانست به ادامه ساخت پروژه خود بپردازیم چرا که بخشی از این نام که com.example است حتماً بایستی با نامی دیگر جایگزین شود که در غیر این صورت اندروید استودیو از ما ایراد خواهد گرفت. برای رفع این مشکل نام فوق را به نام com.behzadmoradi.mainpackage تغییر می دهیم(جهت آشنایی بیشتر با نحوه نامگذاری پکیج ها به آموزش چهارم از سری آموزش های توسعه اندرووید مراجعه نمایید).

در واقع مقابل Project location به معنی "محل ذخیره سازی پروژه" آدرسی که می خواهیم پروژه ما در آن ذخیره شود را می نویسیم. محیط برنامه نویسی اندروید استودیو به طور خودکار پروژه ما را در پوشه ای به نام AndroidStudioProjects در پوشه Users داخل درایو C ذخیره می سازد. چنانچه تمایل داشته باشیم می توانیم در درایو دیگری پوشه ای اختصاصی برای اپلیکیشن های خود در نظر بگیریم و کلیه پروژه های خود را در آنجا ذخیره سازیم. در این پروژه مکان پیش فرض را در نظر خواهیم گرفت.

در بخش Minimum required SDK به معنی "حداقل SDK مورد نیاز" گزینه API 7: Android 2.1 (Éclair) را در این پروژه انتخاب می کنیم. این بدان معنا است که اپلیکیشن ما برای آنکه اجرا شود حداقل به API سطح 7 نیاز دارد به عبارت دیگر این اپلیکیشن روی تلفن همراهی اجرا خواهد شد که نسخه اندروید آن Éclair باشد(برای آشنایی بیشتر با نام ها و سطوح API اندروید به آموزش سوم مراجعه نمایید).

در بخش Target SDK نیز گزینه API 7: Android 2.1 (Éclair) را انتخاب می کنیم. کاری که Target SDK انجام می دهد این است که به محیط برنامه نویسی اندروید استودیو دستور می دهد تا API سطح 7 را برای توسعه اپلیکیشن ما در نظر بگیرد(نام دیگر Target SDK در دیگر محیط های برنامه نویسی Build SDK می باشد). در واقع در بسیاری از برنامه ها از API های یکسانی هم برای Minimum SDK و Target SDK استفاده می شود. با انتخاب این گزینه این تضمین را ایجاد می کنیم که اپلیکشن طراحی شده در تلفن های همراهی با نسخه اندروید Éclair به خوبی کار خواهد کرد چرا که اندروید استودیو کلیه API های لازم را به صورت خودکار وارد برنامه ما خواهد کرد(نکته ای که در اینجا می بایست حتما مد نظر قرار داده شود این است که Target SDK به هیچ وجه نمی تواند از Minimum SDK کوچک تر باشد).

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

در بخش Theme قادر خواهیم خواهیم بود تا تم اپلیکیشن خود را مشخص کنیم. به عبارت دیگر خواهیم توانست تم هایی با طرح های روشن و تیره برای اپلیکیشن خود انتخاب کنیم اما از آنجا که در این آموزش قصد داریم تا یک اپلیکیشن ساده طراحی کنیم، گزینه None به معنی "هیچ کدام" را انتخاب می کنیم.

چنانچه گزینه Create custom launcher icon را تیک بزنیم، قادر خواهیم بود تا تنظیمات مربوط به آیکون اپلیکیشن مان به توجه به سلیقه شخصی خود تغییر دهیم و به جای آیکون پیش فرض اندروید که یک ربات سبز رنگ است از تصاویر دیگری استفاده کنیم اما از آنجا که این کار را پس از ساخت پروژه نیز می توانیم انجام دهیم، تیک این گزینه را بر می داریم تا همان آیکون پیش فرض در نظر گرفته شود(این آیکون پیش فرض یا هر تصویر دیگری که به جای آن در توسعه اپلیکیشن خود استفاده کنیم چیزی است که پس از نصب روی تلفن همراه و یا تبلت ما قابل رویت خواهد بود و با زدن روی آن وارد برنامه خواهیم شد).

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

گزینه Mark this project as a library این امکان را به ما می دهد تا پروژه های خود را تبدیل به Library هایی کنیم که این قابلیت را دارا هستند تا در دیگر برنامه ها مورد استفاده قرار گیرند. از آنجا که در این قسمت از آموزش به اینکار نیازی نیست، تیک این گزینه را نیز بر می داریم. در این مرحله پنجره مربوط به ساخت پروژه جدید می بایست به شکل زیر باشد:


920327-6-IIMAGE 3.jpg

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


920327-6-IIMAGE 4.jpg

در این پنجره، اندروید استودیو از ما می خواهد تا نمای ظاهری Activity یی برنامه را مشخص نماییم. از آنجا که در این آموزش قصد داریم تا پروژه ای ساده طراحی کنیم، گزینه اول تحت عنوان Blank Activity را انتخاب کرده و مجدداً دکمه Next را زده و وارد پنجره زیر می شویم:


920327-6-IIMAGE 5.jpg

نحوه نامگذاری Activity ها در اندروید

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


نحوه نامگذاری Layout ها در اندروید

سپس در بخش Layout Name می بایست نامی را برای فایل XML خود که همان UI یا "رابط گرافیکی" اپلیکیشن ما است مشخص نماییم. نکته ای که در اینجا می بایست همواره مد نظر قرار دهیم این است که در نامگذاری Layout برنامه خود فقط می توانیم از حروف کوچک استفاده کنیم و چنانچه نام Layout ما از چند واژه تشکیل شده بود می توانیم از _ استفاده کنیم. به طور مثال در تصویر فوق نام activity_main به طور پیش فرض در نظر گرفته شده است که در این پروژه همین نام را مورد استفاده قرار خواهیم داد.

در این مرحله کار تنظیمات اولیه به اتمام رسیده و می توانیم دکمه Finish را بزنیم.


نصب فایل های Gradle

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


920327-6-IIMAGE 6.jpg

مدت زمان دانلود بستگی به سرعت اینترنت داشته و گاهاً ممکن است تا 5 الی 7 دقیقه هم به طول انجامد. در واقع پس از یک بار دانلود این پکیج در ساخت پروژه های آتی دیگر نیاز به اینکار نخواهد بود.


مشکل یابی نصب فایل های Gradle

حال گاهی اوقات ممکن است در حین دانلود با پنجره ای به شکل زیر مواجه شویم:


920327-6-IIMAGE 7.jpg

که در این صورت می بایست محیط برنامه نویسی اندروید استودیو را ببندیم و مجدداً آن را اجرا کرده و همانطور که در تصویر زیر مشاهده می شود پروژه ساخته شده را از طریق گزینه Open project از همان مسیری که در مرحله قبل برای ذخیره پروژه تعیین کرده بودیم پروژه خود را باز نماییم:


920327-6-IIMAGE 8.jpg

چنانچه پس از اینکار مجدداً در نصب فایل های Gradle با مشکل مواجه شدیم می توانیم نوع Error را در سایت هایی همچون گوگل و Stack Overflow سرچ کردن و مشکل را رفع نماییم. در واقع مشکلاتی از این دست جزو همان Bug های نسخۀ بتای نرم افزارهای جدید الورود به بازار است.

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


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


نشانهای یک رابطه اشتباه

یک رابطه می تواند ناسالم باشد. رابطه بد هم فقط به ازدواج یا نامزدی محدود نمی شود. روابط ناسالم می تواند در خانواده، میان دوستان یا قرار ملاقات نیز وجود داشته باشد. هر رابطه ای که به جسم، روح و احساسات شما لطمه بزند، ناسالم است. 

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

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

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

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

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

alt
web counter

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

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

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

4. خودخواه بودن
تقریبا همه ما در شرایط متفاوت خودخواه و خودپسند می شویم؛ این لازمه ذات آدمی است. خودخواهی، زمانی به یک معزل تبدیل می شود که همه چیز حول محور این ویژگی روی رفتارهای فرد با دیگران تاثیر بگذارد. افراد خودخواه همیشه به خود و خواسته های خود فکر می کنند و برای افکار و احساسات دیگران ارزش قائل نیستند. 

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

alt

5. سواستفاده و دغل کاری
یک فرد متقلب و سواستفاده چی کاری می کند تا شما کاری را انجام دهید که نمی خواهید ط£آ¢ط¢â‚¬ط¢â€œ بیشتر مواقع کارهایی که می دانید درست نیست. هر زمان که فردی به شما احساس گناه داد یا از تهدید برای تحت تاثیر گذاشتن شما استفاده کرد یا توجه و عشق خود را به منزله تنبیه از شما گرفت، انسان متقلب، دو رو و سواستفاده کنی است. 

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

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

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

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

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

alt

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

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

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

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

منبع:ايران سان