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

نام کاربری/ایمیل:
  

گذرواژه‌
  





جستجوی انجمن‌ها

(جستجوی پیشرفته)

آمار انجمن
» اعضا: 34
» آخرین عضو: ewemija
» موضوعات انجمن: 22
» ارسال‌های انجمن: 51

آمار کامل

کاربران آنلاین
در حال حاضر 5 کاربر آنلاین وجود دارد.
» 0 عضو | 5 مهمان

آخرین موضوع‌ها
محیط برنامه نویسی
انجمن: آموزش اندروید صفر به صد
آخرین ارسال توسط: sahand47
2017/09/06، 02:38 PM
» پاسخ: 3
» بازدید: 305
آموزش تصویری اندروید با ا...
انجمن: مقدماتی
آخرین ارسال توسط: sangriz
2017/09/05، 02:40 PM
» پاسخ: 5
» بازدید: 665
آموزش تصویری اندروید با ا...
انجمن: مقدماتی
آخرین ارسال توسط: maryam_f123
2017/08/19، 04:42 PM
» پاسخ: 2
» بازدید: 416
پیش گفتار
انجمن: آموزش اندروید صفر به صد
آخرین ارسال توسط: shivanno18
2017/07/10، 10:11 AM
» پاسخ: 1
» بازدید: 178
آموزش تصویری اندروید با ا...
انجمن: مقدماتی
آخرین ارسال توسط: donyaaall17
2017/06/29، 10:26 AM
» پاسخ: 1
» بازدید: 416
آموزش تصویری اندروید با ا...
انجمن: مقدماتی
آخرین ارسال توسط: donyaaall17
2017/06/29، 10:25 AM
» پاسخ: 1
» بازدید: 331
آموزش تصویری اندروید با ا...
انجمن: مقدماتی
آخرین ارسال توسط: donyaaall17
2017/06/29، 10:24 AM
» پاسخ: 1
» بازدید: 347
آموزش تصویری اندروید با ا...
انجمن: مقدماتی
آخرین ارسال توسط: nedass141
2017/06/14، 02:22 PM
» پاسخ: 1
» بازدید: 403
آموزش تصویری اندروید با ا...
انجمن: مقدماتی
آخرین ارسال توسط: nedass141
2017/06/14، 02:20 PM
» پاسخ: 1
» بازدید: 380
آموزش تصویری اندروید با ا...
انجمن: مقدماتی
آخرین ارسال توسط: aydafhm70
2017/06/05، 02:04 PM
» پاسخ: 1
» بازدید: 582

 
  ساختار XML
ارسال کننده: eiliya - 2016/12/16، 12:48 PM - انجمن: آموزش اندروید صفر به صد - پاسخ (1)

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

این کدی هست که برای نشون دادن یک TextView در قسمت قبلی استفاده شد:

کد php:
   <TextView
        android
:text="Happy Birthday!"
 
       android:background="@android:color/darker_gray"
 
       android:layout_width="150dp"
 
       android:layout_height="75dp"/> 


در XML همیشه با براکت باز > شروع می کنم و بعد از اون اسم VIEW رو میاریم ، این میتونه ImageView یا Button یا ویو های دیگه هم باشه، و بعد از اون لیستی از ویژگی ها رو (attribute) میاریم که هر کدام در یک خط نوشته میشه سپس با یک اسلش "/" و براکت بسته < تموم می کنیم "</" 

حتما برای هر براکت باز باید یک براکت بسته داشته باشیم.
به

چاپ این مطلب

  اولین XML - پاسخ سوال
ارسال کننده: eiliya - 2016/12/16، 12:33 PM - انجمن: آموزش اندروید صفر به صد - پاسخ (1)

کد php:
   <TextView
        android
:text="Happy Birthday!"
 
       android:background="@android:color/darker_gray"
 
       android:layout_width="150dp"
 
       android:layout_height="75dp"/> 


نتیجه :
[تصویر:  TextView1.PNG?dl=1]


