본문 바로가기
App/Android Studio

Android Studio - 프로그레스바와 핸들러

by 코젼 2022. 8. 11.
728x90
반응형

2022-08-11(39일차)



📃프로그레스바가 완료되면 다음 액티비티로 전환하는 소스코드를 작성하시오.


📝activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:progress="0"
        android:layout_marginLeft="100dp"
        android:layout_marginTop="300dp"
        android:max="100"
        tools:ignore="MissingConstraints" />

</RelativeLayout>

📝activity_main2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity2"
    android:orientation="vertical"
    android:padding="20dp">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="핸들러테스트"
        android:textSize="30dp"
        android:gravity="center"
        android:background="#ff9999"/>

</LinearLayout>

📝MainActivity.java

package com.project.myapplication;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.widget.ProgressBar;

public class MainActivity extends AppCompatActivity {
    ProgressBar pb;
    Intent intent;

    Handler handler = new Handler(Looper.getMainLooper()) {
        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);
            if(msg.what == 1) {
                if(pb.getProgress() < pb.getMax()) {
                    pb.setProgress(pb.getProgress() + 1);
                    sendEmptyMessageDelayed(1, 500);
                }
                else if (pb.getProgress() == pb.getMax()) {
                    intent = new Intent(MainActivity.this, MainActivity2.class);
                    startActivity(intent);
                }
            }
        }
    };

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

        pb = findViewById(R.id.progressBar);
        pb.setProgress(0);
        handler.sendEmptyMessage(1);
    }
}

📝MainActivity2.java

package com.project.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class MainActivity2 extends AppCompatActivity {

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

 

728x90
반응형

댓글