Android Timer Circular Progress Bar countdown timer does not match timer

Hi, can someone help me in my small project, please, I am following this tutorial and I got to the part where I insert 1 minute into EditText. The progress bar works fine 1 Progress per second, but when I add more than 1 minute to the EditText the Progress indicator does not work. This is not coming, please help?

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#086A87"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal" android:padding="10dp" > <EditText android:id="@+id/edtTimerValue" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:hint="minutes" android:inputType="phone" /> <Button android:id="@+id/btnStartTime" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:layout_weight="2" android:gravity="center" android:text="Start Timer" android:background="@drawable/custombuttongreen" android:textColor="#fff"/> <Button android:id="@+id/btnStopTime" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:layout_weight="2" android:gravity="center" android:text="Stop Timer" android:visibility="gone" android:background="@drawable/custombuttongreen" android:textColor="#fff"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" > </LinearLayout> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <ProgressBar android:id="@+id/progressbar" android:layout_width="350dip" android:layout_height="350dip" android:indeterminate="false" android:progressDrawable="@drawable/circle" android:background="@drawable/circle_shape" style="?android:attr/progressBarStyleHorizontal" android:max="60" android:progress="0" /> <TextView android:id="@+id/tvTimeCount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="00:00" android:textColor="#fff" android:textSize="60dip"/> </RelativeLayout> 

MainActivity.java

 package com.tag.countdowntimer; import com.tag.countdowntimer.R.drawable; import android.R.color; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.os.CountDownTimer; import android.view.View; import android.view.View.OnClickListener; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { int i=-1; ProgressBar mProgressBar; private Button buttonStartTime, buttonStopTime; private EditText edtTimerValue; private TextView textViewShowTime; // will show the time private CountDownTimer countDownTimer; // built in android class // CountDownTimer private long totalTimeCountInMilliseconds; // total count down time in // milliseconds private long timeBlinkInMilliseconds; // start time of start blinking private boolean blink; // controls the blinking .. on and off /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); buttonStartTime = (Button) findViewById(R.id.btnStartTime); buttonStopTime = (Button) findViewById(R.id.btnStopTime); textViewShowTime = (TextView) findViewById(R.id.tvTimeCount); edtTimerValue = (EditText) findViewById(R.id.edtTimerValue); buttonStartTime.setOnClickListener(this); buttonStopTime.setOnClickListener(this); mProgressBar = (ProgressBar) findViewById(R.id.progressbar); } @Override public void onClick(View v) { if (v.getId() == R.id.btnStartTime) { textViewShowTime.setTextAppearance(getApplicationContext(), R.style.normalText); setTimer(); //Hides the Keyboard InputMethodManager imm = (InputMethodManager)getSystemService( Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(edtTimerValue.getWindowToken(), 0); buttonStopTime.setVisibility(View.VISIBLE); buttonStartTime.setVisibility(View.GONE); edtTimerValue.setVisibility(View.GONE); edtTimerValue.setText(""); //textViewShowTime.setTextColor(color.white); //textViewShowTime.getContext(); startTimer(); } else if (v.getId() == R.id.btnStopTime) { countDownTimer.cancel(); buttonStartTime.setVisibility(View.VISIBLE); buttonStopTime.setVisibility(View.GONE); edtTimerValue.setVisibility(View.VISIBLE); } } private void setTimer() { int time = 0; if (!edtTimerValue.getText().toString().equals("")) { time = Integer.parseInt(edtTimerValue.getText().toString()); } else Toast.makeText(MainActivity.this, "Please Enter Minutes...", Toast.LENGTH_LONG).show(); totalTimeCountInMilliseconds = 60 * time * 1000; timeBlinkInMilliseconds = 30 * 1000; } private void startTimer() { countDownTimer = new CountDownTimer(totalTimeCountInMilliseconds, 500) { // 500 means, onTick function will be called at every 500 // milliseconds @Override public void onTick(long leftTimeInMilliseconds) { long seconds = leftTimeInMilliseconds / 1000; //i++; //Setting the Progress Bar to decrease wih the timer mProgressBar.setProgress((int) (leftTimeInMilliseconds / 1000)); textViewShowTime.setTextAppearance(getApplicationContext(), R.style.normalColor); if (leftTimeInMilliseconds < timeBlinkInMilliseconds) { textViewShowTime.setTextAppearance(getApplicationContext(), R.style.blinkText); // change the style of the textview .. giving a red // alert style if (blink) { textViewShowTime.setVisibility(View.VISIBLE); // if blink is true, textview will be visible } else { textViewShowTime.setVisibility(View.INVISIBLE); } blink = !blink; // toggle the value of blink } textViewShowTime.setText(String.format("%02d", seconds / 60) + ":" + String.format("%02d", seconds % 60)); // format the textview to show the easily readable format } @Override public void onFinish() { // this function will be called when the timecount is finished textViewShowTime.setText("Time up!"); textViewShowTime.setVisibility(View.VISIBLE); buttonStartTime.setVisibility(View.VISIBLE); buttonStopTime.setVisibility(View.GONE); edtTimerValue.setVisibility(View.VISIBLE); } }.start(); } } 

Normal timer status

enter image description here

At the entrance in 1 minute

enter image description here

When I entered 3 minutes

enter image description here

Progress bar not counting

+7
android timer progress countdown
source share
1 answer

In your main.xml for ProgressBar you specified the maximum value as 60. Thus, the progress bar takes the maximum value as 60, and your progress bar starts to decrease from 60 seconds onwards.

Instead of working correctly with the Progress line, in your setTimer () method, write the following line.

 mProgressBar.setMax(60*time); 
+3
source share

All Articles