首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将单击事件转发到启动程序?

如何将单击事件转发到启动程序?
EN

Stack Overflow用户
提问于 2020-08-27 09:58:47
回答 1查看 167关注 0票数 3

我在主屏幕上有一个以编程方式放置的小部件,我使用户能够将它拖到他想要的地方。我在视图中添加了一个OnTouchListener来获取运动事件(这样我就可以记住下一次在屏幕上的视图位置),并且它在我点击主屏幕的任何地方都会触发,即使这超出了我的视图。

我想要实现的是转发MotionEvent.ACTION_UP到启动应用程序,这样,如果用户点击一个应用程序图标,该应用程序将启动。或者,在我的视图之外单击时不接收此事件。以下是我所做的:

代码语言:javascript
运行
复制
 LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 inflatedViewWidget = inflater.inflate(R.layout.mtc_appwidget, null);

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                        WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                        0,
                        PixelFormat.TRANSLUCENT);
final WindowManager wm = (WindowManager) context.getSystemService(WINDOW_SERVICE);
wm.addView(inflatedViewWidget, params);

OnTouchListener:

代码语言:javascript
运行
复制
inflatedViewWidget.setClickable(true);
inflatedViewWidget.setOnTouchListener(new View.OnTouchListener() {
       public boolean onTouch(View v, MotionEvent event) {

                        int action = event.getAction();
                        switch (action) {
                            case MotionEvent.ACTION_UP:
                                //how to forward event to Launcher app?
                                break;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-02 10:13:16

AFAIK,在另一个应用程序中点击是不允许的,这将允许覆盖应用程序让你点击一个付费按钮,例如,你需要根或调试功能。

所以,诀窍是利用窗口的大小。小部件的窗口大小和位置应该始终与可点击区域相匹配。您可以使用updateViewLayout法在WindowManager上完成这一任务。

这里有一个很好的例子:https://medium.com/@kevalpatel2106/create-chat-heads-like-facebook-messenger-32f7f1a62064

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63613563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档