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

ستاره مقاری 1395/1/14 4076

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

با سلام با جلسه دوم آموزش برنامه نویسی در اندروید با شما هستم.

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

خب شروع کنیم...

طبق جلسه قبل محیط intellij را باز میکنیم. دوستانی که جلسه قبل را دنبال کردن دیگر نیازی نیست مسیر sdk یا jdk بدید. درضمن اگر با بار کردن intellij برنامه جلسه قبل باز شد از نوار بالا روی File برید و سپس new project را بزنید.

خب در صفحه مربوط به انتخاب نام پروژه طبق زیر مقدار بدید:

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

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

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

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

http://wmobile.ir/active-usb-debugging-all-version-android/

خب بعد از فعالسازی گوشیتان در صفحه ای که بودیم target device را روی usb device بذارید.

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

سپس finish را بزنید و صبر کنید پروژتان ساخته شود. یکم طول میکشد.

پس از باز شدن پروژه بروید جایی که صفحه برنامتان را میتوانستید دیزاین کنید. اگر یادتان باشه یک فایل بود از نوع xml.که برای پیدا کردنش باید از منوی سمت چپ ابتدا وارد پوشه ی res و سپش layout بشید و حالا main.xml را انتخاب کنید

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

اندفعه میخواهیم بیشتر با اینجا آشنا بشویم. بطور اتوماتیک یک TextView روی صفحه موبایل ساخته و داخلش نوشته .Hello World

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

حالا چطوره توی گوشیم تست کنیم. برای اینکار از نوار بالا سمت راست یک علامت Run شبیه آیکون Play هست. سبز رنگ. اون رو بزنید.

صبر کنید تا صفحه زیر ظاهر بشود...

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

وقتی این نوار پایین آمد و مدل گوشیتان سمت چپش نوشته شده یعنی برنامه روی گوشیتان ران شده... اتوماتیک میاد روی گوشی بالا. اگر نیامد وارد منوتان بشوید و دنبالش بگردید. احتمالا اخر منو پیداش کنید :)

حالا میتوانید داخل گوشیتان همین main.xml را ببینید.

اولین اجرای نرم افزار اندرویدی... تبریک میگم

بیایم یکم برنامه را عوض کنیم.

این بخش android ddms که زیر صفحه کد باز شد را ببندید. برای اینکار از سمت راسته راسته یه ایکون فلش رو به پایین هست. آن را بزنید تا بسته شود و بریم سراغ صفحه دیزاین.

کاری که میخواهم بکنم این هست که میخوایم یاد بگیریم چطوری یک پیام به کاربر نشان بدهیم.

حتما پیامهایی که گوشیتان میدهد را گاها دیدید. یک کادر طوسی رنگ دورش هست.. مثلا در فایل منیجر یک فایلی را کپی کنید میزند copy successfully

به این پیام­ها میگوییم Toast. اما قبل از ادامه کار باید با چندتا مفهوم اصلی آشنا بشویم.

اول از همه بپردازیم به یک مفهوم مهم.

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

کلاس چیست؟!

کلاس ویژگی اصلی برنامه نویسی شی گرا هست و میشه گفت یک چارچوبی هست برای "شی".

مثلا یک مثال خوب انسان هست. انسان یک کلاس هست. یعنی یک مفهوم کلی. میتواند صفت داشته باشد، رنگ پوست رنگ مو و....

اما درست هست که بگوییم رنگ موی انسان مشکی است؟ خب مسلما این جمله غلط هست. باید بگویید مثلا آقای X که یک نمونه از انسان هست موهایش مشکی هست.

این کاری که الان کردم را میگویند نمونه گرفتن از کلاس. و آقای x را میگوییم شی.

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

حالا برای این شی ما (آقای x ) ممکن است یک اتفاقی بیفتد. مثلا مریض شدن، آمدن، رفتن. به این کارهایی که ممکن هست بارها ازشون استفاده شود یک رویداد یا متد میگوییم.

یک مثال دیگر برای متد (یا گاها میشود گفت تابع) این هست که فکر کنید یک عمل ریاضی را قرار هست بارها انجام بدهیم در برنامه. مثلا برای محاسبه سینوس یک سری فرمول نوشتیم. و قرار هست در کدمان بارها از این سینوس استفاده کنیم اما برای زاویه های مختلف... سینوس30.... سینوس60

