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

作者:wangw-csdn 时间:2022-01-15 18:42:33 

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

这是效果:

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

附上完整的代码,其中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>

来源:http://blog.csdn.net/wangwasdf/article/details/73564244

标签:android,一点资讯,收藏动画
0
投稿

猜你喜欢

  • 浅析C#中文件路径的操作

    2023-11-09 16:24:30
  • Java中线程休眠编程实例

    2021-09-06 11:42:55
  • Java NIO实现聊天系统

    2023-08-08 08:35:36
  • Java日常练习题,每天进步一点点(55)

    2022-10-13 15:51:03
  • 浅析Java中接口和抽象类的七大区别

    2022-01-16 21:09:36
  • Android中判断网络连接是否可用及监控网络状态

    2022-09-07 05:24:25
  • Android Flutter实战之为照片添加颜色滤镜

    2023-05-17 01:27:12
  • 详解SpringBoot中的tomcat优化和修改

    2022-12-31 04:00:44
  • 基于Freemarker和xml实现Java导出word

    2022-07-11 23:15:12
  • java读取文件内容的三种方法代码片断分享(java文件操作)

    2023-11-21 06:53:20
  • Spring的事务管理你了解吗

    2023-02-05 19:44:16
  • Java由浅入深带你精通继承super

    2023-11-23 02:34:28
  • SpringBoot2.7 WebSecurityConfigurerAdapter类过期配置

    2022-09-23 00:27:32
  • Android实现基于滑动的SQLite数据分页加载技术(附demo源码下载)

    2022-04-21 03:42:02
  • Android启动页用户相关政策弹框的实现代码

    2021-06-30 15:29:30
  • Android实战教程第一篇之最简单的计算器

    2023-03-12 17:57:54
  • Java杂谈之类和对象 封装 构造方法以及代码块详解

    2022-03-13 12:38:26
  • HttpClient 请求 URL字符集转码问题

    2022-11-20 17:33:07
  • 利用Flutter制作经典贪吃蛇游戏

    2023-07-21 07:04:13
  • C#实现影院售票系统

    2021-12-27 00:53:26
  • asp之家 软件编程 m.aspxhome.com