自定义吐司

来源:互联网 发布:算法基础第五版 编辑:程序博客网 时间:2024/04/27 18:48
自定义吐司工具类
public class Toast {    private static WindowManager mWM;    public static void show(Context context, final View view) {                mWM = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);        final WindowManager.LayoutParams params = new WindowManager.LayoutParams();        params.height = WindowManager.LayoutParams.WRAP_CONTENT;        params.width = WindowManager.LayoutParams.WRAP_CONTENT;        params.format = PixelFormat.TRANSLUCENT;        params.type = WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;        params.gravity = Gravity.LEFT + Gravity.TOP;        params.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON                | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;        view.setOnTouchListener(new View.OnTouchListener() {            public float starty;            public float startx;            @Override            public boolean onTouch(View v, MotionEvent event) {                switch (event.getAction()) {                    case MotionEvent.ACTION_DOWN:                        startx = event.getRawX();                        starty = event.getRawY();                        break;                    case MotionEvent.ACTION_MOVE:                        float newx = event.getRawX();                        float newy = event.getRawY();                        int dx = (int) (newx - startx + 0.5f);                        int dy = (int) (newy - starty + 0.5f);                        //移动赋值                        params.x += dx;                        params.y += dy;                        //设置不超出屏幕                        if (params.x < 0) {                            params.x = 0;                        }                        if (params.y < 0) {                            params.y = 0;                        }                        if (params.x > mWM.getDefaultDisplay().getWidth() - v.getWidth()) {                            params.x = mWM.getDefaultDisplay().getWidth() - v.getWidth();                        }                        if (params.y > mWM.getDefaultDisplay().getHeight() - v.getHeight()) {                            params.y = mWM.getDefaultDisplay().getHeight() - v.getHeight();                        }                        //通知移动                        mWM.updateViewLayout(view, params);                        startx = event.getRawX();                        starty = event.getRawY();                        break;                    case MotionEvent.ACTION_UP:                        break;                }                return true;            }        });        mWM.addView(view, params);    }    public static void onDestroy(View view){        if(mWM!=null&&view!=null) {            mWM.removeView(view);            view = null;        }    }}