public abstract class BaseActivity extends AppCompatActivity {

protected ProgressDialog mProgressDialog = null;

protected abstract Context getContext();

/**
* 프로그래스를 보여준다.
*/
public void showProgressDialog() {
if (mProgressDialog == null) {
if (Build.VERSION_CODES.KITKAT < Build.VERSION.SDK_INT) {

//             R.style.ProgressDialogStyle은 커스텀으로 정의한 스타일임
mProgressDialog = new ProgressDialog(getNowContext(), R.style.ProgressDialogStyle);

} else {
mProgressDialog = new ProgressDialog(getNowContext());
}
mProgressDialog.setMessage(getString(R.string.progress_message));
mProgressDialog.setIndeterminate(true);
mProgressDialog.setCancelable(false);
}
mProgressDialog.show();
}

/**
* 프로그래스를 숨긴다.
*/
public void hideProgressDialog() {
if (mProgressDialog != null && mProgressDialog.isShowing()) {
mProgressDialog.dismiss();
}
}

}


R.style.ProgressDialogStyle

<style name="ProgressDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="android:layout_centerVertical">true</item>
<item name="android:layout_centerHorizontal">true</item>
<item name="colorAccent">@color/colorPrimary</item>
</style>


사용 할 때

private class DownloadTask extends AsyncTask{


@Override
protected void onPreExecute() {
showProgressDialog(); // 작업 시작


//작업 준비 코드 작성
super.onPreExecute();
}


@Override
protected Object doInBackground(Object[] params) {
//작업 중
return null;
}

@Override
protected void onPostExecute(Object o) {
//작업 끝 코드 작성

hideProgressDialog(); // 작업 끝
super.onPostExecute(o);
}
}

 이런 느낌으로 사용하시면 됩니다.

728x90
반응형

+ Recent posts