最近在工作中需要弹出顶部toast且显示时间不固定。从而写了下面的一个模拟toast的动画:
先看动画:
public void isShowToast(final boolean isShow,View mToastV) { final int marinTop = 0;//距离顶部的距离 final View view = mToastV;//mToastV是需要做动画view final int selfHeight = ScreenUtil.dipTopx(getActivity(), 20);//20为mToastV在布局中设的高度,你可以写为你的控件高度,由dp转为px int yDeltaTemp = marinTop + selfHeight; if (!isShow) { if (view.getY() != marinTop) return; yDeltaTemp = -yDeltaTemp; } else { if (view.getY() != -selfHeight) return; } final int yDelta = yDeltaTemp; final TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, yDelta); translateAnimation.setDuration(200); translateAnimation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { view.clearAnimation(); if (isShow) { view.setY(marinTop); } else { view.setY(-selfHeight); } } @Override public void onAnimationRepeat(Animation animation) { } });
view.startAnimation(translateAnimation);}
具体使用如下:
在你的布局文件的顶部写一个view(需要做动画的view)
需要toast的时候:
isShowToast(true,view);//true表示是要显示,false是表示需要隐藏,view是你需要做动画的view
如想在十秒后隐藏:
new Handler().postDelayed(new Runnable() { @Override public void run() { isShowToast(false); } }, 10*1000);非常简单又实用好控制fenxinag