自定义 Toast,带来不一样的效果。

项目地址: MrLiKH/supercustomtoast
简介:自定义 Toast,带来不一样的效果。
可以自定义布局,动画,消失时间,图标......
示例 APK   

简介

最近项目需要,有些地方的提示信息需要用到 Toast,但是系统的 Toast 样式有点丑,位置单一,并且只能接受两个显示时间长度。因此有些时候系统的 Toast 有点显得很弱了。

当然系统的 Taost,也暴露了部分的方法, 见下图: 自定义 Toast,带来不一样的效果。_第1张图片
可以借助这些方法设置直接替换视图、设置显示时长、设置边距属性、设置显示位置、设置显示文字内容。

不过,这些远远不够,比如时间的设置。还有最重要的,是系统原生的 Toast 是呈队列显示,必须要等到前一条 Toast 消失才会显示下一条。明明是状态已经改变,可是上一状态的 Toast 还迟迟没有消失。

于是,为了满足项目需要,搜查资料,阅读源码,完成了这个 Demo

效果图

自定义 Toast,带来不一样的效果。_第2张图片

方法

  • 默认 Toast

      /**
       * 显示一条 Toast
       *
       * @param msg 消息内容
       */
      public void show(String msg) {
          show(getTextView(msg), null, null, null);
      }
    
  • 自定义 Toast,5 秒

      /**
      * 显示一条 Toast
      *
      * @param msg      消息内容
      * @param duration 持续时间,单位为毫秒
      */
      public void show(String msg, long duration) {
         show(getTextView(msg), duration, null, null);
      }
    
  • 设置背景颜色的 Toast+文字

              toast.setDefaultBackgroundColor(Color.RED, 200);
              toast.setDefaultTextColor(Color.BLUE);
              toast.show("带有背景色 Toast");       
    
  • 自定义 Toast 的入场和出场动画
    /**
    * 显示一条 Toast
    *
    * @param msg       消息内容
    * @param duration  持续时间,单位为毫秒
    * @param startAnim 入场动画
    * @param endAnim   离场动画
    */
    public void show(String msg, Long duration, Animation startAnim, Animation      endAnim) {
    show(getTextView(msg), duration, startAnim, endAnim);
    }
  • 利用 Toast 显示应用 Logo

       ImageView iv = new ImageView(MainActivity.this);
                      iv.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
                      iv.setImageResource(R.mipmap.logo1);
                      toast.show(iv);
    
  • 自定义 Toast 布局

      /**
       * 显示一条 Toast
       * @param msg 消息内容
       */
      public void show(String msg,int layoutId,int rootId,Activity activity){
          LayoutInflater inflater = activity.getLayoutInflater();
          layout = inflater.inflate(layoutId,
                  (ViewGroup)activity.findViewById(rootId));
          layout.setLayoutParams(lp_WW);
          TextView title = (TextView) layout.findViewById(R.id.title);
          title.setText(msg);
          title.setTextColor(defaultTextColor);
          show(layout, null, null, null);
      }

你可能感兴趣的:(自定义 Toast,带来不一样的效果。)