我想在屏幕上突出显示所有可访问性可点击对象。为此,我创建了一个始终在顶部布局的应用程序。
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics displaymetrics = new DisplayMetrics();
int screenWidth = displaymetrics.widthPixels;
int screenHeight = displaymetrics.heightPixels;
params = new WindowManager.LayoutParams(
720, 1280,
0, 0,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_FULLSCREEN,
PixelFormat.TRANSLUCENT);
mWindowManager.addView(testDrawView, params);
我还创建了一个可访问性服务,以便获取所有可访问性的可点击元素框参数。它工作,输出打印。
但问题是它没有更新。当我在屏幕上执行某些操作(所有触摸都经过)时,我需要删除旧元素的高光,以及要显示的新元素的高光。但是更改不会动态更新,我需要打开我的应用程序以强制抽屉运行。
我试过
class BrRec extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
mHeadLayer.rects.clear();
mHeadLayer.rects = (ArrayList<Rect>) intent.getSerializableExtra("rects");
for (int i = 0; i < mHeadLayer.rects.size(); ++i)
{
mHeadLayer.invalidate(mHeadLayer.rects.get(i));
}
mHeadLayer.invalidate();}}
但它不起作用。
有没有办法动态突出显示屏幕对象?我想重写我总是在顶视图上,即使它不活跃。
也许以某种方式以编程方式激活它?