728x90
안녕하세요
오늘은 원형 프로그레스바, 막대형 프로그레스바 화면을 만들어 보겠습니다.
버튼에 따라 로딩이 진행되는 화면이 나타납니다.
*결과
먼저 아래 스틱코드 링크에서 즐겨찾기 추가를 해주세요
https://stickode.com/detail.html?no=2522
1. MainActivity.java
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private ProgressDialog pBar;
private Button wheel,bar;
private ThreadEx threadEx;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wheel = (Button)findViewById(R.id.wheel);
bar = (Button)findViewById(R.id.bar);
wheel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//프로그래스바는 기본적으로 원형을 제공한다.
pBar = ProgressDialog.show(MainActivity.this//Context
,"title"//타이틀
,"Loading..."//메세지
);
//도중 취소 여부
pBar.setCancelable(false);
threadEx = new ThreadEx(handler);
threadEx.start();//Thread 실행
}
});
bar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pBar = new ProgressDialog(MainActivity.this);
//수평 프로그레스바로 설정
pBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//메세지 설정
pBar.setMessage("Loading...");
//중도 취소 여부
pBar.setCancelable(true);
pBar.show();
threadEx = new ThreadEx(handler);
threadEx.start();//Thread 실행
}
});
}
Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
int value = msg.getData().getInt("value");
pBar.setProgress(value);
super.handleMessage(msg);
pBar.setMessage("Loding..." + value + "%");
if(value >= 100){
pBar.dismiss();
threadEx.setCheck(false);
}
}
};
}
2. ThreadEX.java
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
public class ThreadEx extends Thread{
private Handler handler; //쓰레드의 값등을 제어하는 클래스...
private boolean check = true;
//생성자
public ThreadEx(Handler handler){
this.handler = handler;
}
public void setCheck(boolean check){
this.check = check;
}
//스레드가 해야할일들을 정의한 메소드..
@Override
public void run() {
int value = 0;
while(check){
try{
Thread.sleep(100); // 내가 지정한 시간 만큼 멈추어 주는 메소드...
}catch (InterruptedException e){
e.printStackTrace();
}
Message msg = handler.obtainMessage();
Bundle bundle = new Bundle();
bundle.putInt("value",value);
msg.setData(bundle);
//핸들러 호출
handler.sendMessage(msg);
value++;
}
super.run();
}
}
3. activity_main.xml
'안드로이드 자바' 카테고리의 다른 글
[JAVA][Android] 스레드로 애니메이션 만들기 (0) | 2021.10.16 |
---|---|
[JAVA][Android] Option Menu 만들기 (0) | 2021.10.15 |
[JAVA][Android] 키보드에 검색버튼 구현하기 (0) | 2021.10.14 |
[JAVA][Android] Logger 라이브러리 사용하기 (0) | 2021.10.13 |
[JAVA][Android] 안드로이드 LocalDateTime 사용법 2 (비교, 기간 구하기) (0) | 2021.10.12 |