Nov 24, 2014

Customize Toast to show longer duration

This example show how to customize Toast to show longer duration, by using CountDownTimer to call toast.show() repeatly. And also show how to make the toast counting.


package com.example.androidtoastduration;

import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import android.os.Bundle;
import android.os.CountDownTimer;


public class MainActivity extends ActionBarActivity {
 
 Button text1, text2, text3, text4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text1 = (Button)findViewById(R.id.text1);
        text2 = (Button)findViewById(R.id.text2);
        text3 = (Button)findViewById(R.id.text3);
        text4 = (Button)findViewById(R.id.text4);
        
        text1.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View v) {
    Toast.makeText(
      MainActivity.this, 
      "LENGTH_SHORT", 
      Toast.LENGTH_SHORT).show();
   }});
        
        text2.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View v) {
    Toast toast = Toast.makeText(
      MainActivity.this, 
      "10 second - Not Work!", 
      Toast.LENGTH_SHORT);
    toast.setDuration(10000); //set duration, not work
    toast.show();
   }});
        
        text3.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View v) {
    final Toast toast = Toast.makeText(
      MainActivity.this, 
      "10 second", 
      Toast.LENGTH_SHORT);
    toast.show();
    
    new CountDownTimer(10000, 1000)
             {
                 public void onTick(long millisUntilFinished) {
                  toast.show(); 
                 }
                 
                 public void onFinish() {
                  toast.cancel();
                  
                 }
             }.start();
   }});
        
        text4.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View v) {
    final Toast toast = Toast.makeText(
      MainActivity.this, 
      "10 second", 
      Toast.LENGTH_SHORT);
    toast.show();
    
    new CountDownTimer(10000, 1000)
             {
     int count = 10;
     
                 public void onTick(long millisUntilFinished) {
                  toast.show();
                  count--;
                  toast.setText(count + " sec");
                 }
                 
                 public void onFinish() {
                  toast.cancel();
                  
                 }
             }.start();
   }});
    }

}

<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.example.androidtoastduration.MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="android-coding.blogspot.com" />
    
    <Button
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="40dp"
        android:textStyle="bold"
        android:text="LENGTH_SHORT" />
    
    <Button
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="40dp"
        android:textStyle="bold"
        android:text="10 sec Toast - NOT Work!" />
    
    <Button
        android:id="@+id/text3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="40dp"
        android:textStyle="bold"
        android:text="10 sec Toast" />
    
    <Button
        android:id="@+id/text4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="40dp"
        android:textStyle="bold"
        android:text="10 sec counting Toast" />

</LinearLayout>

1 comment:

Infolinks In Text Ads