Ayrıntılı Toast Kullanımı

Toast Mesajı Nedir?

Toast, Android uygulamalarda kullanıcılara uyarı veya bilgilendirme mesajları verilmesini sağlayan, bunun dışında uygulama test aşamasında işlemlerin gerçekleşip gerçekleşmediği hakkında bilgi edinmek amaçlı kullanılan mesaj türüdür.

Ayrıca, hata ayıklama amacıyla da kullanabilirsiniz. Bir tost, küçük bir açılır pencerede bir işlem hakkında basit geri bildirim sağlar.

Toast Message, Javascript’deki alert, Form Application’lardaki msgbox yada messagebox gibi anlayabiliriz. Ekrana veri yazdırmak için kullanılıyor.

Nasıl Kullanılır?

Toast mesajları tasarlanarak kullanılacağı gibi default yani varsayılan şekilde de gösterilebilir. Bunu basit anlamda aşağıdaki kod bloğunu sınıf içine yazarak kullanabiliriz.

makeText methoduna baktığımızda üç parametre aldığını göreceksiniz.

İlki uygulama içeriğini yani contexti , Hangi activity bu işleme erişecek bilgisi gibi bilgileri tutar.

ikincisi kullanıcıya gösterilecek kısa mesajı, parametre olarak String veri bekler.

üçüncüsü de Toast mesajının ekranda gösterilme süresini belirtiyor.

Toast Message süre olarak iki integer değer alabilir;

  • Uzun toast message süresi –> Toast.LENGTH_LONG
  • Kısa toast message süresi –>  Toast.LENGTH_SHORT

show (): Bu yöntem, Tost’u ekranda görüntülemek  için kullanılır. Bu yöntem, Toast’un makeText () yöntemini kullanarak oluşturduğumuz metni görüntüler.

Toast toast = Toast.makeText(getApplicationContext(), "Mesajımız..", Toast.LENGTH_LONG);
toast.show();

veya

Toast toast = Toast.makeText(getApplicationContext(), "Mesajımız..", Toast.LENGTH_LONG)show();

şeklinde gösterilir.

Toast nesnesi ise, android.widget paketi içerisinde sınıf olarak bulunur.

Toast.makeText(this, "Mesajımız..", Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(),"Mesajımız..",Toast.LENGTH_LONG).show();

Yukarıdaki şekilde kullanıldığında mesaj, kısa süreli ekranda görünür. Ama eğer uzun süreli görünmesini istiyorsak Toast.LENGTH_SHORT kısmını Toast.LENGTH_LONG şeklinde değiştirebiliriz.

this yerine bazen getApplicationContext() olarak da görebilirsiniz, her ikiside çalışır.

Yapmış olduğumuz çalışma test amaçlı ve kodların işleyişini değinmek amaçlı, onCreate metodu içinde çalıştırdık.

Toast nesnenizin yerini belirleme

Ekranın alt kısmında, yatay olarak ortalanmış standart bir kısa mesaj bildirimi görünür. Bu konumu setGravity(int, int, int) yöntemini kullanarak değiştirebilirsiniz. Bu yöntem üç parametreyi kabul eder: Bir Gravity sabiti, bir x konumu ofseti ve bir y konumu ofseti.

Örneğin, durum mesajının sol üst köşede görünmesi gerektiğine karar verirseniz yerçekimi (gravity) değerini şu şekilde ayarlayabilirsiniz:

    toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0); 

Toast toast = Toast.makeText(getApplicationContext(), "Mesajımız...", Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();

Toast mesajımızın yerini belirlemek için aşağıdaki konum sabitlerini kullanabilirsiniz.

  • TOP
  • BOTTOM
  • LEFT
  • RIGHT
  • CENTER
  • CENTER_HORIZONTAL
  • CENTER_VERTICAL

Aşağıdaki kod parçasını incelediğimizde ekran görüntüsünde de gördüğünüz gibi Toast mesajını en altta sola dayalı olarak konumlandırdık.

Toast toast = Toast.makeText(getApplicationContext(), "Mesajımız...", Toast.LENGTH_LONG);
toast.setGravity(Gravity.BOTTOM|Gravity.LEFT, 0, 0);
toast.show();

Toast mesajının kısa süre boyunca gözükmesi için :

Toast.makeText(getApplicationContext(), "Mesajımız…", Toast.LENGTH_SHORT).show();

Toast mesajının uzun süre boyunca gözükmesi için:

Toast.makeText(getApplicationContext(), "Mesajımız…", Toast.LENGTH_LONG).show();

Diyelim ki varsayılan şekilde kullanmak istemiyoruz. Toast mesajlarının daha güzel, kendimize ait bir tasarımla görünmesini istiyoruz. 

İlk önce uygulamanın açılış ekranındaki tasarımı yapalım.

toast_1.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/custom_toast_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:orientation="vertical">
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@android:drawable/ic_delete" />
        <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Toast YAZILI MESAJ"
            android:textColor="#FFF" />
</LinearLayout>

Java kodumuzda aşağıdadır. Yukarıda oluşturduğumuz görsel bileşeni, Toast mesajına setView yardımı ile verdik. Gördüğünüz gibi istediğimiz şekilde Toast mesajını oluşturmamız mümkün.

LayoutInflater inflater = getLayoutInflater();
                View layout = inflater.inflate(R.layout.toast_1,
                        (ViewGroup) findViewById(R.id.custom_toast_container));

                TextView text = layout.findViewById(R.id.text);
                text.setText("Bu bir Tost Mesajıdır ");
                Toast toast = new Toast(getApplicationContext());
                toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
                toast.setDuration(Toast.LENGTH_LONG);
                toast.setView(layout);
                toast.show();

Toast olarak sadece resim göstermek istersek

MainActivity.class

package com.ossmatematik.toastresimmesaji;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    Button Btn1,Btn2;

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

        Btn1= findViewById(R.id.button1);
        Btn2= findViewById(R.id.button2);

        Btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
                Toast.makeText(getApplicationContext(),"Bu bir Tost MEsajıdır",Toast.LENGTH_LONG).show();
            }
        });

        Btn2.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v)
              {
                  ImageView resim=new ImageView(getApplicationContext());
                  resim.setImageResource(R.drawable.reklam);
                  Toast toast=new Toast(getApplicationContext());
                  toast.setView(resim);
                  toast.setDuration(Toast.LENGTH_LONG);
                  toast.show();
              }
        });



    }
}

