Android开篇之Toast小试牛刀

来源:互联网 发布:如何访问mpp数据库 编辑:程序博客网 时间:2024/05/01 06:37

前言

大家好,今天是个特殊的日子 ,因为我在CSDN上正式开通了博客(小小的自恋下)。做安卓开发也有一定时间了,平时遇到问题了,很习惯的打开百度去搜索。然后就翻遍各种资源,最终都能很好的解决问题,心中的那份感谢不言而喻,其间也看到很多大神写的博客,感觉很牛逼,讲解的很到位,总结的很深刻。总是臆测,自己是这样的大神,该有多好啊。可是上天不会眷顾整天只会思想,而不去实际行动的人。于是觉得自己也应该好好静下心来。好好研究,毕竟自己是靠技术吃饭的,做什么事都是半吊子的水平,不如不做。与其做就要做到更好,所以,在此决定该重新开始(嗯,既然决定了。就努力做下去),今天因为是小编的第一篇博客。小编准备先来个小试牛刀,不足之处,还望多多指正

一.概述

相信很多人 在做开发的时候,有时候避免不了的需要调试,有时候需要debug,有时候在代码中加入log,还有的时候想在测试机上直接展示,这个时候我们就会用到安卓自带的系统控件Toast,当然有时候需求上也会用到它,例如 。当你输入错误的账号密码的时候这时候会弹出一个框,提示用户密码输入错误,所以说这个控件也很重要(虽然很简单)

二.详细内容

系统级的toast很简单,小编在此就不赘述了。我们今天谈论的是自定义的Toast控件。首先废话不多说 上代码

public class CustomToast {    public static Toast toast;    public static Toast makeText(Context context,CharSequence msg,int dur){        return getToast(context,msg,dur);    }    public static Toast makeText(Context context,int resId,int dur){        return getToast(context,context.getString(resId),dur);    }    private static Toast getToast(Context context,CharSequence msg,int dur){        //这里做了判断 。当多次点击的时候toast会加到队列里,导致会显示滞后很长时间。加判断了,如果有旧的 会先取消掉以前的,重新显示新的        if(toast!=null){            toast.cancel();        }        // 这里加载布局,方便调节样式背景等        LinearLayout ll= (LinearLayout) LayoutInflater.from(context).inflate(R.layout.custom_toast,null);        TextView tv=(TextView)ll.findViewById(R.id.message);        tv.setText(msg);        toast=new Toast(context);        toast.setView(ll);        toast.setDuration(dur);        toast.setGravity(Gravity.CENTER,0,0);        return toast;    }}

上面就是自定义控件toast了,还有一点想说明的是其中有toast.setview()方法,其实做多了你就会发现经常会有,setview,addview,setcontentview,addcontentview方法等,他们都是添加一个布局文件,那么他们到底有什么区别呢,setview相对于控件来说的(也可以说是view)而addview是相对于viewgroup来说的。所以本例你就看到使用的是setview,因为toast是个控件。setContentView() 会导致先前添加的被移除, 即替换性的;而 addContentView() 不会移除先前添加的UI组件,即是累积性的。 好了,上面就是我们所说的toast控件了。当然我们最好自己在封装下。这样的话,我们想在哪用就在哪用,一句代码搞定,岂不快哉。我们可以在BaseActivity里面封装一个showToast方法

public void showToast(String msg){      if (mContext!=null){          CustomToast.makeText(mContext,msg, Toast.LENGTH_LONG).show();      }  }    public void showToast(String msg, int time){        if(mContext != null){            CustomToast.makeText(mContext, msg , time).show();        }    }    public void showToast(int resId){        if(mContext != null){            CustomToast.makeText(mContext, resId , Toast.LENGTH_SHORT).show();        }    }    public void showToast(int resId, int time){        if(mContext != null){            CustomToast.makeText(mContext, resId , time).show();        }    }
这样当我们在任何地方想调用的时候,就可以直接showToast了。一句话搞定,就是这么简单 
最后篇中难免不当之处,恳请不吝赐教。谢谢

0 0