میتونید با دیدن این کد ها این نتایج رو بگیرید :
  • کد با یک < شروع شده که بعد از اون TextView اومده و کد ها با /> هم تمام شده اند ، پس احتمالا برای استفاده از View ها از این ساختار استفاده می کنیم.
  • در خط بعدی android:text="Happy Birthday!" اومده و در تصویر هم متن Happy Birthday رو میبینیم ، پس حتما android:text میتونه متن داخل TextView رو مشخص کنه.
  • در خط بعد android:background="@android:color/darker_gary" اومده (background به معنی پس زمینه و gray به معنی خاکستری هست) و در شکل هم ما پس زمینه خاکستری رو میبینیم، پس میتونیم نتیجه بگیریم که android:background میتونه پس زمینه View رو تعیین کنه.
  • در ادامه هم مقادیر layout_width و layout_height عرض و ارتفاع View رو مشخص کرده اند.

چاپ این مطلب

  اولین XML - استفاده از TextView
ارسال کننده: eiliya - 2016/12/16، 12:17 PM - انجمن: آموزش اندروید صفر به صد - پاسخ (1)

خب حالا سراغ کد میریم

از TextView برای نمایش متن ها در صفحه استفاده می کنیم

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


کد php:
<TextView
        android
:layout_width="150dp"
 
       android:layout_height="75dp"
 
       android:background="@android:color/darker_gray"
 
       android:text="Happy Birthday!" /> 

نتیجه :
[تصویر:  TextView1.PNG?dl=1]


اگر با XML آشنایی نداشته باشید، شاید این کد ها به نظر ترسناک یا حتی خنده دار بیاد، در ادامه در مورد این کد ها توضیح میدم.

به کد ها و نتیجه ای که ازشون بدست اومده نگاه کنید و 3 مورد از چیزایی که از این کد حدس می زنید و یا چیزایی که باعث سردرگمی شما میشن رو بنویسید.
(مثلا: در کد نوشته شده text="Happy Birthday!" و در تصویر هم این متن رو می بینیم ، پس برداشت من این هست که text میتونه متن داخل TextView رو مشخص کنه و یا اینکه ، من متوجه نمیشم که چرا کد ها با < شروع شده و با /> تمام شده !)

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

چاپ این مطلب

  محیط برنامه نویسی
ارسال کننده: eiliya - 2016/12/16، 11:57 AM - انجمن: آموزش اندروید صفر به صد - پاسخ (3)

برای نوشتن برنامه ها در اندروید از محیط برنامه نویسی Android Studio استفاده می کنیم.
به محیط های برنامه نویسی IDE هم گفته میشه (Integrated development environment)

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

[تصویر:  ide1.PNG?dl=1]

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

اگر هنوز اندروید استدیو رو نصب نکردید، از لینک زیر اون رو دانلود و نصب کنید:
https://developer.android.com/studio/ind...quirements


اندروید استدیو 2.2.2 به همراه SDK

اندروید استدیو 2.2.2 بدون SDK


صحبت کردن با کامپیوتر با زبان XML
همینطور که ما فارسی زبان ها برای صحبت کردن با همدیگه زبانی رو داریم، برای صحبت کردن با کامپیوتر هم از زبانی به اسم XML استفاده می کنیم (Extensible Marup Language)، که به وسیله این زبان میتونیم بگیم که برنامه اندرویدی ما به چه شکلی دیده بشه که از اون برای ساختن layout ها (ساختار صفحات برنامه) استفاده می کنیم، در واقع مشخص می کنیم چه چیزی کجای صفحه قرار بگیره.

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

در قسمت بعدی اولین کد XML رو می نویسیم.

چاپ این مطلب

  پاسخ سوال مربوط به View ها
ارسال کننده: eiliya - 2016/12/03، 04:00 PM - انجمن: آموزش اندروید صفر به صد - پاسخ (1)

[تصویر:  View4.PNG?dl=1]

A یک تصویر هست پس ImageView هست
B یک نوشته متنی هست پس نوعش TextView هست
C هم یک متن هست باز هم TextView
D هم یک متن هست و اونهم TextView
E یک دکمه هست که Button میشه

