Android仿一点资讯收藏Toast动画效果(给Toast添加动画效果)
2017-07-05 11:29
543 查看
最近在做一个项,有一个收藏的功能。后来看到了一点资讯的收藏动画,可上下弹跳,并在屏幕中央显示。感觉不错,所有自己就实现了一下。
![](http://img.blog.csdn.net/20170705145314427?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3dhc2Rm/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这是效果:
附上完整的代码,其中Animation_Toast为动画:
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; } }
相关文章推荐
- Android仿一点资讯收藏Toast动画效果
- [Android] 为ImageButton添加按下的动画效果 变亮或变暗
- android添加动画效果
- Layout动画:在android布局发生变化时添加动画效果
- Android开发之50个常见实用技巧——添加悦目的动画效果
- AndroidUI 布局动画-为列表添加布局动画效果
- [Android] 为ImageButton添加按下的动画效果 变亮或变暗
- android中动给组建添加动画载入效果
- [Android] 为ImageButton添加按下的动画效果 变亮或变暗
- android中NavigationDrawer的使用以及添加drawer切换时的动画效果
- Android第三方开源NiftyNotification(Android Toast替代品):动画效果生动有趣的通知
- Android 如何在Launcher的桌面滑动时添加动画效果? M
- android 给LinearLayout中添加一定数量的控件,并让着一定数量的控件从右到左移动,每隔若干秒停顿一下,最后一个view链接第一个view,然后继续移动循环往复,形成一个死循环简单动画效果
- Android 属性动画(Property Animation 给按钮的添加添加动画效果,同样可以用在整个布局上) (下)(viewGroup创建对象竟然可以用布局的id)
- Android 动画效果 --Animation 动画(讲解了所有的Android动画效果,是一个值得收藏的帖子)
- Android 动画效果 --Animation 动画(讲解了所有的Android动画效果,是一个值得收藏的帖子)
- Android 动画效果 --Animation 动画(讲解了所有的Android动画效果,是一个值得收藏的帖子)
- Android应用系列:仿MIUI的Toast动画效果实现(有图有源码)
- AndroidUI 布局动画-为列表添加布局动画效果
- Android 动画效 4000 果 --Animation 动画(讲解了所有的Android动画效果,是一个值得收藏的帖子)