Android

ProgressDialog는 더 이상 사용되지 않는다. 프로그레스다이얼로그를 대신할 ProgressBar를 사용해보자.

ProgressDialog가 deprecated되었다는 것을 오늘 알게되었다.

API level 26에서 부터 더 이상 사용되지 않고 있었는데

내가 구현하는 앱들에서는 거의 사용할 일이 없다보니 모르고 있었다.

 

하지만 9월 30일부터 시행되는 더 나은 광고 경험 정책을 위반하지 않기 위해

처리하는 방안을 생각하던 중 프로그레스다이얼로그를 사용해야겠다는 생각을 하게 되면서

코드상에 가운데 줄이 그어져서 알게 되었다.

 

모바일 앱] 더 나은 광고 경험(Better Ads Experiences) 정책 위반 미리 대응 방법

 

[모바일 앱] 더 나은 광고 경험(Better Ads Experiences) 정책 위반 미리 대응 방법

2022년 9월 30일까지 처리해야하는 정책이 있다. 바로 더 나은 광고 경험 정책인데 자세한 내용은 다음과 같다. 더 나은 광고 경험(Better Ads Experiences) 개발자는 사용자가 Google Play 앱을 사용할

playground.naragara.com

 

ProgressBar 생성 방법

1. 루트 레이아웃 id를 찾은 후 변수를 선언해준다. 레이아웃은 본인이 선언한 타입의 레이아웃 클래스를 사용하면 된다.

<activity_main.xml>

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/shrine_pink">
    <RelativeLayout
        android:id="@+id/content_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </RelativeLayout>
</RelativeLayout>
    ProgressBar progressBar = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RelativeLayout layout = findViewById(R.id.mainLayout);
		....생략

 

2. 프로그레스바 코드를 추가한다.

progressBar = new ProgressBar(youractivity.this, null, android.R.attr.progressBarStyleLarge);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(300, 300);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
layout.addView(progressBar, params);

//메인액티비티에서 선언하는 경우 홈 화면에 오자마자 노출됨으로 안보이게 처리해준다
progressBar.setVisibility(View.GONE);

3. 프로그레스발로 보이기/감추기 코드를 구현한다.

progressBar.setVisibility(View.VISIBLE);

--감추기
progressBar.setVisibility(View.GONE);

 

4. 사용자 상호작용을 비활성 또는 활성화 하려면 다음 코드를 추가한다. 로딩하는 동안 버튼이나 화면이 클릭되어  동작하면 안됨으로

스크린 터치 비활성화 처리 코드를 추가해준다.

getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
                           WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

터치 활성화 처리 코드

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

나중에 참조할 수 있도록 로 변경 android.R.attr.progressBarStyleSmall를  android.R.attr.progressBarStyleHorizontal로 변경한다.

 

색상변경 코드는  Api level 21 이상에서만 동작한다.

progressBar.setProgressTintList(ColorStateList.valueOf(Color.RED));

 

커스텀 프로그레스바를 사용하고자 하는 경우 xml 레이아웃 생성하기

<ProgressBar
        android:id="@+id/progressbar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:indeterminate="true"
        android:max="100"
        android:backgroundTint="@color/white"
        android:layout_below="@+id/framelauout"
        android:indeterminateTint="#1a09d6"
        android:layout_marginTop="-7dp"/>

1. 프로그레스바 activiy 지정

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

2. 프로그레스바 표기/감추기 

 progressBar.setVisibility(View.VISIBLE); // To show the ProgressBar 
 progressBar.setVisibility(View.INVISIBLE); // To hide the ProgressBar

 

 

[모바일 앱] 더 나은 광고 경험(Better Ads Experiences) 정책 위반 미리 대응 방법

2022년 9월 30일까지 처리해야하는 정책이 있다. 바로 더 나은 광고 경험 정책인데 자세한 내용은 다음과 같다. 더 나은 광고 경험(Better Ads Experiences) 개발자는 사용자가 Google Play 앱을 사용할

playground.naragara.com

 

[REFERENCE]

 

How to Customize a Progress Bar In Android

I am working on an app in which I want to show a ProgressBar, but I want to replace the default Android ProgressBar. So how can I customize the ProgressBar? Do I need some graphics and animation ...

stackoverflow.com

 

 

Leave a Reply

error: Content is protected !!