پس پاسخ درست میشه:
A = ImageView
B = TextView
C = TextView
D = TextView
E = Button

چاپ این مطلب

  Views ویو ها
ارسال کننده: eiliya - 2016/12/03، 02:58 PM - انجمن: آموزش اندروید صفر به صد - پاسخ (1)

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

View چی هست ؟
ویو ها مربع هایی هستند که داخل اون ها محتوایی قرار داره ، این میتونه یک عکس باشه یا یک متن یا یک دکمه و یا هرچیزی که یک اپلیکیشن میتونه نشون بده

که مجموع این ویو ها شکل ظاهری اپ (رابط کاربری) رو درست می کنه
هر چیزی که در اپلیکیشن می بینید و با اون تعامل می کنید User interface یا رابط کاربری نامیده می شود (همچنین به صورت خلاصه UI نیز گفته می شود)

در اندروید View های مختلفی با اسامی مختلفی وجود دارد

View که متن هارو نشون میده TextView نامیده میشه
View که عکس هارو نشون میده ImageView نامیده میشه
View که دکمه رو نشون میده Button نامیده میشه

View های مختلف با کارایی مختلفی در اندروید وجود دارند اما فعلا قصد داریم روی همین 3 نوع تمرکز کنیم.

[تصویر:  View1.PNG?dl=1]


در بالا گفتم که هر ویو یک مربع هست که داخلش یک محتوا مثل متن یا عکس و ... هست ، اما در تصویر بالا ، این مربع ها کجاست ؟
در واقع این مربع ها پنهان هستند و فقط محتوای داخل رو توی صفحه می بینیم، اگر بخوایم اون هارو بکشیم مثل شکل زیر میشه:
[تصویر:  View2.PNG?dl=1]

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



مورد بعدی که قصد دارم اینجا توضیح بدم نوع نوشتن اسامی هست که به اون Camel case میگن
به نحوه نوشتن TextView و ImageView دقت کنید
حرف اول با حرف بزرگ و حرف اول از کلمه دوم هم با حرف بزرگ نوشته میشه و فاصله بینشون نیست
مثلا به جای اینکه بنویسیم Text View فاصله بینشون حذف میشه و نوشته میشه TextView در صورتی که اگر قصد داشتیم فاصله رو حذف کنیم و حرف اول کلمه دوم رو هم کوچیک کنیم به این شکل میشد Textview که خوانایی خوبی نداره.
به این روش نوشتن Camel case میگن که کلمات به همدیگر میچسبن و حروف اول اون ها بزرگ نوشته میشه ( مثلا به کوهان شتر تشبیهش کردن  Undecided  )

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


در تصویر زیر 5 ویو مشخص شده ، نوع اون هارو مشخص کنید


[تصویر:  View3.PNG?dl=1]
مثلا View مشخص شده در A از نوع ویو هایی است که عکس رو نمایش میده پس نوعش یک ImageView هست

پاسخ خودتون رو به صورت زیر ارسال کنید
A = ImageView
B = ?
C = ?
D = ?
E =  ?

چاپ این مطلب

  آماده برای سفر به جلو
ارسال کننده: eiliya - 2016/12/03، 01:34 PM - انجمن: آموزش اندروید صفر به صد - پاسخ (1)

مشکلات متداول

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

  • عدم اعتماد به نفس از اینکه اونها می تونن برنامه نویس بشن
  • کد ها به نظر تهدید آمیز و ترسناک میان
  • ابزار و نرم افزار ها پیچیده به نظر میان
  • اصطلاحات تخصصی زیاد و عجیب غریبی وجود دارن
  • مفاهیم خیلی انتزاعی هستند
توی این آموزش ها باهم جلو میریم تا این موانع رو از پیش رو برداریم و اعتماد به نفستون رو همین طور که جلو میریم بیشتر می کنیم Smile


تصاویر
برای بیشتر مفاهیم تصاویری تهیه شده تا موضوع بهتر آموزش داده شود
[تصویر:  introduct2-1.png?dl=1]


