非常實用的自定義佈局,自定義顯示時長的頂部toast
阿新 • • 發佈:2018-11-02
最近在工作中需要彈出頂部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轉為pxint 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 = newTranslateAnimation(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