MainActivity.Java
package in.app.androidpro.mishra_age_calculator;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ActionBar;
import android.app.DatePickerDialog;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;
import org.joda.time.Period;
import org.joda.time.PeriodType;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class MainActivity extends AppCompatActivity {
private TextView btBirth, btToday, btCalculate;
private TextView tvResult;
DatePickerDialog.OnDateSetListener dateSetListener1, dateSetListener2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btBirth = findViewById(R.id.bt_birth);
btToday = findViewById(R.id.btn_today);
btCalculate = findViewById(R.id.btn_calculator);
tvResult = findViewById(R.id.result);
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
String date = simpleDateFormat.format(Calendar.getInstance().getTime());
btToday.setText(date);
btBirth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatePickerDialog datePickerDialog = new DatePickerDialog(
MainActivity.this,
android.R.style.Theme_Holo_Light_Dialog_MinWidth
, dateSetListener1, year, month, day
);
datePickerDialog.getWindow().setBackgroundDrawable(new
ColorDrawable(Color.TRANSPARENT));
datePickerDialog.show();
}
});
dateSetListener1 = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
month = month + 1;
String date = day + "/" + month + "/" + year;
btBirth.setText(date);
}
};
btToday.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatePickerDialog datePickerDialog = new DatePickerDialog(
MainActivity.this,
android.R.style.Theme_Holo_Light_Dialog_MinWidth
, dateSetListener2, year, month, day
);
datePickerDialog.getWindow().setBackgroundDrawable(new
ColorDrawable(Color.TRANSPARENT));
datePickerDialog.show();
}
});
dateSetListener2 = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
month = month + 1;
String date = day + "/" + month + "/" + year;
btToday.setText(date);
}
};
btCalculate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String sDate = btBirth.getText().toString();
String eDate = btToday.getText().toString();
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("dd/MM/yyyy");
try {
Date date1 = simpleDateFormat1.parse(sDate);
Date date2 = simpleDateFormat1.parse(eDate);
long startDate = date1.getTime();
long endDate = date2.getTime();
if (startDate <= endDate) {
Period period = new Period(startDate, endDate, PeriodType.yearMonthDay());
int years = period.getYears();
int months = period.getMonths();
int days = period.getDays();
tvResult.setText(years + "Years |" + months + " Months |" + days + " Days");
} else {
Toast.makeText(getApplicationContext()
, "Birth Date Should Not Be Larger Then Today's Date", Toast.LENGTH_SHORT).show();
}
} catch (ParseException e) {
e.printStackTrace();
}
}
});
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
tools:context=".MainActivity"
android:orientation="vertical"
android:background="#EFE8E8"
android:padding="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="35dp"
android:background="@drawable/bgmain"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bt_birth"
android:text="01/012019"
android:textColor="@color/black"
android:textSize="20sp"
android:drawableEnd="@drawable/dropdown"
android:background="@android:color/transparent"
android:drawableRight="@drawable/dropdown" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="To"
android:textSize="25sp"
android:textColor="@android:color/holo_red_light"
android:textStyle="bold"
android:gravity="center"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_today"
android:textSize="20sp"
android:textColor="@color/black"
android:drawableEnd="@drawable/dropdown"
android:background="@android:color/transparent"
android:layout_marginBottom="10dp"
android:drawableRight="@drawable/dropdown" />
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_calculator"
android:text="Calculate"
android:textStyle="bold"
android:layout_marginTop="25dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Result"
android:textSize="30sp"
android:textColor="@android:color/holo_green_light"
android:textStyle="bold"
android:layout_marginTop="50dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/result"
android:text="0 Years | 0 Months | 0 Days"
android:textSize="25sp"
android:textStyle="bold"
android:layout_marginTop="10dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="110dp"
android:background="@drawable/bgmain"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Share"
android:textSize="19sp"
android:textStyle="bold"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:layout_marginStart="28dp"
android:layout_marginLeft="30dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Rate Me"
android:textSize="19sp"
android:textStyle="bold"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:layout_marginLeft="50dp"
/>
</LinearLayout>
</LinearLayout>