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.