Tuesday 14 November 2017

Age Calculater in Andriod

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/icons"> <ScrollView android:id="@+id/scroll_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_above="@+id/display_date_result" android:layout_marginBottom="6dp" android:background="#ffffff" android:scrollbars="none"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/current_date" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="12dp" android:layout_alignParentTop="true" android:text="@string/date_today" android:textStyle="bold" android:textSize="16sp" android:background="@color/primary_light" android:textColor="@color/primary_text" /> <LinearLayout android:id="@+id/first_layout_wrapper" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/current_date" android:padding="8dp" android:background="@drawable/border_colour" android:orientation="horizontal"> <TextView android:id="@+id/display_today_date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="12dp" android:text="@string/display_date" android:textStyle="bold" android:textSize="16sp" android:layout_weight="1" android:textColor="@color/primary_text" /> <ImageView android:id="@+id/set_date_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/app_name" android:layout_weight="1" android:layout_gravity="right|center_vertical" android:src="@drawable/dateicon"/> </LinearLayout> <TextView android:id="@+id/birthday_date" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="12dp" android:layout_below="@+id/first_layout_wrapper" android:layout_marginTop="32dp" android:text="@string/birthday_date" android:textStyle="bold" android:textSize="16sp" android:background="@color/primary_light" android:textColor="@color/primary_text" /> <LinearLayout android:id="@+id/second_layout_wrapper" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/birthday_date" android:padding="8dp" android:background="@drawable/border_colour" android:orientation="horizontal"> <TextView android:id="@+id/display_birthday_date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="12dp" android:text="@string/display_date" android:textStyle="bold" android:textSize="16sp" android:layout_weight="1" android:textColor="@color/primary_text" /> <ImageView android:id="@+id/set_birthday_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="@string/app_name" android:layout_weight="1" android:layout_gravity="right|center_vertical" android:padding="0dp" android:layout_margin="0dp" android:src="@drawable/dateicon"/> </LinearLayout> <LinearLayout android:id="@+id/button_wrapper" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/second_layout_wrapper" android:layout_marginTop="32dp" android:orientation="horizontal"> <Button android:id="@+id/button_calculate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center|center_horizontal" android:padding="16dp" android:text="@string/calculation_text" android:layout_marginRight="1dp" android:background="@color/primary_dark" android:layout_weight="1"/> <Button android:id="@+id/button_clear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center|center_horizontal" android:padding="16dp" android:layout_marginLeft="1dp" android:text="@string/clear_results" android:background="@color/primary_dark" android:layout_weight="1"/> </LinearLayout> <TextView android:id="@+id/age_header" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="12dp" android:layout_below="@+id/button_wrapper" android:layout_marginTop="32dp" android:text="@string/current_age" android:textStyle="bold" android:textSize="16sp" android:background="@color/primary_light" android:textColor="@color/primary_text" /> <TableLayout android:id="@+id/age_table" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/age_header"> <TableRow android:background="@drawable/border_colour" android:padding="24dp"> <TextView android:id="@+id/years_in_age" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center|center_horizontal" android:text="@string/years_number" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> <TextView android:id="@+id/months_in_age" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center|center_horizontal" android:text="@string/months_number" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> <TextView android:id="@+id/days_in_age" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center|center_horizontal" android:text="@string/days_number" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> </TableRow> </TableLayout> <TextView android:id="@+id/next_birthday_header" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="12dp" android:layout_below="@+id/age_table" android:layout_marginTop="32dp" android:text="@string/next_birthday" android:textStyle="bold" android:textSize="16sp" android:background="@color/primary_light" android:textColor="@color/primary_text" /> <TableLayout android:id="@+id/next_age_table" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/next_birthday_header"> <TableRow android:background="@drawable/border_colour" android:padding="24dp"> <TextView android:id="@+id/years_in_birthday" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center|center_horizontal" android:text="@string/years_number" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> <TextView android:id="@+id/months_in_birthday" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center|center_horizontal" android:text="@string/months_number" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> <TextView android:id="@+id/days_in_birthday" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center|center_horizontal" android:text="@string/days_number" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> </TableRow> </TableLayout> <TextView android:id="@+id/age_analysis" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="12dp" android:layout_below="@+id/next_age_table" android:layout_marginTop="32dp" android:text="@string/age_analysis" android:textStyle="bold" android:textSize="16sp" android:background="@color/primary_light" android:textColor="@color/primary_text" /> <TableLayout android:id="@+id/extra_information" android:layout_width="match_parent" android:layout_below="@+id/age_analysis" android:layout_marginTop="24dp" android:paddingLeft="24dp" android:paddingRight="24dp" android:layout_height="wrap_content"> <TableRow android:padding="8dp"> <TextView android:id="@+id/total_years" android:layout_weight="1" android:layout_height="wrap_content" android:textSize="16dp" android:textStyle="bold" android:textColor="@color/primary_text" android:gravity="left" android:text="@string/total_years"/> <TextView android:id="@+id/total_years_result" android:layout_weight="1" android:layout_height="wrap_content" android:textSize="16dp" android:textStyle="bold" android:textColor="@color/primary_text" android:gravity="left" android:text="@string/zero"/> </TableRow> <TableRow android:padding="8dp"> <TextView android:id="@+id/total_months" android:layout_weight="1" android:layout_height="wrap_content" android:textSize="16dp" android:textStyle="bold" android:textColor="@color/primary_text" android:gravity="left" android:text="@string/total_months"/> <TextView android:id="@+id/total_months_result" android:layout_weight="1" android:layout_height="wrap_content" android:textSize="16dp" android:textStyle="bold" android:textColor="@color/primary_text" android:gravity="left" android:text="@string/zero"/> </TableRow> <TableRow android:padding="8dp"> <TextView android:id="@+id/total_weeks" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:text="@string/total_months" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> <TextView android:id="@+id/total_weeks_result" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:text="@string/zero" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> </TableRow> <TableRow android:padding="8dp"> <TextView android:id="@+id/total_days" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:text="@string/total_days" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> <TextView android:id="@+id/total_days_result" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:text="@string/zero" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> </TableRow> <TableRow android:padding="8dp"> <TextView android:id="@+id/total_hours" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:text="@string/total_hours" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> <TextView android:id="@+id/total_hours_result" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:text="@string/zero" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> </TableRow> <TableRow android:padding="8dp"> <TextView android:id="@+id/total_minutes" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:text="@string/total_minutes" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> <TextView android:id="@+id/total_minutes_result" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:text="@string/zero" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> </TableRow> <TableRow android:padding="8dp"> <TextView android:id="@+id/total_seconds" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:text="@string/total_seconds" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> <TextView android:id="@+id/total_seconds_result" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:text="@string/zero" android:textColor="@color/primary_text" android:textSize="16dp" android:textStyle="bold" /> </TableRow> </TableLayout> </RelativeLayout> </ScrollView> </RelativeLayout>









