我想提请高于一切的图标类似于新的Facebook信使的chathead移动位于窗口管理器不能正常工作
我已创建一个服务到屏幕(最上面的)上的ImageView在后台工作,并根据特定的条件我的图标应该出现在屏幕上(就像当有人在Facebook上发送消息时,Messenger服务将钩住消息并在屏幕上显示聊天头以通知您新消息)
我所做的:
我已创建的服务,并给了它我从ImageView的继承一个类(StickyHeadView)显示系统警告窗口(因为头实际上是一个系统警报窗口)
[assembly: UsesPermission(Name = Android.Manifest.Permission.SystemAlertWindow)]
许可和使用实施OnTouchListener监听器下列方式:
class StickyHeadView : ImageView, Android.Views.View.IOnTouchListener
{
private StickyHeadService OwnerService;
public StickyHeadView(StickyHeadService ContextService, Context context)
: base(context)
{
OwnerService = ContextService;
SetOnTouchListener(this);
}
float TouchMoveX;
float TouchMoveY;
public bool OnTouch(View v, MotionEvent e)
{
var windowService = OwnerService.GetSystemService(Android.Content.Context.WindowService);
var windowManager = windowService.JavaCast<Android.Views.IWindowManager>();
switch (e.Action & e.ActionMasked)
{
case MotionEventActions.Move:
TouchMoveX = (int)e.GetX();
TouchMoveY = (int)e.GetY();
OwnerService.LOParams.X = (int)(TouchMoveX);
OwnerService.LOParams.Y = (int)(TouchMoveY);
windowManager.UpdateViewLayout(this, OwnerService.LOParams);
Log.Debug("Point : ", "X: " + Convert.ToString(OwnerService.LOParams.X) + " Y: " + Convert.ToString(OwnerService.LOParams.Y));
return true;
case MotionEventActions.Down:
return true;
case MotionEventActions.Up:
return true;
}
return false;
}
}
服务有wiindow管理员显示其上的图标...在服务“的OnStart”事件中,我初始化头:
private StickyHeadView MyHead;
public Android.Views.WindowManagerLayoutParams LOParams;
public override void OnStart(Android.Content.Intent intent, int startId)
{
base.OnStart(intent, startId);
var windowService = this.GetSystemService(Android.Content.Context.WindowService);
var windowManager = windowService.JavaCast<Android.Views.IWindowManager>();
MyHead = new StickyHeadView(this, this);
MyHead.SetImageResource(Resource.Drawable.Icon);
LOParams = new Android.Views.WindowManagerLayoutParams(Android.Views.WindowManagerLayoutParams.WrapContent,
Android.Views.WindowManagerLayoutParams.WrapContent,
Android.Views.WindowManagerTypes.Phone,
Android.Views.WindowManagerFlags.NotFocusable,
Android.Graphics.Format.Translucent);
LOParams.Gravity = GravityFlags.Top | GravityFlags.Left;
LOParams.X = 10;
LOParams.Y = 10;
windowManager.AddView(MyHead, LOParams);
}
,你可以看到我已经声明了一个窗口管理和有特殊参数
添加视图(MyHead)将其我的问题:
当过我尝试移动搜索(我的头)没有关系”以稳定的方式移动并不断地震!
我使用的是真实的HTC Android手机4.0.4测试它
我使用MonoDroid的
请帮助......如果触摸的执行是不正确的,请提出一个更好的办法...谢谢。
为什么没有身体的答复!我想这是一个问题的论坛! – user1512094 2013-05-06 16:49:42
是那个java?你使用什么编译器? – 2014-03-24 18:42:51