想要了解怎么自定义Toast,我们要去看一下Android源码是怎么写的
Toast的源码,可以发现在一个静态的内部类TN里面,有这样一段代码
第一步,获取framework层中的WindowManager对象,WindowManager windowM=(WindowManager)getSystemService(Context.WINDOW_SERVICE);
第二步,为WindowManager添加对象,包含两个参数 WindowManager.addView(view,params);
很显然view是要显示的视图,params是参数。
第三步,设置参数
WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.width = LayoutParams.WRAP_CONTENT; params.height = LayoutParams.WRAP_CONTENT; params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | //不可获得焦点 WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | //不可触摸
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; //保持屏幕亮 params.format = PixelFormat.TRANSLUCENT; params.type = WindowManager.LayoutParams.TYPE_TOAST; params.setTitle("Toast");