package com.materialdoc.ui.activity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.widget.ProgressBar; import com.materialdoc.R; import java.util.Random; public class LinearProgressActivity extends AppCompatActivity { private static final int PROGRESS_DELAY = 100; private static final int MAX_PROGRESS = 100; private ProgressBar mDeterminateProgress; private ProgressBar mDeterminateStyledProgress; private ProgressBar mBufferedProgress; private ProgressBar mBufferedStyledProgress; private ProgressBar mMultiProgress; private ProgressBar mMultiStyledProgress; private Handler mHandler; private int progress; private int secondaryProgress; public static void start(@NonNull Activity activity) { Intent intent = new Intent(activity, LinearProgressActivity.class); activity.startActivity(intent); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.ac_linear_progress); initViews(); fillProgressBars(); } @Override protected void onDestroy() { mHandler.removeCallbacksAndMessages(null); super.onDestroy(); } private void initViews() { mHandler = new Handler(); mDeterminateProgress = (ProgressBar) findViewById(R.id.determinateProgress); mDeterminateStyledProgress = (ProgressBar) findViewById(R.id.determinateStyledProgress); mBufferedProgress = (ProgressBar) findViewById(R.id.bufferedProgress); mBufferedStyledProgress = (ProgressBar) findViewById(R.id.bufferedStyledProgress); mMultiProgress = (ProgressBar) findViewById(R.id.multiProgress); mMultiStyledProgress = (ProgressBar) findViewById(R.id.multiStyledProgress); } private void fillProgressBars() { mHandler.postDelayed(new Runnable() { @Override public void run() { int newProgress = getNewProgress(); progress += newProgress; secondaryProgress += (newProgress + 2); if (progress > 100) { progress = 100; } if (secondaryProgress > 100) { secondaryProgress = 100; } mDeterminateProgress.setProgress(progress); mDeterminateStyledProgress.setProgress(progress); mBufferedProgress.setProgress(progress); mBufferedStyledProgress.setProgress(progress); mMultiProgress.setProgress(progress); mMultiStyledProgress.setProgress(progress); if (secondaryProgress <= MAX_PROGRESS) { mBufferedProgress.setSecondaryProgress(secondaryProgress); mBufferedStyledProgress.setSecondaryProgress(secondaryProgress); } if (progress <= MAX_PROGRESS) { fillProgressBars(); } else { mMultiProgress.setIndeterminate(true); mMultiStyledProgress.setIndeterminate(true); } } }, PROGRESS_DELAY); } private int getNewProgress() { Random random = new Random(); return random.nextInt(5); } }