gpt4 book ai didi

Android:如何将 View 添加到 WindowManager,并使其始终 float 在我的应用程序顶部?

转载 作者:搜寻专家 更新时间:2023-11-01 08:27:16 24 4
gpt4 key购买 nike

我需要一个 View 显示在我的应用程序的顶部,当它显示时,它可以继续显示在我应用程序的所有其他 View (所有 fragment 和 Activity )的顶部。它听起来像一个 float 操作按钮,但会始终显示在我的应用程序的顶部。

我知道我可以通过向手机的 WindowManager 添加 View 来做到这一点,并在我退出我的应用程序时隐藏它,在我恢复我的应用程序时再次显示它。这种棘手的方法可以奏效,但它也需要一些额外的许可,这是我试图避免的。

如果我只想在我的应用程序中展示,我是否可以在不征得用户额外许可的情况下实现它?如果答案是肯定的,那又如何呢?关键似乎是 View 的一些 LayoutParams,我尝试但失败了。

如果答案可以显示一些详细代码和解释,那就太好了。

最佳答案

为此您必须使用 WindowManager

首先在manifest中添加权限

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

添加你想显示的图片。

chatheadImg = (ImageView)chatheadView.findViewById(R.id.chathead_img);

然后创建服务并为其添加窗口管理器。

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP | Gravity.LEFT;
params.x = 0;
params.y = 100;

只需在 View 上注册触摸事件

chatheadView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:

//To do
break;
case MotionEvent.ACTION_MOVE:

break;

});

查看这些教程以更好地理解

http://www.androidhive.info/2016/11/android-floating-widget-like-facebook-chat-head/

https://github.com/henrychuangtw/Android-ChatHead

关于Android:如何将 View 添加到 WindowManager,并使其始终 float 在我的应用程序顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43626214/

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