`

Android进阶篇-Toast自定义显示时间

 
阅读更多
public class CustomToast { 
    public static final int LENGTH_MAX = -1; 
    private boolean mCanceled = true;
    private Handler mHandler; 
    private Context mContext; 
    private Toast mToast; 

    public CustomToast(Context context) { 
        this(context,new Handler()); 
    } 


    public CustomToast(Context context,Handler h) { 
        mContext = context; 
        mHandler = h; 
        mToast = Toast.makeText(mContext,"",Toast.LENGTH_SHORT); 
        mToast.setGravity(Gravity.BOTTOM, 0, 0); 
    } 

    public void show(int resId,int duration) { 
        mToast.setText(resId); 
        if(duration != LENGTH_MAX) { 
            mToast.setDuration(duration); 
            mToast.show(); 
         } else if(mCanceled) { 
             mToast.setDuration(Toast.LENGTH_LONG);
             mCanceled = false;
             showUntilCancel(); 
         } 
    }
    
    /**
     * @param text 要显示的内容
     * @param duration 显示的时间长
     * 根据LENGTH_MAX进行判断
     * 如果不匹配,进行系统显示
     * 如果匹配,永久显示,直到调用hide()
     */
    public void show(String text,int duration) { 
        mToast.setText(text); 
        if(duration != LENGTH_MAX) { 
            mToast.setDuration(duration); 
            mToast.show(); 
            } else { 
                if(mCanceled) { 
                    mToast.setDuration(Toast.LENGTH_LONG); 
                    mCanceled = false; 
                    showUntilCancel();
                }
            } 
        } 

    /**
     * 隐藏Toast
     */
    public void hide(){
        mToast.cancel();
        mCanceled = true;
    }
    
    public boolean isShowing() {
        return !mCanceled;
    }
    
    private void showUntilCancel() { 
        if(mCanceled) 
            return; 
        mToast.show();
        mHandler.postDelayed(new Runnable() {
            public void run() { 
                showUntilCancel(); 
            }
        },3000); 
    } 
}

 

分享到:
评论

相关推荐

    Android-Toaster一个自定义的Toast库

    因此,自定义的Toast库应运而生,如“Android-Toaster”,它为开发者提供了更多的自定义选项,让提示信息更具特色。 **1. Android Toast的基本概念** Toast是Android系统提供的一种轻量级提示机制,用于显示短暂的...

    自定义Toas进阶

    本篇将深入探讨自定义Toast的进阶实践。 1. **自定义Toast的基本步骤** 自定义Toast首先需要创建一个布局文件,该布局文件将定义自定义Toast的外观。布局文件可以包含任何视图元素,如TextView、ImageView等,...

    自定义Toast

    本篇将详细介绍如何在Android中自定义Toast。 一、理解Toast工作原理 Toast在Android系统中主要由`Toast`类提供,它通过`makeText()`方法创建,并通过`show()`方法展示。默认的Toast会显示一个简单的文本消息,位置...

    安卓Android源码——五种效果的Toast.zip

    在安卓(Android)开发中,`Toast`是一个非常常见的组件,用于显示短暂的提示信息,通常用来告知用户一些操作结果或者系统状态。本资源“安卓Android源码——五种效果的Toast.zip”提供了五种不同样式的`Toast`实现...

    Flutter中的自定义Toast小部件:提升用户体验的秘诀

    在本文中,我们学习了如何创建一个简单的自定义Toast小部件,并讨论了如何添加一些进阶功能以满足不同的需求。希望这篇文章对您创建自定义Toast小部件有所帮助,提高了您的Flutter应用程序用户体验。如果您想深入...

    你可能不知道的Toast用法

    `Toast`不仅可以显示简单的字符串,还可以显示自定义的`View`。通过调用`Toast`的构造函数,传入一个`Context`和自定义的`View`,你可以实现更复杂的信息展示。例如,可以创建一个包含按钮或者图片的布局,然后用`...

    Toast使用

    这篇博文“Toast使用”可能涵盖了如何在Android应用中创建和使用`Toast`的基本步骤,包括自定义`Toast`的显示时间和位置,以及如何通过源码理解其工作原理。虽然描述为空,但通常会涉及以下几个方面: 1. **创建...

    Android开发入门书籍

    ### Android开发入门知识点详解 ...以上内容为《Android开发入门书籍》的主要知识点概览,涵盖了Android开发的基础到进阶的各个方面。希望这些知识点能够帮助读者更好地理解并掌握Android开发的核心技术。

    android开发资料大全

    Android核心分析28篇,强烈推荐android初学者,android进阶者看看这个系列教程 Android应用开发者指南:性能优化 android开发教程合集(推荐新手看下这一季教程) 新手入门 会员贡献电子图书整理(内含PDF下载) ...

    Android应用源码之MyCustomToast.zip

    在Android开发中,自定义`Toast`是一种常见的需求,它允许开发者根据应用的风格和功能需求来定制消息提示的方式。`MyCustomToast.zip`提供的源码应该是一个示例,展示了如何在Android应用中创建和使用自定义的`Toast...

    Android开发进阶自定义控件之滑动开关实现方法【附demo源码下载】

    在Android开发中,自定义控件能够满足开发者对界面及交互的特殊需求,提升应用的个性化和用户体验。本文主要探讨如何实现一个自定义的滑动开关控件,即ToggleView,它不依赖于Android原生的Switch控件,而是完全...

    Beginning Android 4

    ### 核心知识点总结 #### 一、核心概念(Part I: Core Concept) ...以上是《Beginning Android 4》一书中涉及的部分关键知识点总结,覆盖了Android开发的基础到进阶的各种主题,适合初学者系统地学习Android开发。

    Android button和TextVeiw用法相关实例.rar

    除了基础用法,Button和TextView还有许多进阶功能,如自定义样式、添加图片、设置文本颜色和字体等。例如,可以通过`android:background`为Button设置背景,通过`android:textColor`改变TextView的文本颜色。 对于...

    ToastDemo吐司

    "是显示的内容,`LENGTH_SHORT`表示吐司持续的时长,也可以选择`LENGTH_LONG`表示长时间显示。 在`ToastDemo`中,五种不同的显示方式可能包括以下内容: 1. **基本文本吐司**:如上所述,显示简单的文本信息,是最...

    Android开发

    在Android应用开发中,`ListActivity`是一个非常重要的组件,它是`Activity`的子类,专为显示列表数据而设计。本篇文章将深入探讨`ListActivity`的使用方法,包括其基本概念、布局构建、数据绑定以及一些常见操作。 ...

    Android开发艺术探索.任玉刚(带详细书签).pdf

    本书是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。本书从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层...

    android学习——GridView

    在Android开发中,GridView是一种非常常用的布局控件,它允许我们以网格的形式展示数据,通常用于创建像照片墙、应用列表等多列显示的内容。在本教程中,我们将深入探讨如何在Android应用中使用GridView。 首先,...

    Android Spinner控件简单使用方法

    要实现图片和文字一起显示,我们需要自定义一个布局文件,比如`spinner_item.xml`: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" ...

    Android编程典型实例与项目开发源码

    这本书的源码包含了一系列实用的示例和项目的实现,是学习和进阶Android开发的宝贵资源。 1. **Android基础知识** - **Activity**:书中可能涵盖了Activity的生命周期、启动模式以及如何在不同Activity间传递数据...

Global site tag (gtag.js) - Google Analytics