واژه نامه
در سایت گوگل واژه نامه ای درست شده که اصطلاحات رو با تصویر توضیح داده که میتونید از طریق لینک زیر به اون دسترسی داشته باشید:
https://developers.google.com/android/for-all/vocab-words/?hl=en

[تصویر:  introduct2-2.png?dl=1]

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

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

نظر و قصدتون رو در مورد یادگیری اندروید بنویسید

چاپ این مطلب

  پیش گفتار
ارسال کننده: eiliya - 2016/12/03، 12:16 PM - انجمن: آموزش اندروید صفر به صد - پاسخ (1)

سلام

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

https://classroom.udacity.com/courses/ud837
در پایان این آموزش ها یاد میگیرید که چطوری یک اپلیکیشن یک صفحه ای اندروید که شامل تصاویر و متن هست بسازید

[تصویر:  introduct1.png?dl=1]

در این آموزش ها قدم به قدم یاد میگیرید که چطوری یک اپلیکیشن مثل تصویر زیر بسازید و اون رو روی یک دستگاه اندروید اجرا کنید

[تصویر:  introduct2.png?dl=1]


همچنین یاد میگیرید که چطور میتونید از اندروید استدیو Android Studio برای ساختن اپلیکیشن ها استفاده کنید.

برای استفاده از اندروید استدیو سیستم شما باید این حداقلی ها را داشته باشد:
    Microsoft® Windows® 7/8/10 (32- or 64-bit)3 GB RAM minimum, 8 GB RAM recommended; plus 1 GB for the Android Emulator2 GB of available disk space minimum,4 GB Recommended (500 MB for IDE + 1.5 GB for Android SDK and emulator system image)1280 x 800 minimum screen resolution
  • For accelerated emulator: 64-bit operating system and Intel® processor with support for Intel® VT-x, Intel® EM64T (Intel® 64), and Execute Disable (XD) Bit functionality

برای دانلود اندروید استدیو میتونید از لینک زیر استفاده کنید:

https://developer.android.com/studio/ind...quirements


اندروید استدیو 2.2.2 به همراه SDK

اندروید استدیو 2.2.2 بدون SDK

چاپ این مطلب

  ساختن ماشین حساب اندرویدی در ایکلیپس بخش دوم
ارسال کننده: fns4565 - 2016/11/08، 09:44 AM - انجمن: پروژه ها - پاسخ (1)

حالا توابع onClick را به صورت زیر تعریف می کنیم:

