1. 程式人生 > >非常實用的自定義佈局,自定義顯示時長的頂部toast

非常實用的自定義佈局,自定義顯示時長的頂部toast

最近在工作中需要彈出頂部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