خانه » آموزش برنامه نویسی اندروید » برنامه نویسی اندروید (مقدماتی) » آموزش برنامه نویسی اندروید با IntelliJ IDEA ( قسمت اول – بخش ۲ )

آموزش برنامه نویسی اندروید با IntelliJ IDEA ( قسمت اول – بخش ۲ )

در قسمت قبلی به سرعت یک برنامه ساختیم تا یک متن رو نشون بده ، خوب حالا می خوام به سرعت یک توضیحی در مورد کارایی که کردیم بدم:

همان طور که در قسمت قبل دیدید ، در اندروید ۲قسمت برای طراحی وجود دارد ، یکی بخش طراحی ظاهری هست و یکی دیگه بخش کد نویسی

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

در مثال قسمت قبل ما در فولدر res / layout فایلی به نام main.xml داشتیم که شکل ظاهری اکتویتی یا همون فرم ما رو تشکیل میده (در اندروید به فرم ها اکتیوی می گوییم)

پس پوشه layout همیشه شامل فرم های طراحی شده می باشد و این فرم ها به صورت یک فایل با پسوند xml شناخته می شوند ( مثل main.xml ) .

خوب حالا اگه نگاهی به کد بیندازیم کد زیر را می بینیم

setContentView(R.layout.main);

 

این کد به اکتیویتی می گوید که برای طراحی خود فایل main را که در آدرس R.layout.main قرار دارد در نظر بگیرد.

به این ترتیب با باز شدن اکتیویتی ، این فرم نشان داده می شود.

 

اکتیویتی ها همان فرم ها هستند که در اندروید به عنوان صفحات ثابت بکار می روند .

برای ساخت یک اکتیویتی باید در پوشه src فایلی با پسوند .java ساخت که در آن کلاسی با نام خود فایل وجود دارد که کلاس Activity را توسعه می دهد

در مثال فایلی به نام MyActivity.java داشتیم که در فولدر src و در پکیج ir.iact.firstapp وجود داشت (اینکه پکیج چی هست و چرا به این صورت نوشته شده مربوط به جاوا می باشد و بهتر است در کنار یادگیری اندروید کتابی برای فراگیری جاوا تهیه کنید تا بیشتر متوجه کد ها بشوید ولی درکل پکیج همان سلسله مراتب پوشه ای هست که به صورت نام دامین نوشته می شود ، این نام پکیج در هنگام منتشر شدن برنامه به همراه نام برنامه دیده می شود (اگر آدرس برنامه ها در هنگام دانلود از کافه بازار توجه کنید نام پکیج را میبینید) و بیشتر به این منظور است که دو برنامه هم نام ولی ساخته شده توسط افراد مختلف با همدیگر تداخل ایجاد نکنند (مخصوصا وقتی ۲ برنامه همنام بر روی گوشی شما نصب باشد این نام پکیج هست که باعث می شود برنامه ها بر روی همدیگر نصب نشوند یا اینکه آپدیت شوند)

 

بار دیگر نگاهی به کد های مثال بیندازیم

package ir.iact.firstapp;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MyActivity extends Activity {
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.btn_message).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MyActivity.this,"Salam",Toast.LENGTH_LONG).show();
}
});
}
}

 

 

برنامه کلاسی را نشان می دهد با نام MyActivity که کلاس Activity را extends می کند (توسعه می دهد)

کلاس Activity شامل متدی با نام onCreate می باشد که این متد زمانی که یک اکتیویتی ساخته می شود (در ابتدای باز شدن صفحه) فراخوانی می شود

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

public void onCreate(Bundle savedInstanceState) {

 

public یعنی عمومی و در کل سطح برنامه می توان به متد دسترسی داشت (اگر متوجه نمیشوید فعلا خیلی به معنای آن توجه نکنید )

void یعنی متد ما هیچ خروجی ندارد و فقط از جایی فراخوانی می شود تا کد های داخل آن اجرا شوند

onCreate که نام متد است

(Bundle savedInstanceState) شامل مقادیری می شود که داخل صفحه وجود دارند واندروید در صورتی که اکتیویتی دوباره بخواهد ساخته شود از این مقادیر استفاده می کند.(که البته ما کاری به آن نداریم و خود اندروید از آن استفاده می کند)

در خط بعدی

super.onCreate(savedInstanceState);

 

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

 

setContentView(R.layout.main);

 

این رو هم که بالاتر گفتم

قسمت بعدی کد :

findViewById(R.id.btn_message).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MyActivity.this,"Salam",Toast.LENGTH_LONG).show();
}

});

در این قسمت از کد ابتدا با استفاده از findViewById(R.id.btn_message) برنامه در فولدر res به دنبال چیزی می گردد که id آن btn_message باشد.

خوب اگر به فایل main.xml نگاهی کنیم ، در آن صفحه دکمه ای ساختیم که text آن را Show message و id آن را  @+id/btn_message گذاشتیم

@+id/

 

یعنی یک آی دی جدید می خواهیم با نامی که بعد از / نوشته می شود

@+id/btn_message

 

به این منظور است که ای دی جدید btn_message را به دکمه اختصاص بده

(میتونید از قسمت پایین پنچره به حالت text بروید تا کد های نوشته شده برای فرم را ببینید)

 

وقتی که بعد از نوشتن findViewById(R.id.btn_message)  برنامه به دنبال id btn_message می گردد ، این دکمه را پیدا می کند.