public void onClick(View arg0) {
        Editable str =  disp.getText();
        switch(arg0.getId()){
            case R.id.one:
                if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                str = str.append(one.getText());
                disp.setText(str);
            break;
            case R.id.two:
                if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                str = str.append(two.getText());
                disp.setText(str);
            break;
            case R.id.three:
                if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                str = str.append(three.getText());
                disp.setText(str);
            break;
            case R.id.four:
                if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                str = str.append(four.getText());
                disp.setText(str);
            break;
            case R.id.five:
                if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                str = str.append(five.getText());
                disp.setText(str);
            break;
            case R.id.six:
                if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                str = str.append(six.getText());
                disp.setText(str);
            break;
            case R.id.seven:
                if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                str = str.append(seven.getText());
                disp.setText(str);
            break;
            case R.id.eight:
                if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                str = str.append(eight.getText());
                disp.setText(str);
 
            break;
            case R.id.nine:
                if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                str = str.append(nine.getText());
                disp.setText(str);
 
            break;
            case R.id.zero:
                if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                str = str.append(zero.getText());
                disp.setText(str);
 
            break;
            case R.id.cancel:
                op1 = 0;
                op2 = 0;
                disp.setText("");
                disp.setHint("Perform Operation Smile");
 
            break;
            case R.id.add:
                optr = "+";
                if(op1 == 0){
                    op1 = Integer.parseInt(disp.getText().toString());
                    disp.setText("");
                }
                else if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                else{
                    op2 = Integer.parseInt(disp.getText().toString());
                    disp.setText("");
                    op1 = op1 + op2;
                    disp.setText("Result : " + Integer.toString(op1));
                }
            break;
            case R.id.sub:
                optr = "-";
                if(op1 == 0){
                    op1 = Integer.parseInt(disp.getText().toString());
                    disp.setText("");
                }
                else if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                else{
                    op2 = Integer.parseInt(disp.getText().toString());
                    disp.setText("");
                    op1 = op1 - op2;
                    disp.setText("Result : " + Integer.toString(op1));
                }
            break;
            case R.id.mul:
                optr = "*";
                if(op1 == 0){
                    op1 = Integer.parseInt(disp.getText().toString());
                    disp.setText("");
                }
                else if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                else{
                    op2 = Integer.parseInt(disp.getText().toString());
                    disp.setText("");
                    op1 = op1 * op2;
                    disp.setText("Result : " + Integer.toString(op1));
                }
            break;
            case R.id.div:
                optr = "/";
                if(op1 == 0){
                    op1 = Integer.parseInt(disp.getText().toString());
                    disp.setText("");
                }
                else if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                else{
                    op2 = Integer.parseInt(disp.getText().toString());
                    disp.setText("");
                    op1 = op1 / op2;
                    disp.setText("Result : " + Integer.toString(op1));
                }
            break;
            case R.id.equal:
                if(!optr.equals(null)){
                    if(op2 != 0){
                        if(optr.equals("+")){
                            disp.setText("");
                            /*op1 = op1 + op2;*/
                            disp.setText("Result : " + Integer.toString(op1));
                        }
                        else if(optr.equals("-")){
                            disp.setText("");/*
                            op1 = op1 - op2;*/
                            disp.setText("Result : " + Integer.toString(op1));
                        }
                        else if(optr.equals("*")){
                            disp.setText("");/*
                            op1 = op1 * op2;*/
                            disp.setText("Result : " + Integer.toString(op1));
                        }
                        else if(optr.equals("/")){
                            disp.setText("");/*
                            op1 = op1 / op2;*/
                            disp.setText("Result : " + Integer.toString(op1));
                        }
                    }
                    else{
                        operation();
                    }
                }
            break;
        }
    }


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


case R.id.one:
                if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                str = str.append(one.getText());
                disp.setText(str);
            break;


معنی هر سطر و کاری که انجام می دهد:

سطر ۱: در صورتی دکمه one فشرده شود،

سطر ۲: اگر متغیر op2 برابر با ۰ باشد،

سطر ۳: op2 را برابر با صفر قرار بده.

سطر ۴: disp را خالی کن.

سطر ۶: متن مربوط به one را بگیر و در متغیر str ذخیره کن.

سطر ۷: متن str را در disp نشان بده.

 
دکمه Cancel یا Clear:

            case R.id.cancel:
                op1 = 0;
                op2 = 0;
                disp.setText("");
                disp.setHint("Perform Operation Smile");
 
            break;



اگر این دکمه فشرده شود، ابتدا ۲ متغیر صحیح را برابر با صفر می کند، سپس disp را خالی از متن کرده و متن کم رنگ Perform Operation [img=853x1349]https://s.w.org/images/core/emoji/2/svg/1f642.svg[/img] را در آن می گذارد.

 
دکمه جمع:


            case R.id.add:
                optr = "+";
                if(op1 == 0){
                    op1 = Integer.parseInt(disp.getText().toString());
                    disp.setText("");
                }
                else if(op2 != 0){
                    op2 = 0;
                    disp.setText("");
                }
                else{
                    op2 = Integer.parseInt(disp.getText().toString());
                    disp.setText("");
                    op1 = op1 + op2;
                    disp.setText("Result : " + Integer.toString(op1));
                }
            break;

اگر دکمه + فشرده شود، متغیر optr را برابر با + قرار می دهد. آنگاه اگر، op1 برابر با ۰ باشد، این ۰ را تبدیل به رشته کرده و در disp قرار میدهد. اگر op2 برابر با ۰ باشد، و در آخر ۲ متغیر را جمع کرده و در disp نمایش می دهد.

