栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

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

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

这是效果:

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

public class CollectToast { 
  private static CollectToast toastCollectSucceed = null; 
  private Toast toast = null; 
  private TextView text; 
  private CollectToast() {} 
   
  public static CollectToast createToast() { 
    if (toastCollectSucceed == null) { 
      toastCollectSucceed = new CollectToast(); 
    } 
    return toastCollectSucceed; 
  } 
   
  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; 
  } 
   
  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; 
  } 
}

 


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/158357.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号