728x90
반응형
이미지가 변화하며 로딩을 알리는 프로그레스바를 제작 해보려고 합니다.
우선
res - values - strings에 아래 한줄 추가해주세요.
나중에 이 수치를 올리시면 느려지고 줄일수록 빨라집니다. (프로그레스바의 속도)
<string name="progressbar_speed">400</string>
그리고
CustomProgress 클래스를 하나 만들겠습니다.
import android.app.Dialog;
import android.content.Context;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.ColorDrawable;
import android.view.Window;
import android.widget.ImageView;
public class CustomProgress extends Dialog {
Context mContext;
ImageView imageView;
AnimationDrawable animationDrawable;
public CustomProgress(Context activity) {
super(activity);
mContext = activity;
InitProgress();
}
public void InitProgress(){
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
setContentView(R.layout.custom_image);
imageView = findViewById(R.id.progresss);
imageView.setBackgroundResource(R.drawable.progressbar_image);
animationDrawable = (AnimationDrawable)imageView.getBackground();
animationDrawable.start();
}
}
그다음에 custom_image.xml을 만들겠습니다.
레이아웃 입니당.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/progresss"
android:layout_width="100dp"
android:layout_height="100dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
그후에 drawable 폴더 안에
progressbar_image.xml를 생성할게여.
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/ic_launcher_background"
android:duration="@string/progressbar_speed" />
<item
android:drawable="@drawable/abc_vector_test"
android:duration="@string/progressbar_speed" />
<item
android:drawable="@drawable/ic_launcher_foreground"
android:duration="@string/progressbar_speed" />
</animation-list>
저는 기본 주어지는 이미지로 테스트를 진행했습니다.
그리고 메인소스를 볼게요.
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
CustomProgress customProgress;
Button start;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = findViewById(R.id.start);
customProgress = new CustomProgress(MainActivity.this);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// CustomProgress Start
customProgress.show();
//서브화면으로 이동
// Intent intent = new Intent(getApplicationContext(),SubActivity.class);
// startActivity(intent);
start.postDelayed(new Runnable() {
@Override
public void run() {
//CustomProgress Close
customProgress.dismiss();
}
}, 5000);
}
});
}
@Override
protected void onResume() {
super.onResume();
/**
* CustomProgress Close
* 다시 화면에 들어오면 프로그레스바를 종료.
**/
customProgress.dismiss();
}
}
5초동안 프로그레스바를 보여줍니다.
여기서 엑티비티 전환하는 과정에서 보고싶으시면
위에 인텐트 주석을 풀어서 SubActivity 화면을 하나 생성하셔서 테스트 해보시면 될것같습니다.
화면이 넘어가면 프로그레스바는 자동으로 없어지지만, 다시 메인으로 돌아오면 프로그레스바가 돌고있기 때문에
onResume 생명주기에서 프로그레스바 종료를 했습니다.
728x90
반응형
'Android' 카테고리의 다른 글
안드로이드 AppCompatActivity 상속 관련 에러 (0) | 2021.03.26 |
---|---|
안드로이드 WebView로 구현된 프로그램이 강제종료되는 이슈 (0) | 2021.03.23 |
안드로이드 CheckBox(체크박스) 커스텀하기 (0) | 2021.01.06 |
안드로이드 GIF 이미지를 ImageView(이미지뷰)에 띄우기 (0) | 2021.01.04 |
안드로이드 raw폴더 생성하기. (0) | 2021.01.04 |
댓글