优化贴边隐藏动画

This commit is contained in:
liufei
2022-01-09 16:00:47 +08:00
parent 9eaca05012
commit 1b9e4fc79d

View File

@@ -38,7 +38,6 @@ namespace GeekDesk
public static int hotKeyId = -1; public static int hotKeyId = -1;
public static int toDoHotKeyId = -1; public static int toDoHotKeyId = -1;
public static MainWindow mainWindow; public static MainWindow mainWindow;
public static MarginHide hide;
public MainWindow() public MainWindow()
{ {
LoadData(); LoadData();
@@ -50,10 +49,10 @@ namespace GeekDesk
ToDoTask.BackLogCheck(); ToDoTask.BackLogCheck();
////实例化隐藏 Hide类进行时间timer设置 ////实例化隐藏 Hide类进行时间timer设置
hide = new MarginHide(this); MarginHide.ReadyHide(this);
if (appData.AppConfig.MarginHide) if (appData.AppConfig.MarginHide)
{ {
hide.TimerSet(); MarginHide.StartHide();
} }
} }
@@ -65,11 +64,11 @@ namespace GeekDesk
this.DataContext = appData; this.DataContext = appData;
if (appData.MenuList.Count == 0) if (appData.MenuList.Count == 0)
{ {
appData.MenuList.Add(new MenuInfo() { MenuName = "NewMenu", MenuId = System.Guid.NewGuid().ToString(), MenuEdit = Visibility.Collapsed}); appData.MenuList.Add(new MenuInfo() { MenuName = "NewMenu", MenuId = System.Guid.NewGuid().ToString(), MenuEdit = Visibility.Collapsed });
} }
this.Width = appData.AppConfig.WindowWidth; this.Width = appData.AppConfig.WindowWidth;
this.Height = appData.AppConfig.WindowHeight; this.Height = appData.AppConfig.WindowHeight;
} }
/// <summary> /// <summary>
@@ -84,11 +83,13 @@ namespace GeekDesk
if (appData.AppConfig.AppAnimation) if (appData.AppConfig.AppAnimation)
{ {
this.Opacity = 0; this.Opacity = 0;
} else }
else
{ {
this.Visibility = Visibility.Collapsed; this.Visibility = Visibility.Collapsed;
} }
} else }
else
{ {
ShowApp(); ShowApp();
} }
@@ -130,7 +131,7 @@ namespace GeekDesk
{ {
if (MotionControl.hotkeyFinished) if (MotionControl.hotkeyFinished)
{ {
if (mainWindow.Visibility == Visibility.Collapsed || mainWindow.Opacity == 0) if (mainWindow.Visibility == Visibility.Collapsed || mainWindow.Opacity == 0 || MarginHide.IS_HIDE)
{ {
ShowApp(); ShowApp();
} }
@@ -160,44 +161,7 @@ namespace GeekDesk
} }
} }
/// <summary>
/// 淡入淡出效果
/// </summary>
/// <param name="opacity"></param>
/// <param name="milliseconds"></param>
/// <param name="visibility"></param>
public static void FadeStoryBoard(int opacity, int milliseconds, Visibility visibility)
{
if (appData.AppConfig.AppAnimation)
{
DoubleAnimation opacityAnimation = new DoubleAnimation
{
From = mainWindow.Opacity,
To = opacity,
Duration = new Duration(TimeSpan.FromMilliseconds(milliseconds))
};
opacityAnimation.Completed += (s, e) =>
{
mainWindow.BeginAnimation(OpacityProperty, null);
if (visibility == Visibility.Visible)
{
mainWindow.Opacity = 1;
} else
{
mainWindow.Opacity = 0;
}
};
Timeline.SetDesiredFrameRate(opacityAnimation, 30);
mainWindow.BeginAnimation(OpacityProperty, opacityAnimation);
} else
{
//防止关闭动画后 窗体仍是0透明度
mainWindow.Opacity = 1;
mainWindow.Visibility = visibility;
}
}
/// <summary> /// <summary>
/// 注册新建待办的热键 /// 注册新建待办的热键
@@ -207,7 +171,7 @@ namespace GeekDesk
try try
{ {
if (appData.AppConfig.ToDoHotkeyModifiers!=0) if (appData.AppConfig.ToDoHotkeyModifiers != 0)
{ {
//加载完毕注册热键 //加载完毕注册热键
toDoHotKeyId = GlobalHotKey.RegisterHotKey(appData.AppConfig.ToDoHotkeyModifiers, appData.AppConfig.ToDoHotkey, () => toDoHotKeyId = GlobalHotKey.RegisterHotKey(appData.AppConfig.ToDoHotkeyModifiers, appData.AppConfig.ToDoHotkey, () =>
@@ -253,7 +217,7 @@ namespace GeekDesk
} }
/// <summary> /// <summary>
/// 程序窗体拖动 /// 程序窗体拖动
/// </summary> /// </summary>
@@ -299,13 +263,14 @@ namespace GeekDesk
if (appData.AppConfig.AppAnimation) if (appData.AppConfig.AppAnimation)
{ {
FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed); FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
} else }
else
{ {
this.Visibility = Visibility.Collapsed; this.Visibility = Visibility.Collapsed;
} }
} }
///// <summary> ///// <summary>
///// 左侧栏宽度改变 持久化 ///// 左侧栏宽度改变 持久化
@@ -317,7 +282,7 @@ namespace GeekDesk
// appData.AppConfig.MenuCardWidth = LeftColumn.Width.Value; // appData.AppConfig.MenuCardWidth = LeftColumn.Width.Value;
//} //}
/// <summary> /// <summary>
/// 右键任务栏图标 显示主面板 /// 右键任务栏图标 显示主面板
@@ -335,6 +300,8 @@ namespace GeekDesk
//{ //{
// return; // return;
//} //}
//修改贴边隐藏状态为未隐藏
MarginHide.IS_HIDE = false;
if (appData.AppConfig.FollowMouse) if (appData.AppConfig.FollowMouse)
{ {
ShowWindowFollowMouse.Show(mainWindow, MousePosition.CENTER, 0, 0, false); ShowWindowFollowMouse.Show(mainWindow, MousePosition.CENTER, 0, 0, false);
@@ -348,6 +315,45 @@ namespace GeekDesk
FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed); FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
} }
/// <summary>
/// 淡入淡出效果
/// </summary>
/// <param name="opacity"></param>
/// <param name="milliseconds"></param>
/// <param name="visibility"></param>
public static void FadeStoryBoard(int opacity, int milliseconds, Visibility visibility)
{
if (appData.AppConfig.AppAnimation)
{
DoubleAnimation opacityAnimation = new DoubleAnimation
{
From = mainWindow.Opacity,
To = opacity,
Duration = new Duration(TimeSpan.FromMilliseconds(milliseconds))
};
opacityAnimation.Completed += (s, e) =>
{
mainWindow.BeginAnimation(OpacityProperty, null);
if (visibility == Visibility.Visible)
{
mainWindow.Opacity = 1;
}
else
{
mainWindow.Opacity = 0;
}
};
Timeline.SetDesiredFrameRate(opacityAnimation, 60);
mainWindow.BeginAnimation(OpacityProperty, opacityAnimation);
}
else
{
//防止关闭动画后 窗体仍是0透明度
mainWindow.Opacity = 1;
mainWindow.Visibility = visibility;
}
}
@@ -392,19 +398,6 @@ namespace GeekDesk
p.Start(); p.Start();
} }
/// <summary>
/// 右键任务栏图标退出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ExitApp(object sender, RoutedEventArgs e)
{
if (appData.AppConfig.MouseMiddleShow)
{
MouseHookThread.Dispose();
}
Application.Current.Shutdown();
}
@@ -451,7 +444,7 @@ namespace GeekDesk
if (appData.AppConfig.AppHideType == AppHideType.LOST_FOCUS) if (appData.AppConfig.AppHideType == AppHideType.LOST_FOCUS)
{ {
//如果开启了贴边隐藏 则窗体不贴边才隐藏窗口 //如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
if (appData.AppConfig.MarginHide && !hide.IsMargin()) if (appData.AppConfig.MarginHide && !MarginHide.IS_HIDE)
{ {
this.Visibility = Visibility.Collapsed; this.Visibility = Visibility.Collapsed;
} }
@@ -476,6 +469,21 @@ namespace GeekDesk
} }
} }
/// <summary>
/// 右键任务栏图标退出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ExitApp(object sender, RoutedEventArgs e)
{
if (appData.AppConfig.MouseMiddleShow)
{
MouseHookThread.Dispose();
}
Application.Current.Shutdown();
}
/// <summary> /// <summary>
/// 重启 /// 重启
/// </summary> /// </summary>
@@ -483,10 +491,13 @@ namespace GeekDesk
/// <param name="e"></param> /// <param name="e"></param>
private void ReStartApp(object sender, RoutedEventArgs e) private void ReStartApp(object sender, RoutedEventArgs e)
{ {
MouseHookThread.Dispose(); if (appData.AppConfig.MouseMiddleShow)
{
MouseHookThread.Dispose();
}
Process p = new Process(); Process p = new Process();
p.StartInfo.FileName = Constants.APP_DIR + Constants.MY_NAME + ".exe"; p.StartInfo.FileName = Constants.APP_DIR + "GeekDesk.exe";
p.StartInfo.WorkingDirectory = Constants.APP_DIR; p.StartInfo.WorkingDirectory = Constants.APP_DIR;
p.Start(); p.Start();