`

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); 
    } 
}

 

分享到:
评论

相关推荐

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

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

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

    本文实例讲述了Android开发进阶自定义控件之滑动开关实现方法。分享给大家供大家参考,具体如下: 自定义开关控件 Android自定义控件一般有三种方式 1、继承Android固有的控件,在Android原生控件的基础上,进行...

    android开发资料大全

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

    Android开发艺术探索

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

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

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

    《Google Android SDK开发范例大全(第3版)》.pdf

     《google android sdk开发范例大全(第3版)》内容由android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合android的初学者和android的进阶程序开发者阅读参考。 目录 《google android sdk开发范例...

    android开发艺术探索高清完整版PDF

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

    Google Android SDK开发范例大全(第3版) 1/5

    《Google Android SDK开发范例大全(第3版)》内容由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。 编辑本段 编辑推荐 《Google Android SDK...

    Google Android SDK开发范例大全(第3版) 4/5

    《Google Android SDK开发范例大全(第3版)》内容由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。 编辑本段 编辑推荐 《Google Android SDK...

    Google Android SDK开发范例大全(第3版) 3/5

    《Google Android SDK开发范例大全(第3版)》内容由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。 编辑本段 编辑推荐 《Google Android SDK...

    Google Android SDK开发范例大全(第3版) 5/5

    《Google Android SDK开发范例大全(第3版)》内容由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。 编辑本段 编辑推荐 《Google Android SDK...

    Google Android SDK开发范例大全(第3版)part2

     《Google Android SDK开发范例大全(第3版)》内容由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。 目录  第1章 了解、深入、动手做  1.1...

    毕设项目Java开发基于Android的幼儿园管理系统源码+项目说明.zip

    Java开发基于Android的幼儿园管理系统源码+项目说明.zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、...

Global site tag (gtag.js) - Google Analytics