안드로이드에서 로딩바 만드는법


앱을 만들고있는데 이미지를 불러오는동안 화면이 가만히 있으면 멈춘것같아보일거같아서 이미지가 로딩되고있다는 표시를 띄우고싶은데요 어떻게 하면 좋을까요?

  • 2016년 03월 01일에 작성됨

조회수 597


1 답변


좋아요
0
싫어요
채택취소하기

안드로이드에서는 로딩바를 프로그레스바라고 부르는데요. 커스텀 프로그레스바를 위해 스타일을 정의해줍니다.

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="custom_loading">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowTitleStyle">@null</item>
    <item name="android:windowAnimationStyle">@+android:style/Animation.Dialog</item>
    <item name="android:windowBackground">@+android:color/transparent</item>
    <item name="android:windowNoTitle">true</item>
</style>
</resources>

로딩바를 만들기 위해 클래스를 정의해줍니다.

import android.app.Dialog;
import android.content.Context;
import android.view.ViewGroup.LayoutParams;
import android.widget.ProgressBar;

/**
 * 커스텀로딩 클래스
 * @author YT
 */
public class CLoading{
    private static Dialog m_loadingDialog = null;

    public static void showLoading(Context context) {

        if (m_loadingDialog == null) {    
            //다이얼로그가 없으면 만들고 보이게 하라
            m_loadingDialog = new Dialog(context, R.style.custom_loading);
            //프로그레스를 생성하자
            ProgressBar pb = new ProgressBar(context);
            LayoutParams params = new LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            //프로그래스를 다이얼로그에 포함하자
            m_loadingDialog.setContentView(pb, params);
            m_loadingDialog.setCancelable(false);
            m_loadingDialog.show();    
        } else if(!m_loadingDialog.isShowing()){    
            //다이얼로그가 있는데 HIDE 상태면 보이게 하라            
            m_loadingDialog = null;
            m_loadingDialog = new Dialog(context, R.style.custom_loading);
            ProgressBar pb = new ProgressBar(context);
            LayoutParams params = new LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            m_loadingDialog.setContentView(pb, params);
            m_loadingDialog.setCancelable(false);
            m_loadingDialog.show();
        }

    }
    public static void hideLoading() {
        if (m_loadingDialog != null) {
            if(m_loadingDialog.isShowing()){
                //다이얼로그가 있고 보이는 상태면 안보이게 하라    
                m_loadingDialog.dismiss();
                m_loadingDialog = null;
            }    
        }
    }
}

프로그레스바를 띄울 액티비티에가서

Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    context = this;

    CLoading.showLoading(context);    //show
    //CLoading.hideLoading();        //hide

}

이런식으로 CLoading의 showLoading메소드를 호출해줍니다.

  • 2016년 03월 01일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close