package com.yokmama.learn10.chapter07.lesson30.fragment; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; import java.util.Timer; import java.util.TimerTask; import com.yokmama.learn10.chapter07.lesson30.R; /** * A simple {@link Fragment} subclass. */ public class ProgressBarFragment extends Fragment { private static final int PROGRESS_MAX = 100; private ProgressBar mProgressBar1; private ProgressBar mProgressBar2; private ProgressBar mProgressBar3; private ProgressBar mProgressBar4; private Timer mTimer; private int mCounter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_progress_bar, container, false); //ProgressBarのインスタンスを取得 mProgressBar1 = (ProgressBar) rootView.findViewById(R.id.progressBar1); mProgressBar2 = (ProgressBar) rootView.findViewById(R.id.progressBar2); mProgressBar3 = (ProgressBar) rootView.findViewById(R.id.progressBar3); mProgressBar4 = (ProgressBar) rootView.findViewById(R.id.progressBar4); //ProgressBarの最大値をセット mProgressBar1.setMax(PROGRESS_MAX); mProgressBar2.setMax(PROGRESS_MAX); mProgressBar3.setMax(PROGRESS_MAX); mProgressBar4.setMax(PROGRESS_MAX); return rootView; } @Override public void onPause() { super.onPause(); //ProgressBarの進捗を開始. stopProgress(); } @Override public void onResume() { super.onResume(); //ProgressBarの進捗を停止. startProgress(); } /** * ProgressBarの進捗を進める. */ private void startProgress() { if (mTimer == null) { mTimer = new Timer(true); mTimer.schedule(new TimerTask() { @Override public void run() { mCounter++; if (mCounter > PROGRESS_MAX) { mCounter = 0; } updateProgress(); } }, 0, 50); } } /** * ProgressBarの進捗を停止. */ private void stopProgress() { if (mTimer != null) { mTimer.cancel(); mTimer = null; } } /** * ProgressBarを更新. */ private void updateProgress() { int secondary = (mCounter * 2) % 100; mProgressBar1.setProgress(mCounter); mProgressBar2.setProgress(mCounter); mProgressBar3.setProgress(mCounter); mProgressBar4.setProgress(mCounter); mProgressBar1.setSecondaryProgress(secondary); mProgressBar2.setSecondaryProgress(secondary); mProgressBar3.setSecondaryProgress(secondary); mProgressBar4.setSecondaryProgress(secondary); } }