在学习自定义Toast时想让其在一个预定的位置时,设置x,y后,发现跟预期的不符和。搞了半天才发现原来是从params.gravity = Gravity.LEFT + Gravity.BOTTOM;定义的位置开始偏移(即原点)。
WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.height = WindowManager.LayoutParams.WRAP_CONTENT; params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.format = PixelFormat.TRANSLUCENT; //params.windowAnimations = com.android.internal.R.style.Animation_Toast; params.type = WindowManager.LayoutParams.TYPE_TOAST;//有的系统会只显示一段时间就消失,使用TYPE_PHONEparams.setTitle("Toast");params.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;// | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;//指定吐司所在位置params.gravity = Gravity.LEFT + Gravity.BOTTOM;params. x = 0; params. y = 200; 这里的坐标以上面的 Gravity . LEFT + Gravity . BOTTOM 处 开始偏移//指定吐司布局 xml-->view,将view挂载到windowManager上mViewToast = View.inflate(this, R.layout.toast_view, null);tv_toast = (TextView) mViewToast.findViewById(R.id.tv_toast);