به این تکه کدی که نوشتیم (یعنی همان فرمول) میگویم متد(تابع) و به زاویه ای که بهش میدهیم میگویم ورودی تابع. در نهایت حاصل سینوس مثلا 30 که به ما برگردانده میشود را میگویم خروجی تابع

حالا برگردیم به اندروید....

Activity

اکتیویتی چیست؟؟؟

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

حالا Layout چیست؟

ظاهر برنامه های اندروید یا دیزاینش. مثلا تعیین کنید در یک صفحه چه دکمه هایی داریم چه رنگی هست و....

و همانطور که گفتم کنترل این ابزارها در activity ها انجام میگیرد. مثلا بگوییم اگر دکمه ok را کاربر زد یک پیام بهش نشان بده.

حالا میتوانیم به ادامه کد خود برکردیم.

آن layout که دارید را باز کنید. یک دکمه Button از سمت چپ تصویر موبایل در لیست بردارید بندازید در صفحه.

حالا یک نگاه بندازیم به امکانات اینجا. مثلا Textview را انتخاب کنید. و ببینید چه تغییراتی میتوانید بدهید. میخواهم مثلا در TextView بنویسم: agree؟

اینجا میتوانید تغییرش بدهید:

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

همین کار را برای دکم تان هم بکنید و در آن بنویسید OK.

تغییرات دیگری هم میتوانید بدهید مثلا برای همان button در منوی تنظیمات  backgroundرا انتخاب کنید. آنجا برای دادن عکس یا رنگ به بک گراند ابزارهایتان هست.

 آن را بزنید و از پنجره ای که باز میشود color را انتخاب کرده و یک رنگ بدهید به دکمه و اوکی کنید.

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

تگ های xml برای دیزاین نرم افزارهای اندروید بصورت زیر هستند:

<Name attributes/>

مثلا دقت کنید:

<Button

 android:layout_width="wrap_content"

 android:layout_height="wrap_content"

 android:text="New Button"

 android:id="@+id/button"

 android:layout_gravity="center_horizontal"

 android:background="#ffffe000”/>

 

نام ابزارمان Button هست. یک سری ویژگی بهش داده شده... width…text و....

 

در آخر هم تگ را بسته.

اما گاها تگ ما شامل یک سری محتویات هم هست.

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

این قسمت را میگوییم Linear Layout. همانطور که مشخص هست این ابزار شامل دوتا ابزار دیگر هم هست. Button و TextView.

منظورم قسمت قرمز رنگ هست :

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

به اینی که انتخاب کردیم میگویم LinearLayout.

دوباره در پایین Text را بزنید تا برویم داخل کد. اولین تگ را نگاه کنید. LinearLayout. اگه دقت کنید میبینید به این صورت هست:

<name attribute>

......

some items

.......

</name>

 

وقتی یک تگ دارید که داخلش شامل ابزارهای دیگر هم میشود به این صورت نوشته میشود. مثل این layout که اینطوری نوشته شده و داخلش یک TextView داریم یک Button.

روی انواع Layout ها هم کلی کار خواهیم داشت.

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

واضح هست که مهمترین ابزارهایی که خیلی استفاده میشوند همین TextView و Button هستند. پس باید یک سری ویژگی های کلیدیشان رو بدانیم.

 

<TextView

 android:layout_width="fill_parent"

 android:layout_height="wrap_content"

 android:text="Agree?"

 android:textColor="#ff000000"/>

صفت هایش به ترتیب برای عرض خود محل نوشتن، ارتفاعش، متنش و رنگ متنش هست

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

 

<Button

 android:layout_width="wrap_content"

 android:layout_height="wrap_content"

 android:text="OK"

 android:id="@+id/button" android:layout_gravity="center_horizontal”/>

برای دکمه هم به ترتیب:

عرضش، ارتفاعش،متنش، آیدی(توضیح میدم) و محل قرارگیری در layout که اگر دقت کنید برای من وسط قرار دارد که با این هم بعدها کار داریم.

مهمترین چیزی که اینجا بود ID بود. به چه درد میخورد؟ گفتم که Layout در اندروید به یک Activity وصل هست. حالا در اکتیویتی چطوری مشخص کنیم اگر دکمه OK زده شد چه اتفاقی بیفتد؟ از کجا این را بفهمونیم؟ از روی ID. بهرحال نمیتوانیم بگوییم دکمه ای که زده شد و برنامه بفهمد منظور ما چه دکمه ای هست. باید یک اسم به آن بدهیم. و مثلا بگویم دکمه ای که اسمش هست btn وقتی زده شد به من پیام نشان بده. اینجا بصورت خودکار id را گذاشته button