Toast Mesajının bizim istediğimiz kadar kalmasını istersek

    public void sureliTOAST(String msg, int millisec) {
        Handler handler = null;
        final Toast[] toast_sureli = new Toast[1];
        for(int i = 0; i < millisec; i+=2000) {
            toast_sureli[0] = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
            toast_sureli[0].show();
            if(handler == null) {
                handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        toast_sureli[0].cancel();
                    }
                }, millisec);
            }
        }
    }

Bütün kodları toparlarsak;

axtivity_main.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"
    android:gravity="center"
    android:orientation="vertical"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.nuri.toastresimmesaji.MainActivity">
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="NORMAL TOAST MESAJI"
        android:textSize="30sp" />
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="RESİMLİ TOAST"
        android:textSize="30sp" />
    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="RESİM ve YAZILI TOAST"
        android:textSize="30sp" />
    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="ZAMAN AYARLI TOAST(6 SANİYE)"
        android:textSize="30sp" />
</LinearLayout>

MainAcivity.java

package com.nuri.toastresimmesaji;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
    Button Btn1,Btn2,Btn3,Btn4;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Btn1= findViewById(R.id.button1);
        Btn2= findViewById(R.id.button2);
        Btn3= findViewById(R.id.button3);
        Btn4= findViewById(R.id.button4);

        Btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
                Toast.makeText(getApplicationContext(),"Bu bir NORMAL Tost Mesajıdır",Toast.LENGTH_LONG).show();
            }
        });

        Btn2.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v)
              {
                  ImageView resim=new ImageView(getApplicationContext());
                  resim.setImageResource(R.drawable.reklam);
                  Toast toast=new Toast(getApplicationContext());
                  toast.setView(resim); //setView yani özel toast kullanımdan kaldırıldı. Bunun yerine SnackBar kullan
                  toast.setDuration(Toast.LENGTH_LONG);
                  toast.show();
              }
        });

        Btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
                String Baslik = "DENEME";
                String mesajim = "Bu bir RESİMLİ Toast MESAJI";
                gosterTOAST(mesajim,Baslik);
            }
        });

        Btn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
                sureliTOAST("Bu bir Toast MESAJI",6000);
            }
        });
    }

    public void gosterTOAST(String Baslik, String msg)
    {
        LayoutInflater inflater = getLayoutInflater();
        View layout = inflater.inflate(R.layout.toast_ekrani,
                (ViewGroup) findViewById(R.id.relativeLayout1));
        TextView baslikText = layout.findViewById(R.id.toast_baslik);
        TextView textMesaj = layout.findViewById(R.id.toast_mesaj);
        baslikText.setText(Baslik);
        textMesaj.setText(msg);
        Toast toast = new Toast(getApplicationContext());
        toast.setGravity(Gravity.BOTTOM, 0, 0);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setView(layout);  //setView yani özel toast kullanımdan kaldırıldı. Bunun yerine SnackBar kullan
        toast.show();
    }

    public void sureliTOAST(String msg, int millisec) {
        Handler handler = null;
        final Toast[] toast_sureli = new Toast[1];
        for(int i = 0; i < millisec; i+=2000) {
            toast_sureli[0] = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
            toast_sureli[0].show();
            if(handler == null) {
                handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        toast_sureli[0].cancel();
                    }
                }, millisec);
            }
        }
    }
}

toast_ekrani.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:id="@+id/relativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:gravity="center_horizontal">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_orange_dark"
        android:orientation="vertical"
        android:padding="5dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            tools:ignore="UseCompoundDrawables">

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="120dp"
                android:layout_height="60dp"
                android:layout_below="@+id/textView1"
                android:layout_margin="5dip"
                android:src="@drawable/toast_onemli_uyari"
                tools:ignore="ContentDescription,InefficientWeight,ObsoleteLayoutParam" />

            <TextView
                android:id="@+id/toast_baslik"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:padding="10dp"
                android:text=""
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="@android:color/background_dark"
                android:textSize="18sp"
                tools:ignore="HardcodedText,InefficientWeight" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:padding="10dp">

            <TextView
                android:id="@+id/toast_mesaj"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/imageView1"
                android:layout_weight="1"
                android:gravity="center"
                android:hint="Mesaj"
                android:textColor="@color/colorPrimary"
                android:textSize="14sp"
                tools:ignore="HardcodedText,InefficientWeight,ObsoleteLayoutParam" />
        </LinearLayout>

    </LinearLayout>

</RelativeLayout>

Projenin tamamını

https://github.com/netmatematiknet/Toast

adresinden ücretsiz indirebilirsiniz.

Bir cevap yazın