Android仿一点资讯收藏Toast动画效果
作者:wangw-csdn 时间:2022-01-15 18:42:33
最近在做一个项,有一个收藏的功能。后来看到了一点资讯的收藏动画,感觉不错,所有自己就实现了一下。
这是效果:
附上完整的代码,其中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