티스토리 뷰

  아주 기본적인 형태의  ProgressBar(프로그래스바)를 사용해 보겠습니다. 사용된 예제는 다음의 예제에서 가져왔습니다.


[안드로이드] AsyncTask를 이용한 Thread 예제


Progress Bar 사용

  간단한 형태를 살펴볼 것이므로 기본으로 주어지는 원형 프로그래스바를 다뤄보겠습니다. 기본적으로 XML에서 프로그래스바를 끌어다가 놓으면 원형 형태를 가진 프로그래스바가 만들어지게 됩니다.



  위치는 문자가 가려지지 않도록 오른쪽 아래에다가 두었습니다. 그리고 바로 실행시키면 코딩 작업을 하지 않아도 다음과 같이 원형의 프로그래스바가 돌고 있는 것을 보실 수 있습니다.



  원형 프로그래스 바는 데이터 처리 퍼센트를 보여주지 않으므로 예제에서는 시작할 때는 프로그래스바를 안 보이게 해두었다가 시작 되면 보이게 해주고 끝나면 다시 안보이게 하는 방식으로 처리하였습니다. AsyncTask 예제를 사용하여 다음과 같이 추가해 주었습니다.


1
2
circle_bar.setVisibility(View.VISIBLE); // onPreExecute 시작에 추가
circle_bar.setVisibility(View.GONE); // onPostExecute 마지막에 추가
cs



  count가 시작되면 돌면서 count가 끝나면 없어지는것을 확인해 보았습니다! 원하시는 목적에 맞춰서 사용하시면 기본 프로그래스바도 충분히 좋게 사용하 실 수 있습니다!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public class MainActivity extends AppCompatActivity {
    Button button;
    TextView text;
    ProgressBar circle_bar;
 
    int count2 = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        button = (Button) findViewById(R.id.button);
        text = (TextView) findViewById(R.id.textView);
        circle_bar = (ProgressBar) findViewById(R.id.progressBar);
        circle_bar.setVisibility(View.GONE);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                CountTask count = new CountTask();
                count.execute();
            }
        });
    }
 
    class CountTask extends AsyncTask<Integer, Integer, Void>{
        @Override
        protected Void doInBackground(Integer... params) {
            for(int i=0; i<1000000000;i++){
                if(i%100000000 == 0){ publishProgress(new Integer(i)); }
            }
            return null;
        }
 
        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
            text.setText(text.getText().toString()+"\n"+values[0].intValue()+"번 count했습니다.");
        }
 
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            circle_bar.setVisibility(View.VISIBLE);
            text.setText(text.getText().toString()+"\n"+"Count를 시작하겠습니다.");
        }
 
        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            text.setText(text.getText().toString()+"\n"+"Count가 끝났습니다.");
            circle_bar.setVisibility(View.GONE);
        }
    }
}
cs


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday