已经有人问过类似的问题,但没有多少运气。从服务启动视图?
假设我有一个服务,我需要一个视图来弹出它。同时,它们都应该是棘手的,即用户应该既能够在视图内单击按钮,也能够在后台单击服务中的按钮。
这在理论上是可行的吗?如果是,我应该如何初始化该视图?
谢谢!
已经有人问过类似的问题,但没有多少运气。从服务启动视图?
假设我有一个服务,我需要一个视图来弹出它。同时,它们都应该是棘手的,即用户应该既能够在视图内单击按钮,也能够在后台单击服务中的按钮。
这在理论上是可行的吗?如果是,我应该如何初始化该视图?
谢谢!
服务在后台运行并且没有UI。所以你不能在服务上显示某些内容。
如果您需要服务通知用户某事,请使用Notification
。
Ayou可以使用Toast
,但我建议不要这样做,因为它会混淆用户,因为它可以弹出另一个应用的活动。
如何将视图添加到WindowManager?这不反驳你的第一个陈述吗? – JacksOnF1re
我想你是滥用“服务”一词。 服务不可见,活动可见。
服务中没有按钮!
所以你别无选择!您应该将两个视图放在一个Activity中,然后使用RelativeLayout并将您的孩子的可见性设置为GONE/Visible。
http://developer.android.com/reference/android/widget/RelativeLayout.html
而且使用弹出式窗口,使得其下的布局点击会打扰用户。您完全改变了用户体验。我强烈建议你也让你的弹出窗口出现在你的初始布局的顶部/底部
我认为这是你最好的选择,如果你绝对必须达到这个效果。让自己成为一个包含在活动主布局中的布局,这种布局看起来像是一个弹出式窗口,只需在您希望的时候显示即可。除此之外,无法使前景和背景按钮都可点击。 – FoamyGuy
你想要的是一个活动,而不是一个服务和一个对话框,而不是视图。我建议你阅读谷歌的这个文件:http://developer.android.com/guide/topics/fundamentals.html
但是要回答你的问题关于两个互动。这是不可能的。在任何给定的时间1,只有1个活动位于活动堆栈的顶部。用户只能与该活动进行交互。如果你想要像浮动窗口那样的东西,那么你将不得不自己创建它。请记住,这违背了Android设计原则。
服务绝对可以有一个用户界面:输入法是一个明显的例子。举例来说,请参阅http://developer.android.com/resources/samples/SoftKeyboard/index.html。
是的,我很确定这是可行的 – pypmannetjies
是的,它是可能的,你需要做的就是调用WindowManager
服务并通过相同的添加您的看法。
WindowManager windowManager=(WindowManager)getSystemService(WINDOW_SERVICE);
LayoutInflater inflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
RelativeLayout layout=(RelativeLayout) inflater.inflate(R.layout.box,null);
你需要一个WindowManager.LayoutParams
对象应包含参数布局
windowManager.addView(layout,params);
好,加的观点
我不明白:上面显示服务的看法?服务通常在android中是不可见的(不要有任何UI)。也许你需要某种可定制的吐司功能。尝试编辑您的文章,并提供更多详细信息... – pkk