Join us on the livestream at Android Dev Summit on 7-8 November 2018, starting at 10AM PDT!

CircularProgressLayout

public class CircularProgressLayout
extends FrameLayout

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.FrameLayout
         ↳ androidx.wear.widget.CircularProgressLayout


CircularProgressLayout adds a circular countdown timer behind the view it contains, typically used to automatically confirm an operation after a short delay has elapsed.

The developer can specify a countdown interval via setTotalTime(long) and a listener via setOnTimerFinishedListener(OnTimerFinishedListener) to be called when the time has elapsed after startTimer() has been called. Tap action can be received via View.setOnClickListener(OnClickListener) and can be used to cancel the timer via stopTimer() method.

Alternatively, this layout can be used to show indeterminate progress by calling setIndeterminate(boolean) method.

Summary

Nested classes

interface CircularProgressLayout.OnTimerFinishedListener

Interface to implement for listening to onTimerFinished(CircularProgressLayout) event. 

Inherited constants

Inherited fields

Public constructors

CircularProgressLayout(Context context)
CircularProgressLayout(Context context, AttributeSet attrs)
CircularProgressLayout(Context context, AttributeSet attrs, int defStyleAttr)
CircularProgressLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

Public methods

int getBackgroundColor()

Returns the background color of the CircularProgressDrawable.

int[] getColorSchemeColors()

Returns the color scheme colors of the progress drawable

CircularProgressLayout.OnTimerFinishedListener getOnTimerFinishedListener()

Returns the CircularProgressLayout.OnTimerFinishedListener that is registered to this layout.

CircularProgressDrawable getProgressDrawable()

Returns the CircularProgressDrawable used as background of this layout.

float getStartingRotation()

Returns the starting rotation of the progress drawable.

float getStrokeWidth()

Returns the stroke width of the progress drawable in pixels.

long getTotalTime()

Returns the total time in milliseconds for the timer to countdown to.

boolean isIndeterminate()

Returns if progress is showing as an indeterminate spinner.

boolean isTimerRunning()

Returns if the timer is running.

void setBackgroundColor(int color)

Sets the background color of the CircularProgressDrawable, which is drawn as a circle inside the progress drawable.

void setColorSchemeColors(int... colors)

Sets the color scheme colors of the progress drawable, which is equivalent to calling CircularProgressDrawable.setColorSchemeColors(int) method on background drawable of this layout.

void setIndeterminate(boolean indeterminate)

Sets if progress should be shown as an indeterminate spinner.

void setOnTimerFinishedListener(CircularProgressLayout.OnTimerFinishedListener listener)

Sets the CircularProgressLayout.OnTimerFinishedListener to be notified when timer countdown is finished.

void setStartingRotation(float rotation)

Sets the starting rotation for the progress drawable to start from.

void setStrokeWidth(float strokeWidth)

Sets the stroke width of the progress drawable in pixels.

void setTotalTime(long totalTime)

Sets the total time in milliseconds for the timer to countdown to.

void startTimer()

Starts the timer countdown.

void stopTimer()

Stops the timer countdown.

Protected methods

void onDetachedFromWindow()
void onLayout(boolean changed, int left, int top, int right, int bottom)

Inherited methods

Public constructors

CircularProgressLayout

public CircularProgressLayout (Context context)

Parameters
context Context

CircularProgressLayout

public CircularProgressLayout (Context context, 
                AttributeSet attrs)

Parameters
context Context

attrs AttributeSet

CircularProgressLayout

