| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Android.App;
- using Android.Content;
- using Android.Graphics;
- using Android.OS;
- using Android.Runtime;
- using Android.Views;
- using Android.Widget;
- using Avalonia.Controls;
- using Avalonia.Platform;
- namespace Avalonia.Android.Platform.SkiaPlatform
- {
- class PopupImpl : TopLevelImpl, IPopupImpl
- {
- private Point _position;
- private bool _isAdded;
- Action IWindowBaseImpl.Activated { get; set; }
- public Action<Point> PositionChanged { get; set; }
- public Action Deactivated { get; set; }
- public PopupImpl() : base(ActivityTracker.Current, true)
- {
- }
- private Size _clientSize = new Size(1, 1);
- public void Resize(Size value)
- {
- if (View == null)
- return;
- _clientSize = value;
- UpdateParams();
- }
- public void SetMinMaxSize(Size minSize, Size maxSize)
- {
- }
- public IScreenImpl Screen { get; }
- public Point Position
- {
- get { return _position; }
- set
- {
- _position = value;
- PositionChanged?.Invoke(_position);
- UpdateParams();
- }
- }
- WindowManagerLayoutParams CreateParams() => new WindowManagerLayoutParams(0,
- WindowManagerFlags.NotTouchModal, Format.Translucent)
- {
- Gravity = GravityFlags.Left | GravityFlags.Top,
- WindowAnimations = 0,
- X = (int) _position.X,
- Y = (int) _position.Y,
- Width = Math.Max(1, (int) _clientSize.Width),
- Height = Math.Max(1, (int) _clientSize.Height)
- };
- void UpdateParams()
- {
- if (_isAdded)
- ActivityTracker.Current?.WindowManager?.UpdateViewLayout(View, CreateParams());
- }
- public override void Show()
- {
- if (_isAdded)
- return;
- ActivityTracker.Current.WindowManager.AddView(View, CreateParams());
- _isAdded = true;
- }
- public override void Hide()
- {
- if (_isAdded)
- {
- var wm = View.Context.ApplicationContext.GetSystemService(Context.WindowService)
- .JavaCast<IWindowManager>();
- wm.RemoveView(View);
- _isAdded = false;
- }
- }
- public override void Dispose()
- {
- Hide();
- base.Dispose();
- }
- public void Activate()
- {
- }
- public void BeginMoveDrag()
- {
- //Not supported
- }
- public void BeginResizeDrag(WindowEdge edge)
- {
- //Not supported
- }
-
- }
- }
|