خب عالیه حالا کافی هست برویم و به برنامه بفهمونیم میخواهم بهم پیام نشان بدهی. بریم سراغ اکتیویتی این layout. گفتم تنظیم کردن اتفاقهایی که در layout میفتد از طریق activity انجام میشود. از سمت چپ پوشه src را باز کنید و حالا داخل com.example.First بشوید و اکتیویتی را باز کنید

بالارا ببینید. نوشته class MyActivity . همانطور که گفتم اکتیویتی ها کلاس هستند. به بقیش کار نداشته باشید بیایم داخل oncreate که جلسه قبل توضیحشو دادم. حالا میخواهیم کد مربوط به نمایش پیام را بزنیم داخل oncreate شروع کنید به نوشتن. یعنی بین } , { مربوط به Oncreate

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

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

حالا این کدی که نوشتم را نگاه کنید. میخواهم نشان دهم چه معنایی میدهد البته در یکی دو جلسه آینده که عمیق تر به بحثهای عمیق تر پرداختیم بیشتر متوجه میشوید. برای اینکه تغییرات یک دکمه را بررسی کنیم باید اول در کد معرفیش کنیم. برای معرفی کردنش هم باید بهش بگوییم منظورمان دکمه ای هست که آیدیش x هست. این دقیقا میشود جمله من:

 Button btn = findViewById(R.id.button);

اما کدی که نوشتم یک بخش دیگرم دارد. (Button)

این findViewById یک تابع هست. که ورودی بهش یه آیدی میدهیم. و میرود و برایمان پیدایش میکند. (فعلا به R کار نداشته باشید).

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

(Button) = Cast to Button

یعنی تبدیل کردن به باتن با کد بالا صورت میگیرد.

حالا کله کار صورت گرفته را در یک دکمه که خودم اسمش رو دادم btn ذخیره میکنیم

و کد من شد:

 Button btn = (Button) findViewById(R.id.button);

حالا بهش بگوییم کلیک شدی میخواهیم یک کاری انجام بدهی.

اینطور اتفاقات مثل کلیک شدن برای ابزار ها به عنوان Listener بیان میشوند. یعنی انگار سیستم عامل منتظر هست تا ببیند کسی کلیک شد(Listen) و حالا وقتی این اتفاق افتاد باید یک کاری را برای این اتفاق set کند.

بزنید:

 btn.setO

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

setOnClickListener

اون را برید رویش و enter بزنید و خودش مینویسد

btn.setOnClickListener;()

خب تا الان یه رویداد تعریف کردیم برای موجودیت  دکمه (همون مثال انسان و آمدن را یاد بیارید)

حالا بعنوان ورودی باید بهش این را بدهید:

new View.OnClickListener()

اما نشینید این را بنویسید. کافی هست داخل پرانتزه بنویسید new On

حواستان باشه on با O بزرگه و intellij به حروف بزرگو کوچیک حساسه هست. کوچیک بنویسید نمیارتش. در لیستی که باز میکند انتخاب کنید:

OnClickListener

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

و enter بزنید. میبینید که مینویسد:

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

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

 Toast.makeText(getApplicationContext(),"salam",Toast.LENGTH_LONG).show();

خب دوباره Toast یه موجوده هست!  ازش میخواهم که یک متن را بسازد. یعنی makeText که یک تابع است که سه تا ورودی میگیرد. توجه کنید ورودیهای توابع با علامت کاما جدا میشودند:

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

getApplicationContext()

استفاده میکنم.

ورودی دوم: چه چیزی را نشان کاربر بدهیم؟ مثلا من زدم "salam"

ورودی آخر... چقدر پیام روی صفحه باشد؟ که دو نوعه

LENGTH_LONG = tulani

LENGTH_SHORT = kutah

 

و در آخر این پیام ساخته شده را ازش میخواهم نشان بدهد یعنی

 

.show()

تمام! حالا همان مثلث سبزه اون بالا را بزنید. از برنامه اجرا بگیرید تو گوشیتان... این الان گوشی من هست:

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

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

قسمت بعدی قسمت قبلی