欢迎来到代码驿站!

Android代码

当前位置:首页 > 移动开发 > Android代码

Android仿一点资讯收藏Toast动画效果

时间:2021-09-06 09:01:27|栏目:Android代码|点击:

最近在做一个项,有一个收藏的功能。后来看到了一点资讯的收藏动画,感觉不错,所有自己就实现了一下。

这是效果:

附上完整的代码,其中Animation_Toast为动画:

<div style="text-align: left;"><span style="font-family: Arial, Helvetica, sans-serif;"></span></div><pre name="code" class="java">public class CollectToast { 
  private static CollectToast toastCollectSucceed = null; 
  private Toast toast = null; 
  private TextView text; 
  private CollectToast() {} 
  /** 
   * 单例模式 
   * 
   * @return 
   */ 
  public static CollectToast createToast() { 
    if (toastCollectSucceed == null) { 
      toastCollectSucceed = new CollectToast(); 
    } 
    return toastCollectSucceed; 
  } 
  /** 
   * 显示Toast 
   * 
   * @param context 
   * @param root 
   * @param tvString 
   * @param result 是否成功 
   */ 
  public Toast showToast(Context context, ViewGroup root, String tvString, int duration, boolean result) { 
    toast = null; 
    int styleId = R.style.Animation_Toast; 
    if (toast == null) { 
      View layout = LayoutInflater.from(context).inflate(R.layout.toast_collect_layout, root); 
      text = (TextView) layout.findViewById(R.id.title_tv); 
      ImageView imageView = (ImageView) layout.findViewById(R.id.iv); 
      if (result) 
        imageView.setBackgroundDrawable(DrawableUtil.getImageDrawable(context, R.mipmap.doneicon_popup_textpage)); 
      else 
        imageView.setBackgroundDrawable(DrawableUtil.getImageDrawable(context, R.mipmap.close_popup_textpage)); 
      text.setText(tvString); 
      toast = new Toast(context); 
      toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
      toast.setDuration(duration); 
      toast.setView(layout); 
      toast.show(); 
    } else { 
      text.setText(tvString); 
      toast.show(); 
    } 
    //通过反射给Toast设置动画 
    try { 
      Object mTN = null; 
      mTN = getField(toast, "mTN"); 
      if (mTN != null) { 
        Object mParams = getField(mTN, "mParams"); 
        if (mParams != null 
            && mParams instanceof WindowManager.LayoutParams) { 
          WindowManager.LayoutParams params = (WindowManager.LayoutParams) mParams; 
          params.windowAnimations = styleId; 
        } 
      } 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
    return toast; 
  } 
  /** 
   * 反射字段 
   * 
   * @param object  要反射的对象 
   * @param fieldName 要反射的字段名称 
   * @return 
   * @throws NoSuchFieldException 
   * @throws IllegalAccessException 
   */ 
  private static Object getField(Object object, String fieldName) throws NoSuchFieldException, IllegalAccessException { 
    Field field = object.getClass().getDeclaredField(fieldName); 
    if (field != null) { 
      field.setAccessible(true); 
      return field.get(object); 
    } 
    return null; 
  } 
}</pre><br> 
<div style="text-align:left"><span style="font-family:Arial,Helvetica,sans-serif"></span></div> 
<pre></pre> 
<br> 
<br> 

上一篇:Android中判断网络是否可用的代码分享

栏    目:Android代码

下一篇:Android开发实现ImageView宽度顶边显示,高度保持比例的方法

本文标题:Android仿一点资讯收藏Toast动画效果

本文地址:http://www.codeinn.net/misctech/172970.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有