Android实例-手机安全卫士(三十九)-自定义吐司(文本格式、显示窗口)

一、目标

  自定义显示的吐司,包括内容文本格式、显示窗口格式。

技术分享

二、代码实现

  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     }
View Code

 

  2、在服务类(ShowPhoneAddService)中的自定义的来电监听类(MyPhoneListener)中和去电服务类(OutCallReceiver)里,通过查询数据库获取号码归属地后,通过自定义的吐司方法将归属地传入便可显示。

传入代码;

技术分享
1 myToast(inComingPhoneAdd);
View Code

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。