private MainView mainView;
private Timer volumeAppAutoHideTimer;
private Window window;
+ private PanGestureDetector panGestureDetector;
public ViewManager()
{
window.KeyEvent += OnKeyEvent;
window.TouchEvent += OnTouched;
+
+ InitPanGestureDetector();
+ }
+
+ private void InitPanGestureDetector()
+ {
+ if (panGestureDetector == null)
+ {
+ panGestureDetector = new PanGestureDetector();
+ panGestureDetector.Attach(mainView);
+ panGestureDetector.Detected += OnPanGestureDetected;
+ }
+ }
+
+ private void OnPanGestureDetected(object source, PanGestureDetector.DetectedEventArgs e)
+ {
+ if (e == null)
+ {
+ return;
+ }
+ PanGesture panGesture = e.PanGesture;
+ mainView.Position += new Position(panGesture.ScreenDisplacement.X, panGesture.ScreenDisplacement.Y, 0);
}
public void UpdateMainView()
mainView.UpdateMainView();
}
+ public void ResetPanGesture()
+ {
+ panGestureDetector.Detach(mainView);
+ panGestureDetector.Attach(mainView);
+ }
+
public void StartTimer()
{
volumeAppAutoHideTimer?.Start();
{
StartTimer();
mainView.TouchEvent += OnMainViewTouched;
+ panGestureDetector.Detected += OnPanGestureDetected;
}
private void OnSafeLevelVolumePopupAdded()
{
StopTimer();
mainView.TouchEvent -= OnMainViewTouched;
+ panGestureDetector.Detected -= OnPanGestureDetected;
}
private void OnSliderSlidingFinished()
{
mainView.SliderSlidingFinished -= OnSliderSlidingFinished;
mainView.SafeVolumeLevelPopupAdded -= OnSafeLevelVolumePopupAdded;
mainView.SafeVolumeLevelPopupRemoved -= OnSafeLevelVolumePopupRemoved;
+ panGestureDetector.Detected -= OnPanGestureDetected;
window.Remove(mainView);
+ panGestureDetector?.Dispose();
mainView?.Dispose();
}
base.Dispose(type);
private Position2D UpdatePosition()
{
int posX = ScreenSizeUtils.IsPortrait
- ? ScreenSizeUtils.Width - ((int)(ScreenSizeUtils.Width * AppCommon.sliderPaddingRatioPortrait)) - (int)(AppCommon.mainViewWidthRatio * ScreenSizeUtils.Width)
- : ScreenSizeUtils.Width - ((int)(ScreenSizeUtils.Width * AppCommon.sliderPaddingRatioLandscape)) - (int)(AppCommon.mainViewWidthRatio * ScreenSizeUtils.Width);
+ ? ScreenSizeUtils.Width - (int)(ScreenSizeUtils.Width * (AppCommon.sliderPaddingRatioPortrait + AppCommon.mainViewWidthRatio))
+ : ScreenSizeUtils.Width - (int)(ScreenSizeUtils.Width * (AppCommon.sliderPaddingRatioLandscape + AppCommon.mainViewWidthRatio));
int posY = (ScreenSizeUtils.Height - (int)SizeHeight) / 2;
return new Position2D(posX, posY);