I.K.Picture & IT Info.

[ProgressBar] HttpAsyncTask 통신시 커스텀 프로그래스바 삽입 방법 본문

Development/Java/Android

[ProgressBar] HttpAsyncTask 통신시 커스텀 프로그래스바 삽입 방법

helpful-intruder 2014. 8. 15. 17:05
반응형

자~! 오늘은!?   


 안드로이드에서 통신을 하거나 데이터를 로딩 할 때 사용되는 ProgressBar를...


살짝(?) 손봐서 사용하는 방법에 대해 포스팅을 하려고 합니다 ^^


결과물은 아래와 같이 실행이 될꺼예요~  (가운데 원을 보세요)





자 그럼 시작해보죠 ^^?


크게 세가지로 나눌 수 있습니다.


1. 에니메이션 XML 생성

2. Layout XML 생성

3. Java 소스코드 삽입


자 그럼, 첫번째인 에니메이션 XML 생성부터 해보겠습니다.


1. res 폴더 안에 anim 폴더가 없는 경우 생성을 해줍니다. 


2. 생성 후 XML 파일을 만들어주면되는데 이 때 아래와 같이 작성을 해주면 됩니다. (파일이름 : progress_style.xml) (res->anim->progress_style.xml)


  
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:pivotX="50%"
    android:pivotY="50%"
    android:fromDegrees="0"
    android:toDegrees="360">
    <shape android:shape="ring"
        android:innerRadiusRatio="3"
        android:thicknessRatio="8"
        android:useLevel="false" >
        <gradient android:type="sweep"
            android:useLevel="false"
            android:startColor="#FFFFFF"
            android:centerColor="#33b5e5"
            android:centerY="0.50"
            android:endColor="#33b5e5"/>
    </shape>
</rotate>


여기서 centerColor과 endColor을 변경하면 원하는 색으로 프로그래스 바를 변경 할 수 있습니다.

또 투명도 또한 줄 수 있습니다 (#00FFFFFF) <- 투명도 적용


두 번째인 Layout XML 입니다.~

Layout XML에서는 다른거 없이 ProgressBar를 만들어주는 것이 되겠습니다.


1. res 폴더 -> layout -> custom_progress.xml 이라는 파일을 생성합니다.


2. 아래와 같이 작성을 해줍니다. 이때 indeterminateDrawable을 첫 번째에서 생성된 xml을 지정해줘야합니다. 


  
<?xml version="1.0" encoding="utf-8"?>
<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:indeterminateDrawable="@anim/progress_style"> 
</ProgressBar>



그럼 이제 마지막으로 Java코드에 삽입하는 부분이 되겠습니다.


여기에서는 HttpAsyncTask에 삽입하는 부분을 예제로 보여드리도록 하겠습니다.


HttpAsyncTask 에는 onPreExecute 함수와 onPostExecute 함수가 존재합니다 

(onProgressUpdate도 있지만 여기에서는 진행율을 나타내지 않기 때문에 사용하지 않음)


1. onPreExecute 함수에 ProgressDialog를 생성 후 레이아웃으로 만든 custom_progress를 설정

(ProgressDialog 객체를 생성할 때, Activity의 객체를 인자로 넣어줘야합니다)

  
        private ProgressDialog pd;
	@Override
	protected void onPreExecute(){
		pd = new ProgressDialog(context);
		pd.setIndeterminate(true); 
		pd.setCancelable(false);
		pd.show(); 
		pd.setContentView(R.layout.custom_progress);
	}


2. onPostExecute 함수에 ProgressDialog를 제거 

  
	@Override
	protected void onPostExecute(String str){ 
		pd.dismiss();   
	}






자 그럼 다들 안드로이드 앱 만들 때 도움이 되셨으면 좋겠습니다 ^^

반응형
Comments