我想提請高於一切的圖標類似於新的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