본문 바로가기
안드로이드 자바

[Android][Java] 원형 로딩바 만들기

by teamnova 2023. 2. 8.
728x90

안녕하세요.

오늘은 ProgressBar를 이용해 원형 로딩바를 만들어 키고 끄는것 까지 해보겠습니다.

 

먼제 xml 파일입니다.(progressdialog)

<?xml version="1.0" encoding="utf-8"?>
<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_gravity="center"
    android:alpha="0.8">
</ProgressBar>

그리고 ProgressDialog 클래스를 만들어 줍니다.

public class ProgressDialog {
    private Context context;
    private Dialog dialog;

    public ProgressDialog(Context context){this.context = context;}

    public void showDialog(){
        dialog = new Dialog(context);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.progressdialog);
        dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
        dialog.getWindow().setDimAmount(0.4f);
        dialog.setCancelable(false);
        WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
        params.width = WindowManager.LayoutParams.MATCH_PARENT;
        params.height = WindowManager.LayoutParams.MATCH_PARENT;
        dialog.getWindow().setAttributes(params);
        dialog.show();

    }
    public void closeDialog() {
        dialog.dismiss();
    }
}

xml 파일과 클래스를 만들었으면 이제 액티비티에서 로딩바를 키고 끌 수 있습니다. 핸들러를 사용해 2초동안 로딩바가 보이게 하겠습니다.

public class MainActivity extends AppCompatActivity {
    ProgressDialog progressDialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        progressDialog = new ProgressDialog(this);

        progressDialog.showDialog();

        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                progressDialog.closeDialog();
            }
        },2000);
    }

}

ProgressDialog를 객체화 시키고 showDialog와 closeDialog 메서드를 통해 원하는 곳에 로딩바를 키고 끄실 수 있습니다.