تطبيق حساب كتلة الجسم بأندرويد للمبتدئين
فهاد التطبيق الجديد من سلسلة تطبيقات أندرويد غادي نقادو واحد التطبيق لي معروف ولي كيحسب مؤشر كتلة الجسم وكيعطي النتيجة للمستخدم بالإضافة لمعلومة حول الوزن ديالو التطبيق بسيط للمبتدئين فأندرويد.
نظرة سريعة بالفيديو
1- الملف activity_main.xml
فأول حاجة غادي نديرو غادي نزيدو project جديد ف android studio ختار Basic Activity من بعد ميتزاد غادي تمشي للمجلد res/layout فيه كاين جوج ملفات content_main.xml وactivity_main.xml هادا هو الملف ديال الصفحة الرئيسية ديالنا فيها الكود لي كيزيد لbar لي كتكون فأعلى التطبيق لي فيها العنوان وأيضا فيها الملف content_main.xml لي غادي نشوفو الكود ديالو من بعد الكود ديال activity_main.xml هو :
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.example.belasri.bmiapp.MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
</android.support.design.widget.CoordinatorLayout>
2- الملف content_main.xml
دائما فالمجلد res/layout فيه كاين الملف content_main.xml كنزيد فيه TextView هي لي كتمكني باش نعرض text فالتطبيق هاد الTextView هي لي كانشوفو فأول مكنفتحو التطبيق ولي المحتوى ديالها إضغط هنا وملي كنكليكي عليها كنتوجه مباشرة ل CalculateActivity ولي غادي نزيدوها منبعد ولي فيها غادي نتمكنو من حساب كتلة الجسم الكود ديال الملف هو:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
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"
android:background="#757575"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.example.belasri.bmiapp.MainActivity"
tools:showIn="@layout/activity_main">
<TextView
android:id="@+id/welcommeText"
android:gravity="center"
android:textSize="40sp"
android:textColor="#FFFFFF"
android:layout_marginTop="200dp"
android:layout_marginLeft="100dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="إضغط هنا" />
</RelativeLayout>
3- الملف MainActivity.java
فالمجلد java وفال package com كاين الملف MainActivity.java هادا الملف الرئيسي ديالنا لي كيعرض الصفحة الرئيسية ديالنا فاول حاجة كنسترجع TextView لي زدنا فالملف content_main.xml بواسطة ل id ديالها منبعد كنزيد الكود لي كيمكني ملي كنكليكي عليها كنتوجه للCalculateActivity ولي غادي نزيدو من بعد الكود ديال الملف هو :
package com.example.belasri.bmiapp;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
txt = (TextView) findViewById(R.id.welcommeText);
setSupportActionBar(toolbar);
txt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this,CalculateActivity.class);
startActivity(i);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
4- الملف activity_calculate.xml
منبعد زيد activity جديدة فالمجلد java/com.example ديرها Empty Activity سميها CalculateActivity منبعد ماتزاد سير للمجلد res/layout فالملف activity_calculate.xml لي غادي تلقاه تزاد تما غادي نزيدو الفورم لي غادي تمكنا من حساب كتلة الجسم ولي غادي تكون عبارة عن textview غادي يكون فيها عنوان التطبيق وجوج ديال EditText وحدة غادي تاخد الوزن ووحدة الطول و bouton لي غادي يمكنا من حساب المؤشر وجوج ديال les textviews وحدة غادي تعرض المؤشر ووحدة الرسالة وكل واحد من هاد العناصر عندو id باش غادي نسترجعوه فل CalculateActivity.java الكود ديال الملف هو:
<?xml version="1.0" encoding="utf-8"?>
<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="com.example.belasri.bmiapp.CalculateActivity">
<TextView
android:text="حساب كتلة الجسم"
android:layout_marginTop="20dp"
android:textSize="30sp"
android:textColor="#000"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout
android:orientation="vertical"
android:layout_marginTop="50dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/weight"
android:padding="10dp"
android:hint= "الوزن بالكلغ"
android:gravity="right"
android:ellipsize="end"
android:paddingLeft="10dp"
android:supportsRtl="true"
android:inputType="numberDecimal"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/height"
android:padding="10dp"
android:gravity="right"
android:ellipsize="end"
android:paddingLeft="10dp"
android:inputType="numberDecimal"
android:supportsRtl="true"
android:layout_marginTop="20dp"
android:hint= "الطول بالمتر"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/calculate"
android:textSize="20sp"
android:layout_marginTop="40dp"
android:textColor="#000"
android:text="حساب"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<TextView
android:id="@+id/bmi"
android:layout_marginTop="20dp"
android:textSize="30sp"
android:textColor="#000"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/msg"
android:layout_marginTop="20dp"
android:textSize="30sp"
android:textColor="#000"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
5- الملف CalculateActivity.java
فالمجلد java والملف CalculateActivity.java فيه غادي يكون الكود لي غادي يمكنا من حساب مؤشر كتلة الجسم فمنبعد مكنسترجعوا les textviews و les edittexts ول bouton كنخدم بلevent onclick ديال ل bouton يعني ملي نكليكي عليها غادي يتنفد الكود فكنديكلاري des variables لي كيخدو الوزن والطول لي دخل المستخدم فالحقول من بعد كنعيط لل fonction calculateBMI لي كتحسب مؤشر كتلة الجسم من بعد كن tester على النتيجة كنعرض المساج لي كيساوي كل مؤشر فtextview لي كيتعرض فيها الكود ديال الملف هو :
package com.example.belasri.bmiapp;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class CalculateActivity extends AppCompatActivity {
EditText weightEdit,heightEdit;
TextView bmiText,message;
Button calc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculate);
weightEdit = (EditText) findViewById(R.id.weight);
heightEdit = (EditText) findViewById(R.id.height);
bmiText = (TextView) findViewById(R.id.bmi);
message = (TextView) findViewById(R.id.msg);
calc = (Button)findViewById(R.id.calculate);
calc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
double bmi = 0;
double weight = 0;
double height = 0;
String msg = "";
weight = Double.parseDouble(weightEdit.getText().toString());
height = Double.parseDouble(heightEdit.getText().toString());
bmi = calculateBMI(weight, height);
bmiText.setText(String.valueOf(bmi));
if(bmi < 18.5){
msg = "نقص في الوزن";
}else if(bmi > 18.5 && bmi < 25){
msg = "وزن طبيعي";
}else if(bmi > 25){
msg = "وزن زائد ";
}
message.setText(msg);
}
});
}
private double calculateBMI (double weight, double height) {
return Math.round(weight/(height*height));
}
}