标签:
一、目标
自定义显示的吐司,包括内容文本格式、显示窗口格式。
二、代码实现
1、在“显示号码归属地”服务类(ShowPhoneAddService)中自定义吐司方法(取名myToast(String sting)),参数string为需要显示的字符串(注:本例中只需要使用自定义的吐司来显示号码归属地,其他地方不使用,因此在类中创建方法)。在自定义方法中(myToast):
(1)通过new TextView(Context context)方法定义一个TextView对象(取名view),参数context为应用的上下文(getApplicationContext());
(2)通过TextView(取名textView)的各种set方法传入并美化要显示的字符串(sting);
(3)通过new WindowManager接口下的LayoutParams()对象实例化一个WindowManager.LayoutParams对象(取名params),该对象用于设置自定义的吐司的显示窗口参数;
(4)通过WindowManager.LayoutParams对象(params)的“.属性 = 值”的方式设置其各项属性:
①窗口宽、高(width、height)均为包裹内容(WindowManager.LayoutParams.WRAP_CONTENT)
②窗口的flags属性设为不获取焦点(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)、不可触摸(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE)、保持屏幕开启状态(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)等值(同一个属性的多个值可用且“|”连接)
③窗口样式(format)为半透明(PixelFormat.TRANSLUCENT);
④窗口类型(type)为吐司(WindowManager.LayoutParams.TYPE_TOAST);
(5)在服务类中(ShowPhoneAddService)定义窗口管理者WindowManager对象(取名wm)的成员变量,并在创建(onCreate)方法中通过getSystemService(String name)方法实例化(参数name为窗口服务WINDOW_SERVICE),强转。再在自定义吐司方法(myToast)中通过窗口管理者WindowManager对象(wm)的addView(View view, LayoutParams params)方法加载文本视图(view)和显示窗口的各项参数(params)至窗口管理者中,用来显示。
自定义吐司方法代码:
1 public void myToast(String string){ 2 //设置吐司的显示文本内容和UI 3 TextView view = new TextView(getApplicationContext()); 4 view.setText(string); 5 view.setTextColor(Color.RED); 6 view.setTextSize(25); 7 //设置吐司的显示窗口参数 8 WindowManager.LayoutParams params = new WindowManager.LayoutParams();//创建窗口对象 9 params.height = WindowManager.LayoutParams.WRAP_CONTENT;//设置窗口高度为包裹内容 10 params.width = WindowManager.LayoutParams.WRAP_CONTENT;//设置窗口宽度为包裹内容 11 params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE//将窗口标记为不获取焦点 12 |WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE//将窗口标记为不可触摸 13 |WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;//将窗口标记为保持屏幕开启状态 14 params.format = PixelFormat.TRANSLUCENT;//窗口样式为半透明 15 params.type = WindowManager.LayoutParams.TYPE_TOAST;//窗口类型为吐司 16 //通过文本和窗口加载至窗口管理器中 17 wm.addView(view, params); 18 }
2、在服务类(ShowPhoneAddService)中的自定义的来电监听类(MyPhoneListener)中和去电服务类(OutCallReceiver)里,通过查询数据库获取号码归属地后,通过自定义的吐司方法将归属地传入便可显示。
传入代码;
1 myToast(inComingPhoneAdd);
Android实例-手机安全卫士(三十九)-自定义吐司(文本格式、显示窗口)
标签:
原文地址:http://www.cnblogs.com/Red-Shark/p/4468507.html