package com.inducesmile.completecalculatorapp; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.app.AppCompatActivity; import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.DatePicker; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import org.joda.time.DateTime; import org.joda.time.LocalDate; import org.joda.time.LocalTime; import org.joda.time.Period; import org.joda.time.PeriodType; import org.joda.time.Weeks; import java.util.Calendar; public class AgeCalculatorFragment extends Fragment { private TextView todayDate; private ImageView todayDateSelector; private DatePicker todayDateDialog; private TextView yourBirthdayDate; private ImageView yourBirthdayDateSelector; private int year; private int month; private int day; public static final int DATE_PICKER_FRAGMENT = 1; public static final int SECOND_DATE_PICKER_FRAGMENT = 2; private TextView currentBirthdayYear; private TextView currentBirthdayMonth; private TextView currentBirthdayDay; private TextView nextBirthdayYear; private TextView nextBirthdayMonth; private TextView nextBirthdayDay; private TextView totalYearResult; private TextView totalMonthResult; private TextView totalWeekResult; private TextView totalDayResult; private TextView totalHourResult; private TextView totalMinuteResult; private TextView totalSecondResult; public AgeCalculatorFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_age_calculator, container, false); ((AppCompatActivity) getActivity()).getSupportActionBar().show(); currentBirthdayYear = (TextView)view.findViewById(R.id.years_in_age); currentBirthdayMonth = (TextView)view.findViewById(R.id.months_in_age); currentBirthdayDay = (TextView)view.findViewById(R.id.days_in_age); nextBirthdayYear = (TextView)view.findViewById(R.id.years_in_birthday); nextBirthdayMonth = (TextView)view.findViewById(R.id.months_in_birthday); nextBirthdayDay = (TextView)view.findViewById(R.id.days_in_birthday); totalYearResult = (TextView)view.findViewById(R.id.total_years_result); totalMonthResult = (TextView)view.findViewById(R.id.total_months_result); totalWeekResult = (TextView)view.findViewById(R.id.total_weeks_result); totalDayResult = (TextView)view.findViewById(R.id.total_days_result); totalHourResult = (TextView)view.findViewById(R.id.total_hours_result); totalMinuteResult = (TextView)view.findViewById(R.id.total_minutes_result); totalSecondResult = (TextView)view.findViewById(R.id.total_seconds_result); todayDate = (TextView)view.findViewById(R.id.display_today_date); todayDateSelector = (ImageView)view.findViewById(R.id.set_date_icon); yourBirthdayDate = (TextView)view.findViewById(R.id.display_birthday_date); yourBirthdayDateSelector = (ImageView)view.findViewById(R.id.set_birthday_icon); Button calculateButton = (Button)view.findViewById(R.id.button_calculate); Button clearButton = (Button)view.findViewById(R.id.button_clear); todayDate.setText(setCurrentDateOnView()); yourBirthdayDate.setText(setCurrentDateOnView()); todayDateSelector.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DatePickerFragment datePickerDialog = new DatePickerFragment(); datePickerDialog.setTargetFragment(AgeCalculatorFragment.this, DATE_PICKER_FRAGMENT); datePickerDialog.show(getFragmentManager(), "DATE TODAY"); } }); yourBirthdayDateSelector.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DatePickerFragment datePickerDialog = new DatePickerFragment(); datePickerDialog.setTargetFragment(AgeCalculatorFragment.this, SECOND_DATE_PICKER_FRAGMENT); datePickerDialog.show(getFragmentManager(), "BIRTHDAY TODAY"); } }); calculateButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String getTodayDate = todayDate.getText().toString(); String getBirthdayDate = yourBirthdayDate.getText().toString(); DateTime todayDateTime = convertToDateTime(getTodayDate); DateTime birthdayDateTime = convertToDateTime(getBirthdayDate); displayCurrentBirthday(todayDateTime, birthdayDateTime); displayNextBirthday(todayDateTime, birthdayDateTime); displayAgeAnalysis(todayDateTime, birthdayDateTime); } }); clearButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { currentBirthdayDay.setText(Html.fromHtml("<h4>Days</h4>")); currentBirthdayMonth.setText(Html.fromHtml("<h4>Months</h4>")); currentBirthdayYear.setText(Html.fromHtml("<h4>Years</h4>")); nextBirthdayDay.setText(Html.fromHtml("<h4>Days</h4>")); nextBirthdayMonth.setText(Html.fromHtml("<h4>Months</h4>")); nextBirthdayYear.setText(Html.fromHtml("<h4>Years</h4>")); totalDayResult.setText(""); totalWeekResult.setText(""); totalMonthResult.setText(""); totalYearResult.setText(""); totalHourResult.setText(""); totalMinuteResult.setText(""); totalSecondResult.setText(""); } }); return view; } private void displayAgeAnalysis(DateTime dateToday, DateTime birthdayDate){ Period dateDifferencePeriod = displayBirthdayResult(dateToday, birthdayDate); int getDateInDays = dateDifferencePeriod.getDays(); int getDateInWeeks = Weeks.weeksBetween(new DateTime(birthdayDate), new DateTime(dateToday)).getWeeks();; int getDateInMonths = dateDifferencePeriod.getMonths(); int getDateInYears = dateDifferencePeriod.getYears(); int mDay = getDateInWeeks * 7; int mMonth = getDateInMonths + (getDateInYears * 12); int hours = mDay * 24; int minutes = mDay * 24 * 60; int seconds = mDay * 24 * 60 * 60; totalDayResult.setText(Html.fromHtml(String.valueOf(mDay))); totalWeekResult.setText(Html.fromHtml(String.valueOf(getDateInWeeks))); totalMonthResult.setText(Html.fromHtml(String.valueOf(mMonth))); totalYearResult.setText(Html.fromHtml(String.valueOf(getDateInYears))); totalHourResult.setText(Html.fromHtml(String.valueOf(hours))); totalMinuteResult.setText(Html.fromHtml(String.valueOf(minutes))); totalSecondResult.setText(Html.fromHtml(String.valueOf(seconds))); } private void displayNextBirthday(DateTime dateToday, DateTime birthdayDate){ Calendar mCalendar = Calendar.getInstance(); int year = mCalendar.get(Calendar.YEAR); DateTime nextBirthday = birthdayDate.withYear(year); Toast.makeText(getActivity(), "Birthday " + nextBirthday.getYear(), Toast.LENGTH_LONG).show(); Period dateDifferencePeriod = displayBirthdayResult(nextBirthday, dateToday); int getDateInDays = dateDifferencePeriod.getDays(); int getDateInMonths = dateDifferencePeriod.getMonths(); int getDateInYears = dateDifferencePeriod.getYears(); nextBirthdayDay.setText(Html.fromHtml("<h4>Days</h4>" + getDateInDays)); nextBirthdayMonth.setText(Html.fromHtml("<h4>Months</h4>" + getDateInMonths)); nextBirthdayYear.setText(Html.fromHtml("<h4>Years</h4>" + getDateInYears)); } private void displayCurrentBirthday(DateTime dateToday, DateTime birthdayDate){ Period dateDifferencePeriod = displayBirthdayResult(dateToday, birthdayDate); int getDateInDays = dateDifferencePeriod.getDays(); int getDateInMonths = dateDifferencePeriod.getMonths(); int getDateInYears = dateDifferencePeriod.getYears(); currentBirthdayDay.setText(Html.fromHtml("<h4>Days</h4>" + getDateInDays)); currentBirthdayMonth.setText(Html.fromHtml("<h4>Months</h4>" + getDateInMonths)); currentBirthdayYear.setText(Html.fromHtml("<h4>Years</h4>" + getDateInYears)); } private Period displayBirthdayResult(DateTime dateToday, DateTime birthdayDate){ Period dateDifferencePeriod = new Period(birthdayDate, dateToday, PeriodType.yearMonthDayTime()); return dateDifferencePeriod; } private DateTime convertToDateTime(String stringToConvert){ String[] newStringArray = convertStringToArray(stringToConvert); int year = Integer.parseInt(newStringArray[2].trim()); int day = Integer.parseInt(newStringArray[1].trim()); int month = Integer.parseInt(newStringArray[0].trim()); LocalDate mLocalDate = new LocalDate(year, month, day); DateTime firstDateTime = mLocalDate.toDateTime(LocalTime.fromDateFields(mLocalDate.toDate())); return firstDateTime; } private String[] convertStringToArray(String stringToConvert){ String[] newStringArray = stringToConvert.split("-"); return newStringArray; } public String setCurrentDateOnView() { final Calendar c = Calendar.getInstance(); year = c.get(Calendar.YEAR); month = c.get(Calendar.MONTH); day = c.get(Calendar.DAY_OF_MONTH); StringBuilder displayStringBuilder = new StringBuilder().append(month + 1).append("-").append(day).append("-").append(year).append(" "); return displayStringBuilder.toString(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { //super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { case DATE_PICKER_FRAGMENT: if (resultCode == Activity.RESULT_OK) { Bundle bundle = data.getExtras(); String resultDate = bundle.getString("RETURNED_DATE", "error"); todayDate.setText(resultDate); } break; case SECOND_DATE_PICKER_FRAGMENT: if (resultCode == Activity.RESULT_OK) { Bundle bundle = data.getExtras(); String resultDate = bundle.getString("RETURNED_DATE", "error"); yourBirthdayDate.setText(resultDate); } break; } } }








ADD THE DATEPICKERFRAGMENT CLASS BELOW



import android.app.Activity; import android.app.DatePickerDialog; import android.app.Dialog; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.widget.DatePicker; import java.util.Calendar; public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{ @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); return new DatePickerDialog(getActivity(), this, year, month + 1, day); } @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { int mYear = year; int mMonth = monthOfYear + 1; int mDay = dayOfMonth; String selectedDate = dayOfMonth + " - " + mMonth + " - " + year; //Toast.makeText(getActivity(), "Selected " + selectedDate, Toast.LENGTH_LONG).show(); Intent i = new Intent(); i.putExtra("RETURNED_DATE",selectedDate); getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, i); } }