如果想要设置自定义Toast可以移动,比如来电显示时候显示归属地的Toast,这时候就希望是可以移动的。
原理就是给自定义的Toast设置一个触摸监听器,首先获取初始触摸位置坐标,然后通过移动事件(MotionEvent.ACTION_MOVE)来动态改变Toast在窗体上的位置。
当然首先要自定义一个Toast,参考我的上一篇自定义Toast,先自定义一个Toast,然后修改某些属性
//给Toast设置一个初始位置,其实不设置初始位置也可以,随你自己。
params.x = 100;
params.y = 100;
//这个标志属性要去掉不可触摸的属性,以便设置触摸监听器
params.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
//这里是设置这个窗体为电话级别的属性,可以永远在上面,
//设置这个属性要记得添加权