2014-03-04 5 views
1

몇 가지 일을하면서 원형 진행률 표시 줄을 설정해야합니다. 내가 이미 했어 : 내 OnCreate()물건을 진행하는 동안 진행률 막대를 구현하는 방법은 무엇입니까?

progressBar = (ProgressBar) findViewById(R.id.progressBar1); 

을하고 일을 한 후 progressBar.setVisibility(View.Visible)View.Gone라고하지만, 진행 막대가 표시되지 않습니다.

progressBar.setVisibility(View.VISIBLE); 
thumbnailAux = doThings(thumbnail); 
image.setImageBitmap(thumbnailAux); 
progressBar.setVisibility(View.GONE); 

doThings 메서드 실행을 완료하는 데 몇 초가 걸립니다. 도와주세요 !!

+0

이것은 작동하지 않습니다. 백그라운드 스레드를 사용하고 주 스레드에서 사용자 인터페이스 업데이트를 정기적으로 게시해야합니다. 문서에서 AsyncTask를 살펴보십시오. – Merlevede

+0

코드를 게시 할 수 있습니까? –

+1

AsyncTask에서 진행률 대화 상자를 사용하는 것이 더 좋습니다. –

답변

2

Android에는 ProgressDialog라는 클래스의 진행률 막대에 대한 미리 정의 된 클래스가 있습니다. 그것은 다음과 같습니다

enter image description here

당신은 당신의에서 onCreate (이 코드를 추가)하고 이런 식으로해서 ProgressDialog의 상태를 설정할 수 있습니다

ProgressDialog progress = new ProgressDialog(this); 

은 또한 배경 스레드이 다음 코드를 추가를 .

private class ProgressThread extends Thread { 

    private ProgressDialog progress; 

    public ProgressThread(Context context, ProgressDialog progress) { 
     progress.setMessage("Downloading Music :) "); 
     progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     progress.setIndeterminate(true); 
    } 

    public void run() { 
     // update progressbar here 
    } 
} 

자세한 내용은이 site 그것에 대해 전체 애플리케이션 데모를 가지고 안드로이드 API 문서를 here

을 확인할 수 있습니다, 당신은 그것을 확인 할 수 있습니다.

1

이 경우에는 AsyncTask를 적용 할 수 있습니다.

자세한 내용은 link에서 참조 할 수 있습니다.

onPreExecute 메서드에 progressDialog를 추가 한 다음 onPostExecute 메서드에서 닫을 수 있습니다.

// Async Task to access the web 
    private class YourTask extends AsyncTask<String, Void, String> { 
      ProgressDialog myPd_bar; 
     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      myPd_bar=new ProgressDialog(class.this); 
      myPd_bar.setMessage("Loading...."); 
      myPd_bar.setTitle(Title); 
      myPd_bar.show(); 
      super.onPreExecute(); 
     } 

     @Override 
     protected String doInBackground(String... params) { 

      //Things should do in, until progress bar close 
      return null; 

     } 

     @Override 
     protected void onPostExecute(String result) { 

      myPd_bar.dismiss(); 
     } 
    }// end async task