gpt4 book ai didi

android - 使用窗口管理器检查 View 是否显示

转载 作者:行者123 更新时间:2023-11-29 14:48:52 26 4
gpt4 key购买 nike

在使用 WindowManager 添加之前,我如何知道 View 是否正在显示?我需要在 native 拨号器中放置一个覆盖层,但有时 native 拨号器会放在自定义 View 上方,我通过使用 WindowManager 多次添加元素解决了这个问题,但有时 View 会显示两次。

谢谢!!

private void callStartIncomingCallScreen(Context context, String incomingNumber) {
startIncomingCallScreen(context, incomingNumber);

Timer timer = new Timer();

for (int i = 0; i < 2; i++) {
timer.schedule(new StartIncomingCallScreenTimerTask(context, incomingNumber), 100 * i);
}
}


class StartIncomingCallScreenTimerTask extends TimerTask {

private Context context;
private String incomingNumber;

StartIncomingCallScreenTimerTask(Context context, String incomingNumber) {
this.context = context;
this.incomingNumber = incomingNumber;
}

public void run() {
Intent intent = new Intent(context, IncomingCallGuiService.class);
context.startService(intent);
}
}

在 IncomingCallGuiService 中我添加了这样的 View :

final LayoutParams params = new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT,
LayoutParams.TYPE_SYSTEM_ALERT,
LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);



WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
// add the overlay
wm.addView(view, params);

最佳答案

你可以用你膨胀的 View 来检查它。您可以使用 view.isShown() 来检查它。当您使用 windowManager.addView(yourView) 添加 View 时,当您调用 isShown() 时返回 true。

希望对你有帮助。

关于android - 使用窗口管理器检查 View 是否显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25727576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com