본문 바로가기

android

[j android] 토스트(toast), 스낵바(snackbar), 프로그레스바(progressbar) 구현하기

728x90
반응형

1) 토스트(toast) 메시지 구현하기

 

Toast.makeText(MainActivity.this,"toast message입니다.",Toast.LENGTH_LONG).show();

 

2) 스낵바(snackbar) 구현하기

 

 스낵바를 구현하기전 app(module수준)에다가 아래의 코드를 추가해줍니다.

    implementation 'com.android.support:design:28.0.0'

 

 다음은 스낵바 코드입니다.

 Snackbar.make(mainlayout, "Snackbar 메시지입니다.", Snackbar.LENGTH_LONG).show();

 

 - mainlayout은 activity_main.xml 에서 LinearLayout에 아이디를 부여하고 class에서 연결시킨 것이다.

 - 2번째 "" 란에 자신이 띄우고싶은 메세지를 적으면 된다.

 

2-1) 버튼있는 스낵바 구현하기

 

 final Snackbar snackbar = Snackbar.make(mainlayout, "Snackbar 메시지입니다.\n확인 누르면 사라집니다.", Snackbar.LENGTH_INDEFINITE);
                snackbar.setAction("확인", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        snackbar.dismiss();
                    }
                });
                snackbar.show();

- 기존 스낵바 코드에 setAction이 추가되어 확인버튼을 누르면 스낵바를 없애도록 구현하였다.

 

 

3) 프로그래스바(progressbar) 구현하기

 

 progressBar.setVisibility(View.VISIBLE);
                progressBar.setIndeterminate(true);
                progressBar.getIndeterminateDrawable().setColorFilter(Color.parseColor("#39aae1"), PorterDuff.Mode.MULTIPLY);

- 프로그래스바를 보이게 한뒤 색을 변경시켜주었다.

 

 

3-1) 프로그래스바 없애기

 

 progressBar.setVisibility(View.INVISIBLE);

- 프로그래스바 visible속성을 INVISIBLE로 바꾸면 된다.

 

 

* 다음은 xml 전체 소스이다.

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/activity_main"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Massage Activity"
        android:textSize="30dp"
        android:textStyle="bold"
        android:textColor="#2196F3"
        android:layout_gravity="center"/>

    <Button
        android:id="@+id/toast"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TOAST Message"
        android:layout_marginTop="20dp"/>

   <Button
        android:id="@+id/snack"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="SNACKBAR Message"
        android:layout_marginTop="10dp"/>

    <Button
        android:id="@+id/snackconfirm"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="SNACKBAR Confirm Message"
        android:layout_marginTop="10dp"/>

   <Button
        android:id="@+id/progressbtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="PROGRESS BAR"
        android:layout_marginTop="10dp"/>

    <Button
        android:id="@+id/progressstop"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="PROGRESS BAR STOP"
        android:layout_marginTop="10dp"/>

    <ProgressBar
        android:id="@+id/progress"
        style="?android:attr/progressBarStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:visibility="invisible"
        android:layout_marginTop="100dp" />



</LinearLayout>

 

* 다음은 main.class 전체 소스이다.

 

public class MainActivity extends AppCompatActivity {
    LinearLayout mainlayout;
    ProgressBar progressBar;
    Button toast, snack, snackconfirm, progress, progressstop;

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

        mainlayout = (LinearLayout) findViewById(R.id.activity_main);
        progressBar = (ProgressBar) findViewById(R.id.progress);
        toast = (Button) findViewById(R.id.toast);
        snack = (Button) findViewById(R.id.snack);
        snackconfirm = (Button) findViewById(R.id.snackconfirm);
        progress = (Button) findViewById(R.id.progressbtn);
        progressstop = (Button) findViewById(R.id.progressstop);

        toast.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "toast message입니다.", Toast.LENGTH_LONG).show();
            }
        });

        snack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Snackbar.make(mainlayout, "Snackbar 메시지입니다.", Snackbar.LENGTH_LONG).show();

            }
        });

        snackconfirm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final Snackbar snackbar = Snackbar.make(mainlayout, "Snackbar 메시지입니다.\n확인 누르면 사라집니다.", Snackbar.LENGTH_INDEFINITE);
                snackbar.setAction("확인", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        snackbar.dismiss();
                    }
                });
                snackbar.show();

            }
        });

        progress.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                progressBar.setVisibility(View.VISIBLE);
                progressBar.setIndeterminate(true);
                progressBar.getIndeterminateDrawable().setColorFilter(Color.parseColor("#39aae1"), PorterDuff.Mode.MULTIPLY);

            }
        });

        progressstop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                progressBar.setVisibility(View.INVISIBLE);
            }
        });


    }


}

 

* 다음은 실행시킨 동영상이다.

 

 

massage 실행

 

728x90
반응형