- آموزش برنامه نویسی Android قسمت اول: تاریخچه سیستم عامل اندروید
- آموزش برنامه نویسی Android قسمت دوم: آشنایی با اصطلاحات و نصب محیط توسعه
- آموزش برنامه نویسی Android قسمت سوم: اجرای اولین برنامه Hello World
- آموزش برنامه نویسی Android قسمت چهارم: شروع طراحی رابط کاربری
- آموزش برنامه نویسی Android قسمت پنجم: طراحی LinearLayout
- آموزش برنامه نویسی Android قسمت ششم: طراحی صفحه یک ماشین حساب
- آموزش برنامه نویسی Android قسمت هفتم: طراحی RelativeLayout
- آموزش برنامه نویسی Android قسمت هشتم: ساخت لیست با ListView
- آموزش برنامه نویسی Android قسمت نهم: شروع آموزش زبان Java
- آموزش برنامه نویسی Android قسمت دهم: محاسبات ریاضی و شرط ها
- آموزش برنامه نویسی Android قسمت یازدهم: حلقه ها و آرایه ها
- آموزش برنامه نویسی Android قسمت دوازدهم: شی گرایی بخش اول
- آموزش برنامه نویسی Android قسمت سیزدهم: شی گرایی بخش دوم
- آموزش برنامه نویسی Android قسمت چهاردهم: پروژه نرم افزار مبدل واحد
- آموزش برنامه نویسی Android قسمت پانزدهم: Activity ها را بیشتر بشناسید
- آموزش برنامه نویسی Android قسمت شانزدهم: چرخه حیات اکتیویتی
- آموزش برنامه نویسی Android قسمت هفدهم: Fragment ها
- آموزش برنامه نویسی Android قسمت هجدهم: ساختار داده ها و Data Model ها
- آموزش برنامه نویسی Android قسمت نوزدهم: Shared Preferences
- آموزش برنامه نویسی Android قسمت بیستم: ارتباط با سرور برای دریافت اطلاعات بخش اول
- آموزش برنامه نویسی Android قسمت بیست و یکم: ارتباط با سرور برای دریافت اطلاعات بخش دوم
- آموزش برنامه نویسی Android قسمت بیست و دوم: ارسال اطلاعات به سرور
- آموزش برنامه نویسی Android قسمت بیست و سوم: اندروید و پایگاه داده بخش اول
- آموزش برنامه نویسی Android قسمت بیست و چهارم: اندروید و پایگاه داده بخش دوم
- آموزش برنامه نویسی Android قسمت بیست و پنجم: BroadcastReceiver
برای یادگیری بیشتر آموزشهای برنامه نویسی و طراحی لایه کاربری که در قسمتهای قبلی به آنها اشاره کردیم، در این قسمت قصد داریم یک پروژه عملی برای پیاده سازی نرم افزار مبدل واحد با هم ایجاد کنیم.
در این نرم افزار مسافت به کیلومتر دریافت و تبدیل به متر خواهد شد. ابتدا یک رابط کاربری طراحی میکنیم، که پس از اتمام کار چنین صفحهای خواهیم داشت:
سورس پیاده سازی چنین لایه کاربریای عبارت است از:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="hitos.ir.convertor.MainActivity"
android:gravity="center">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="200dip">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/editText"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="تایید"
android:id="@+id/button"
android:layout_marginTop="20dip"
android:layout_marginBottom="50dip"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="عدد مورد نظر را به کیلومتر وارد کرده و کلید تبدیل را بزنید"
android:id="@+id/textView"
android:gravity="right"/>
</LinearLayout>
</RelativeLayout>
پیاده سازی لایه فوق بسیار راحت است و در ابتدا یک LinearLayout از نوع vertical و به طول 200dip ایجاد میکنیم. سپس با تعیین gravity لایه اصلی RelativeLayout به center تمام محتویات را وسط چین میکنیم.
درون LinearLayout یک EditeText و سپس یک Button و یک TextView درج میکنیم.
ارتباط بین لایه نمایش و Activity
همانطور که میدانید ما در بالا تنها رابط نمایشی برنامه خود را طراحی کردیم. به این دلیل که نرم افزار نیازمند انجام محاسبات است مجبوریم لایه نمایش را به Activity اصلی برنامه متصل کنیم.
در رابط کاربری سه واحد وجود دارد که برای تعامل با کاربر باید آنها را در Activity مدیریت کنیم. این سه واحد عبارت اند از:
- EditText: برای دریافت ورودی و انجام پردازش روی آن.
- Button: برای شروع انجام محاسبات.
- TextView: برای نمایش نتیجه محاسبات.
بالای متد onCreate کلاس MainActivity سه متغیر به شکل زیر اضافه میکنیم:
package hitos.ir.convertor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
EditText editText;
Button button;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
در سطرهای یازده الی سیزده سه متغیر از نوعهای به ترتیب EditText و Button و TextView ایجاد کردیم. هر کدام از این واحدهای جدید را که اضافه میکنیم به شما پیشنهاد داده میشود که با فشردن کلیدهای Alt + Enter کلاس مربوطه را به بالای فایل جاری اضافه کنید.
حال باید سه کامپوننت ایجاد شده در لایه نمایش را در متد onCreate به این سه متغیر نسبت دهیم. برای این کار داریم:
package hitos.ir.convertor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
EditText editText;
Button button;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
editText = (EditText) findViewById(R.id.editText);
textView= (TextView) findViewById(R.id.textView);
}
}
در خطوط بیستم تا بیست و دوم سه کامپوننت به شکلی که میبینید در اکتیویتی جاری فراخوانی شده اند. برای فراخوانی کامپوننتها به این شکل عمل میکنیم که ابتدا نام کامپوننت را درون پرانتز قید کرده و با عبارت findViewById به دنبال کامپوننت مورد نظر در لایه نمایش میگردیم.
ورودی درون پرانتز که از سه بخش تشکیل شده است، بخش اول که R است نشان دهنده مراجعه به پوشه res، شناسه id نشان دهنده استفاده از عنصر ID و در آخر شناسه کامپوننت میباشد. شناسه کامپوننت در طراحی لایه کاربری ایجاد میشود، به عنوان مثال برای TextView خاصیتی به صورت android:id="@+id/editText"
تعریف کرده بودیم که عبارت بعد از اسلش نشان دهنده شناسه المان است.
با فراخوانی کامپوننتهای میتوانیم کنترل آنها را در Activity بدست بگیریم.
در ابتدا قصد داریم دستوری بنویسیم که متن پیش فرض موجود در TextView را عوض کند. برای این کار باید پس از فراخوانی متغیری که حاوی TextView است از متد setText استفاده کرد. سورس زیر را ببینید:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
editText = (EditText) findViewById(R.id.editText);
textView= (TextView) findViewById(R.id.textView);
textView.setText("hitos.ir");
}
نتیجه مانند زیر خواهد بود و متن پیش فرض موجود در TextView تبدیل به hitos.ir خواهد شد.
حال قصد داریم کلید تایید نرم افزار مبدل واحد خود را برای انجام عملیات آماده کنیم. از آن جایی که عملیات پردازش و تبدیل واحد پس از کلید روی کلید تایید شروع میشود باید متدی برای Button موجود در لایه نمایش ایجاد کنیم تا پس از کلیک شدن روی کلید با شناسه مورد نظر عملیات خاصی انجام شود.
عبارت button.setOnClickListener(new View.OnClickListener());
را مینویسیم. روی کلیدواژه View کلیک کرده و Alt + Enter را فشار میدهیم.
دور بخش داخل پرانتز یک خط قرمز کشیده میشود که با کلیک روی آن و زدن کلیدهای Alt + Enter پنجرهای باز شده که نام اولین المان آن Implement methods است:
روی Implement methods کلیک کرده و پنجره نمایش داده شده را تایید میکنیم.
کدهای بخش درون onCreate به شکل زیر در میآید:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
editText = (EditText) findViewById(R.id.editText);
textView= (TextView) findViewById(R.id.textView);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
در خط ده متد setOnClickListener یک شنونده است که به متغیر button متصل شده است. این شنوده وظیفه منتظر ماندن تا زمان کلیک شدن روی کلید button را بر عهده دارد.
نکته: شاید کدها کمی پیچیده به نظر بیایند، ولی فعلا همین طور آنها را حفظ کنید تا در آینده به کاربرد آنها پی ببرید.
درون متد ایجاد شده توسط setOnClickListener یک متد دیگر به نام onClick ایجاد میگردد که تمام پردازشهای پس از کلیک کردن روی کلید تایید را در اینجا وارد میکنیم.
ابتدا باید عدد وارد شده درون کادر editText را استخراج و تبدیل به یک عدد صحیح از نوع int بکنیم. به سورس زیر توجه کنید:
int number= Integer.parseInt(editText.getText().toString());
عبارت editText.getText().toString()
عدد درون textView را دریافت میکند. Integer.parseInt
وظیفه تبدیل کردن رشته درون پرانتز به int را بر عهده دارد.
حال متغیر دیگری به نام convert از نوع int میسازیم و عدد ذخیره شده در number را ضربدر 1000 میکنیم:
int convert= number * 1000;
با استفاده از متد setText عبارت درون TextView را ویرایش میکنیم. کل سورس نرم افزار به شکل زیر خواهد بود:
package hitos.ir.convertor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
EditText editText;
Button button;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
editText = (EditText) findViewById(R.id.editText);
textView= (TextView) findViewById(R.id.textView);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int number= Integer.parseInt(editText.getText().toString());
int convert= number * 1000;
textView.setText(number + " KM is " + convert + " m");
}
});
}
}
در خط 30 برای ساخت عبارت مناسب چند رشته را در هم ترکیب کردیم. نتیجه اجرای برنامه فوق به شکل زیر خواهد بود:
سعی کنید واحدهای دیگری را تست کنید تا در این زمینه مسلط شوید. قسمتهای بعدی آموزش اندروید را از دست ندهید.
تگ ها: android / اندروید