博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android实例-手机安全卫士(四十四)-双击自定义Toast窗口居中显示
阅读量:5221 次
发布时间:2019-06-14

本文共 1848 字,大约阅读时间需要 6 分钟。

一、目标

  实现自定义的Toast显示框在来电显示时双击便可自动居中

二、代码实现

  1、在“显示地址”服务(ShowPhoneAddService)中定义一个long类型的数组成员变量(取名mHits),用于存储双击事件的时间间隔;

long类型的数组成员变量(mHits):

1 private long[] mHits = new long[2];
View Code

 

  2、通过View对象(view)的setOnClickListener(OnClickListener l)方法为其设置点击事件,参数OnClickListener l通过new实例化OnClickListener()接口对象,并实现其onClick(View v)方法,导包。在onClick(View v)方法中:

    (1)通过系统(System)的arraycopy(Object src, int srcPos, Object dst, int dstPos, int length)方法将数组(mHits)移位拷贝一次,参数src为被拷贝的资源,srcPos表示被拷贝资源的起始位置,dst表示粘贴到的目标资源,dstPos表示粘贴至目标资源的位置,length表示拷贝长度;

    (2)用于存储点击时间的数组最后一个数据通过系统时间对象SystemClock的uptimeMillis()方法获取当前时间至开始时间的毫秒值;

    (3)通过if语句判断当前开始时间(SystemClock.uptimeMillis())与数据第一个时间的差值是否小于500毫秒,如成立则在if语句中执行:

      ①将窗口对象(params)的x轴、Y轴坐标值分别设为屏幕宽度与Toast窗口宽度的一半的差值;

      ②通过窗口管理对象(wm)的updateViewLayout(View view, LayoutParams params)方法更新显示对象;

      ③通过SharedPreferences对象(sp)保存。

点击事件代码:

1 view.setOnClickListener(new OnClickListener() { 2              3             @Override 4             public void onClick(View v) { 5                 System.arraycopy(mHits, 1, mHits, 0, mHits.length-1); 6                 mHits[mHits.length-1] = SystemClock.uptimeMillis(); 7                 if(SystemClock.uptimeMillis()-mHits[0]<=500){
//双击时间间隔少于500毫秒 8 //Toast窗口居中显示,即屏幕宽度一半减去Toast窗口宽度一半 9 params.x = wm.getDefaultDisplay().getWidth()/2-view.getWidth()/2;10 params.y = wm.getDefaultDisplay().getHeight()/2-view.getHeight()/2;11 wm.updateViewLayout(view, params);//更新显示12 Editor editor = sp.edit();13 editor.putInt("ToastX", params.x);14 editor.putInt("ToastY", params.y);15 editor.commit();16 }17 }18 });
View Code

 

转载于:https://www.cnblogs.com/Red-Shark/p/4482539.html

你可能感兴趣的文章