بقیه عملگرها نیز به همین صورت هستند.

 
ماشین حساب نهایی ما می تواند چیزی شبیه زیر باشد:

[تصویر:  makeacalculator4.jpg]

چاپ این مطلب

  ساختن ماشین حساب اندرویدی در ایکلیپس بخش اول
ارسال کننده: fns4565 - 2016/11/08، 09:20 AM - انجمن: پروژه ها - پاسخ (1)

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

اول از همه پروژه رو ایجاد می کنیم:

[تصویر:  makeacalculator2.jpg]

در مرحله بعد می توانید آیکن برنامه را به صورت متن یا تصویر تغییر دهید:

[تصویر:  makeacalculator3.jpg]

بعد از انتخاب آیکن، کافی است next کرده و در آخر finish را بزنید تا برنامه شما ایجاد شود.


بعد از ایجاد برنامه، اولین کاری که می کنیم، اضافه کردن نوشته هایی به فایل strings.xml است که قرار است روی دکمه های ماشین حساب اضاف شوند. فایل strings.xml در مسیر res/values قرار دارد. آن را به صورت زیر تغییر دهید:




<resources>
 
    <string name="app_name">Calculator</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_main">Calculator</string>
    <string name="one">1</string>
    <string name="eight">8</string>
    <string name="nine">9</string>
    <string name="two">2</string>
    <string name="three">3</string>
    <string name="four">4</string>
    <string name="five">5</string>
    <string name="six">6</string>
    <string name="zero">0</string>
    <string name="seven">7</string>
    <string name="div">/</string>
    <string name="mul">*</string>
    <string name="sub">-</string>
    <string name="equal">=</string>
    <string name="cancel">C</string>
    <string name="add">+</string>
    <string name="disp">Enter Values</string>
    <string name="dispHint">Calculator</string>
 
</resources>



حالا باید لایوت اصلی برنامه (با نام calculator.xml) را تغییر دهیم. ما به این فایل تعدادی دکمه، برای نمایش اعداد ۰ تا ۹ و عملگرهای + – * / = و نیز دکمه ای برای پاک کردن اعداد درون ماشین حساب اضافه می کنیم:


<div id="inner-editor"><br class="Apple-interchange-newline"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   tools:context=".Home"
   android:background="#fff" >

   <EditText
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:text=""
       android:id = "@+id/display"
       android:hint="@string/dispHint" />

  <LinearLayout android:orientation="horizontal"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:gravity="center"
      android:paddingTop="20dp">
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/seven"
       android:text="@string/seven"
   />
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/eight"
       android:text="@string/eight"
   />
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/nine"
       android:text="@string/nine"
   />
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/div"
       android:text="@string/div"
   />
  </LinearLayout>
   <LinearLayout android:orientation="horizontal"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:gravity="center"
      android:paddingTop="20dp">
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/four"
       android:text="@string/four"
   />
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/five"
       android:text="@string/five"
   />
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/six"
       android:text="@string/six"
   />
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/mul"
       android:text="@string/mul"
   />
  </LinearLayout>
  <LinearLayout android:orientation="horizontal"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:gravity="center"
      android:paddingTop="20dp">
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/one"
       android:text="@string/one"
   />
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/two"
       android:text="@string/two"
   />
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/three"
       android:text="@string/three"
   />
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/sub"
       android:text="@string/sub"
   />
  </LinearLayout>
  <LinearLayout android:orientation="horizontal"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:gravity="center"
      android:paddingTop="20dp">
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/cancel"
       android:text="@string/cancel"
   />
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/zero"
       android:text="@string/zero"
   />
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/equal"
       android:text="@string/equal"
   />
   <Button
       android:layout_width="55dp"
       android:layout_height="wrap_content"
       android:id = "@+id/add"
       android:text="@string/add"
   />
  </LinearLayout>