توجه : وقتی از findViewById استفاده می کنیم باید آدرس المان (در اینجا همان دکمه ما) که به آن می دهیم در داخل همان فرمی باشد که در ابتدای اکتیویتی به برنامه معرفی کردیم (setContentView(R.layout.main);)  در این مثال دکمه با ای دی btn_message باید داخل صفحه main.xml باشد در غیر اینصورت یا خود IntelliJ به شما پیغام خطا می دهد یا اینکه در هنگام اجرا زمانی که برنامه به این کد برسد خطا می دهد.

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

به این منظور به صورت زیر کد را می نویسیم

 

findViewById(R.id.btn_message).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

}

});

setOnClickListener همین طور که از اسمش پیداست یعنی به کلیک ها گوش بده ، سپس بقیه کد ها را بنویسید (در هنگام نوشتن IntelliJ به شما کمک می کند تا سریع تر کد را بنویسید مثلا بعد از نوشتن findViewById(R.id.btn_message).setOn برنامه به شما پیشنهاد هایی را می دهد که به سرعت شما کمک می کند.

خوب الان کافیه تا هر دستوری که می خواهیم رو داخل متد onClick بنویسیم تا با کلیک کردن روی دکمه اجرا شود

در این مثال ما از دستور Toast استفاده کردیم تا متنی را نمایش دهیم ، در برنامه بعد از Intent  ها استفاده می کنیم تا یک اکتیویتی دیگر را باز کنیم.

دستور Toast به صورت زیر به کار برده میشود :

 

Toast.makeText(MyActivity.this,"Salam",Toast.LENGTH_LONG).show();

 

makeText یعنی متنی را برای بساز ، حالا ۳ پارامتر باید به آن بدهیم :

اولیش context هست که بعدا درمورد آن بیشتر صحبت می کنم ، فعلا همان MyActivity.this را بنویسید

دومی متنی است که قصد نمایش آن را داریم

و سومی مدت زمان نمایش این پیغام است که من در اینجا از Toast.LENGTH_LONG استفاده کرده ام که یه مقدار پیش فرض می باشد.

در آخر با نوشته show()  پیغام نمایش داده می شود.

 

در قسمت بعدی از Intent ها استفاده می کنیم تا اکتیویتی های دیگر را باز کنیم .

 

صفحه اصلی آموزش : آموزش برنامه نویسی اندروید

برچسب ها:
پست قبلی
پست بعدی

درباره ایلیا عابدینی

برنامه نویس اندروید و کارشناس مهندسی پزشکی، نفر سوم مسابقه برنامه نویسی اندروید http://www.schallenge.ir ، از سال 92 برنامه نویسی اندروید رو شروع کردم و در حال حاضر در شرکت عصر دانش در حال توسعه اپلیکیشن تجارت پی می باشدم ، این وبلاگ رو ساختم تا تجربیات روزانه و مفید خودم رو داخل اون بزارم. رزومه : iact.ir/cv

13 دیدگاه

  1. سلام

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

    چرا مثلاً از اندورید استادیو که خود گوگل ارائه داده استفاده نمی کنید؟

    ممنون میشم جوابم رو ببید

     

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

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

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

      اما در کل من مثل خیلی های دیگه منتظر هستم تا نسخه ۱ اندروید استدیو منتشر بشه و بعد از اون استفاده کنم ( و چون کمی هم برنامه نویسی جاوا می کنم intelliJ  بیشتر به دردم می خوره) 

      اما شاید بشه در کل گفت کمی هم سلیقه ای است

      اما در مورد اختلاف intelliJ با eclipse باید بگم ، با هر دو کارکردم و intelliJ واقعا هوشمند تر و پر قدرت تر هست 

  2. سلام توضیح هاتون واقعا قابل فهمه للی این کد هارو باید حفظ کنیم خیلی زیاده!!!

    • نه اصلا تو برنامه نویسی نیاز نیست چیزی رو حفظ کنید 

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

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

      برنامه نویسی حفظ کردن نیست ولی باید ابزار کار رو بشناسید و در هر شرایطی بهترین ابزار ممکن رو استفاده کنید

  3. با عرض سلام و تشکر از آموزشهاتون

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

    • سلام ، منظورش از ساپورت کردن چیه ؟

      چون الان هم میشه متن فارسی نوشت ، هم میشه اسم دکمه ها ، تکست ها و … رو فارسی نوشت ولی موقع ادیت کردنش راست تو چپش یکم اذیت می کنه که میتونید متن رو توی نوت پد کپی کنید ادیت رو بکنید و بعد پیست کنید ، اما از لحاظ اینکه نتونید فارسی بنویسید مشکلی نداره.

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

  4. سلام ممنون  از جوابتون

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

    راستی ببخشید نظرتون در مورد 

    xamarin mono

    چیه؟!

    با تشکر

    • راستش باهاش کار نکردم و زیاد نمیدونم ، اما از جایی که زبان برنامه نویسی اصلی اندروید جاوا هست ، استفاده از زبان های دیگه برای برنامه نویسی جاوا مشکلات زیادی رو داره از حمله اینکه بحث ها و آموزش های کمتری برای زبان های دیگه پیدا میشه

  5. سلام …خیلی سایت عالی داری .. یه کمک ازتون میخواستم .من یه سورس پروژه اندروید دارم میخواستم اجراش کنم ولی نمیتونم یعنی کارم اندروید نیست …خواسم ببینم میتونید کمکم کنید هزینشم هر چی بشه قبول میکنم … این شمارمه۰۹۱۳۰۴۸۰۱۹۹ پروژه داکیومنت نصب هم داره

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

  7. سلام دوست عزیز

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

    خیلی کامل و قابل فهم توضیح دادید

     

    زنده باد

     

     

دیدگاهتان را ثبت کنید

آدرس ایمیل شما منتشر نمی شود.علامت دارها لازمند. *

*

رفتن به بالا