public CircularProgressLayout (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Parameters
context Context

attrs AttributeSet

defStyleAttr int

CircularProgressLayout

public CircularProgressLayout (Context context, 
                AttributeSet attrs, 
                int defStyleAttr, 
                int defStyleRes)

Parameters
context Context

attrs AttributeSet

defStyleAttr int

defStyleRes int

Public methods

getBackgroundColor

public int getBackgroundColor ()

Returns the background color of the CircularProgressDrawable.

Returns
int an ARGB color

getColorSchemeColors

public int[] getColorSchemeColors ()

Returns the color scheme colors of the progress drawable

Returns
int[] list of ARGB colors

getOnTimerFinishedListener

public CircularProgressLayout.OnTimerFinishedListener getOnTimerFinishedListener ()

Returns the CircularProgressLayout.OnTimerFinishedListener that is registered to this layout.

Returns
CircularProgressLayout.OnTimerFinishedListener registered CircularProgressLayout.OnTimerFinishedListener

getProgressDrawable

public CircularProgressDrawable getProgressDrawable ()

Returns the CircularProgressDrawable used as background of this layout.

Returns
CircularProgressDrawable CircularProgressDrawable

getStartingRotation

public float getStartingRotation ()

Returns the starting rotation of the progress drawable.

Returns
float starting rotation from [0..1]

getStrokeWidth

public float getStrokeWidth ()

Returns the stroke width of the progress drawable in pixels.

Returns
float stroke width in pixels

getTotalTime

public long getTotalTime ()

Returns the total time in milliseconds for the timer to countdown to.

Returns
long total time in milliseconds

isIndeterminate

public boolean isIndeterminate ()

Returns if progress is showing as an indeterminate spinner.

Returns
boolean true if indeterminate spinner is shown, false otherwise.

isTimerRunning

public boolean isTimerRunning ()

Returns if the timer is running.

Returns
boolean true if the timer is running, false otherwise

setBackgroundColor

public void setBackgroundColor (int color)

Sets the background color of the CircularProgressDrawable, which is drawn as a circle inside the progress drawable. Colors are in ARGB format defined in Color.

Parameters
color int: an ARGB color

setColorSchemeColors

public void setColorSchemeColors (int... colors)

Sets the color scheme colors of the progress drawable, which is equivalent to calling CircularProgressDrawable.setColorSchemeColors(int) method on background drawable of this layout.

Parameters
colors int: list of ARGB colors

setIndeterminate

public void setIndeterminate (boolean indeterminate)

Sets if progress should be shown as an indeterminate spinner.

Parameters
indeterminate boolean: true if indeterminate spinner should be shown, false otherwise.

setOnTimerFinishedListener

public void setOnTimerFinishedListener (CircularProgressLayout.OnTimerFinishedListener listener)

Sets the CircularProgressLayout.OnTimerFinishedListener to be notified when timer countdown is finished.

Parameters
listener CircularProgressLayout.OnTimerFinishedListener: CircularProgressLayout.OnTimerFinishedListener to be notified, or null to clear

setStartingRotation

public void setStartingRotation (float rotation)

Sets the starting rotation for the progress drawable to start from. Default starting rotation is 0.75 and it corresponds clockwise geometric 270 degrees (12 o'clock on a watch)

Parameters
rotation float: starting rotation from [0..1]

setStrokeWidth

public void setStrokeWidth (float strokeWidth)

Sets the stroke width of the progress drawable in pixels.

Parameters
strokeWidth float: stroke width in pixels

setTotalTime

public void setTotalTime (long totalTime)

Sets the total time in milliseconds for the timer to countdown to. Calling this method while the timer is already running will not change the duration of the current timer.

Parameters
totalTime long: total time in milliseconds

startTimer

public void startTimer ()

Starts the timer countdown. Once the countdown is finished, if there is an CircularProgressLayout.OnTimerFinishedListener registered by setOnTimerFinishedListener(OnTimerFinishedListener) method, its CircularProgressLayout.OnTimerFinishedListener.onTimerFinished(CircularProgressLayout) method is called. If this method is called while there is already a running timer, it will restart the timer.

stopTimer

public void stopTimer ()

Stops the timer countdown. If there is no timer running, calling this method will not do anything.

Protected methods

onDetachedFromWindow

protected void onDetachedFromWindow ()

onLayout

protected void onLayout (boolean changed, 
                int left, 
                int top, 
                int right, 
                int bottom)

Parameters
changed boolean

left int

top int

right int

bottom int