</LinearLayout></div>



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".Home"
    android:background="#fff" >
 
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text=""
        android:id = "@+id/display"
        android:hint="@string/dispHint" />
 
   <LinearLayout android:orientation="horizontal"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:gravity="center"
       android:paddingTop="20dp">
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/seven"
        android:text="@string/seven"
    />
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/eight"
        android:text="@string/eight"
    />
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/nine"
        android:text="@string/nine"
    />
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/div"
        android:text="@string/div"
    />
   </LinearLayout>
    <LinearLayout android:orientation="horizontal"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:gravity="center"
       android:paddingTop="20dp">
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/four"
        android:text="@string/four"
    />
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/five"
        android:text="@string/five"
    />
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/six"
        android:text="@string/six"
    />
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/mul"
        android:text="@string/mul"
    />
   </LinearLayout>
   <LinearLayout android:orientation="horizontal"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:gravity="center"
       android:paddingTop="20dp">
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/one"
        android:text="@string/one"
    />
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/two"
        android:text="@string/two"
    />
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/three"
        android:text="@string/three"
    />
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/sub"
        android:text="@string/sub"
    />
   </LinearLayout>
   <LinearLayout android:orientation="horizontal"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:gravity="center"
       android:paddingTop="20dp">
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/cancel"
        android:text="@string/cancel"
    />
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/zero"
        android:text="@string/zero"
    />
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/equal"
        android:text="@string/equal"
    />
    <Button
        android:layout_width="55dp"
        android:layout_height="wrap_content"
        android:id = "@+id/add"
        android:text="@string/add"
    />
   </LinearLayout>
</LinearLayout>


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

کدهای شما باید چیزی مانند تصویر زیر باشند:

[تصویر:  makeacalculator1.jpg]

حالا به سراغ کلاس (یا اکتیویتی) اصلی برنامه، یعنی Calculator.java می رویم. ابتدا کدها را مرحله به مرحله توضیح داده و بعد تمامی دستورات را یکجا می آورم.

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


<div id="inner-editor"><br class="Apple-interchange-newline">    Button one, two, three, four, five, six, seven, eight, nine, zero, add, sub, mul, div, cancel, equal;
   EditText disp;
   int op1;
   int op2;
   String optr;</div>



    Button one, two, three, four, five, six, seven, eight, nine, zero, add, sub, mul, div, cancel, equal;
    EditText disp;
    int op1;
    int op2;
    String optr;


ما در اینجا در سطر اول، متغیرهایی از نوع Button تعریف کرده ایم. یعنی در واقع دکمه های ماشین حساب را تعریف کرده ایم. سطر سوم یک EditText، سطر سوم و چهارم متغیرهایی صحیح (int) و سطر آخر یک متغیر رشته ای (String) تعریف می کند.

حالا هر یک از متغیرهای بالا را به شیء مربوطه در لایوت مرتبط می کنیم:


<div id="inner-editor"><br class="Apple-interchange-newline">        one = (Button) findViewById(R.id.one);
       two = (Button) findViewById(R.id.two);
       three = (Button) findViewById(R.id.three);
       four = (Button) findViewById(R.id.four);
       five = (Button) findViewById(R.id.five);
       six = (Button) findViewById(R.id.six);
       seven = (Button) findViewById(R.id.seven);
       eight = (Button) findViewById(R.id.eight);
       nine = (Button) findViewById(R.id.nine);
       zero = (Button) findViewById(R.id.zero);
       add = (Button) findViewById(R.id.add);
       sub = (Button) findViewById(R.id.sub);
       mul = (Button) findViewById(R.id.mul);
       div = (Button) findViewById(R.id.div);
       cancel = (Button) findViewById(R.id.cancel);
       equal = (Button) findViewById(R.id.equal);        
       disp = (EditText) findViewById(R.id.display);</div>



        one = (Button) findViewById(R.id.one);
        two = (Button) findViewById(R.id.two);
        three = (Button) findViewById(R.id.three);
        four = (Button) findViewById(R.id.four);
        five = (Button) findViewById(R.id.five);
        six = (Button) findViewById(R.id.six);
        seven = (Button) findViewById(R.id.seven);
        eight = (Button) findViewById(R.id.eight);
        nine = (Button) findViewById(R.id.nine);
        zero = (Button) findViewById(R.id.zero);
        add = (Button) findViewById(R.id.add);
        sub = (Button) findViewById(R.id.sub);
        mul = (Button) findViewById(R.id.mul);
        div = (Button) findViewById(R.id.div);
        cancel = (Button) findViewById(R.id.cancel);
        equal = (Button) findViewById(R.id.equal);        
        disp = (EditText) findViewById(R.id.display);


