2014-02-11 2 views
-1

진행률 표시 줄이 있으며 숫자 값을 통합하여 일부 콘텐츠 로딩을 표시하고 싶지 않습니다. ProgressBar가 나타나 애니메이션을 적용하고 사라지 길 원합니다.Android 진행률 막대 표시 및 숨기기

제가 사용했을

public void buttonClick(View v){ 
     ProgressBar mProgress=(ProgressBar)findViewById(R.id.my_progress); 
     mProgress.setVisibility(VISIBLE);  //line 1.. 

     //loading data from web... takes time 

     mProgress.setVisibility(INVISIBLE); //line 2.. 
} 

을하지만 코드 두 라인 1 및 라인 2 실행하지만 원하지 않는 나중에 UI 변경을 실행할 때. 단추를 클릭하면 진행률 표시 줄이 나타나야하며 웹에서 데이터를 다운로드하면 진행률 표시 줄이 사라져야합니다.

다른 스레드에서 공개 설정을 시도했지만 다른 스레드에서 UI 변경이 허용되지 않아 작동하지 않았습니다.

답변

1

데이터를 AsyncTask에서 바로 다운로드 할 수 있습니까?

public void buttonClick(View v){ 
    new MyTask(YourActivity.this).execute(); 
} 

:이 코드

private class DownloadData extends AsyncTask<Void, Void, Void>{ 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     mProgress.setVisibility(View.VISIBLE); 
    } 
    @Override 
    protected Void doInBackground(Void... params) { 
     // download your data here 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     mProgress.setVisibility(View.GONE); 
    } 
} 
1

에게 가장 좋은 방법을 넣어 당신은이 같은 작업을 시작할 수 AsyncTask

MyTask.java

class MyTask extends AsyncTask<Void, Void, Void> { 
    ProgressDialog dialog; 
    Context context; 
    MyTask(Context context){ 
     this.context=context; 
    } 
    @Override 
    protected void onPreExecute() { 
     dialog=new ProgressDialog(context); 
     dialog.setMessage("Please wait..."); 
     dialog.setIndeterminate(true); 
     dialog.setCancelable(false); 
     dialog.show(); 
    } 
    @Override 
    protected Void doInBackground(Void... params) { 
     //do your task here 
    } 
    @Override 
    protected void onPostExecute(Void result) { 
     if(dialog.isShowing()){ 
      dialog.dismiss(); 
     } 
    } 
} 

를 사용하여 구현 AsyncTask acc을 수정할 수 있습니다. ordingly 결과를 검색 할 수 있습니다.

희망이 있습니다. :)