برای مثال دستور

one = (Button) findViewById(R.id.one);

 دکمه one در لایوت calculator.xml را به متغیر one (که از نوع Button است) اختصاص می دهد.

حالا می خواهیم به اندروید بگوییم وقتی روی دکمه ای کلیک می شود، چه عملی انجام دهد. برای این کار چند بلوک کد داریم. ابتدا در try … catch تابع setOnClickListener را برای هر یک از دکمه ها تعریف می کنیم:



try{
            one.setOnClickListener(this);
 
            two.setOnClickListener(this);
 
            three.setOnClickListener(this);
 
            four.setOnClickListener(this);
 
            five.setOnClickListener(this);
 
            six.setOnClickListener(this);
 
            seven.setOnClickListener(this);
 
            eight.setOnClickListener(this);
 
            nine.setOnClickListener(this);
 
            zero.setOnClickListener(this);
 
            cancel.setOnClickListener(this);
 
            add.setOnClickListener(this);
 
            sub.setOnClickListener(this);
 
            mul.setOnClickListener(this);
 
            div.setOnClickListener(this);
 
            equal.setOnClickListener(this);
        }
        catch(Exception e){
 
        }


در مرحله بعد، تابع operation را به صورت زیر تعریف می کنیم. این تابع نحوه کارکرد هر یک از عملگرهای + – * / را مشخص می کند. دقت داشته باشید که این تابع باید خارج از onCreate نوشته شود:



<div id="inner-editor"><br class="Apple-interchange-newline">    public void operation(){
       if(optr.equals("+")){
           op2 = Integer.parseInt(disp.getText().toString());
           disp.setText("");
           op1 = op1 + op2;
           disp.setText("Result : " + Integer.toString(op1));
       }
       else if(optr.equals("-")){
           op2 = Integer.parseInt(disp.getText().toString());
           disp.setText("");
           op1 = op1 - op2;
           disp.setText("Result : " + Integer.toString(op1));
       }
       else if(optr.equals("*")){
           op2 = Integer.parseInt(disp.getText().toString());
           disp.setText("");
           op1 = op1 * op2;
           disp.setText("Result : " + Integer.toString(op1));
       }
       else if(optr.equals("/")){
           op2 = Integer.parseInt(disp.getText().toString());
           disp.setText("");
           op1 = op1 / op2;
           disp.setText("Result : " + Integer.toString(op1));
       }
   }</div>



    public void operation(){
        if(optr.equals("+")){
            op2 = Integer.parseInt(disp.getText().toString());
            disp.setText("");
            op1 = op1 + op2;
            disp.setText("Result : " + Integer.toString(op1));
        }
        else if(optr.equals("-")){
            op2 = Integer.parseInt(disp.getText().toString());
            disp.setText("");
            op1 = op1 - op2;
            disp.setText("Result : " + Integer.toString(op1));
        }
        else if(optr.equals("*")){
            op2 = Integer.parseInt(disp.getText().toString());
            disp.setText("");
            op1 = op1 * op2;
            disp.setText("Result : " + Integer.toString(op1));
        }
        else if(optr.equals("/")){
            op2 = Integer.parseInt(disp.getText().toString());
            disp.setText("");
            op1 = op1 / op2;
            disp.setText("Result : " + Integer.toString(op1));
        }
    }


برای مثال دستورات




    if(optr.equals("+")){
            op2 = Integer.parseInt(disp.getText().toString());
            disp.setText("");
            op1 = op1 + op2;
            disp.setText("Result : " + Integer.toString(op1));
        }


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

چاپ این مطلب