6
6
using Avalonia . Styling ;
7
7
using PCL . Neo . Animations . Easings ;
8
8
using System ;
9
- using System . Collections . Generic ;
10
9
using System . Threading . Tasks ;
11
10
12
11
namespace PCL . Neo . Animations
@@ -28,7 +27,7 @@ public static Easing GetEasing(this EasingType easingType)
28
27
EasingType . CubicEaseOut => new CubicEaseOut ( ) ,
29
28
EasingType . CubicEaseInOut => new CubicEaseInOut ( ) ,
30
29
EasingType . QuarticEaseIn => new QuarticEaseIn ( ) ,
31
- EasingType . QuarticEaseOut => new QuarticEaseOut ( ) ,
30
+ EasingType . QuarticEaseOut => new QuarticEaseOut ( ) ,
32
31
EasingType . QuarticEaseInOut => new QuarticEaseInOut ( ) ,
33
32
EasingType . QuinticEaseIn => new QuinticEaseIn ( ) ,
34
33
EasingType . QuinticEaseOut => new QuinticEaseOut ( ) ,
@@ -65,56 +64,52 @@ public static async Task SlideInFromRightAsync(this Control control, int duratio
65
64
// 保存原始状态
66
65
var originalOpacity = control . Opacity ;
67
66
var originalTransform = control . RenderTransform ;
68
-
67
+
69
68
// 设置初始状态
70
69
control . Opacity = 0 ;
71
70
control . RenderTransform = new TranslateTransform ( 100 , 0 ) ;
72
-
71
+
73
72
// 等待UI更新
74
73
await Task . Delay ( 10 ) ;
75
-
74
+
76
75
// 创建不透明度动画
77
76
var opacityAnimation = new Animation
78
77
{
79
78
Duration = TimeSpan . FromMilliseconds ( duration ) ,
80
79
FillMode = FillMode . Forward ,
81
80
Easing = easingType . GetEasing ( )
82
81
} ;
83
-
82
+
84
83
// 使用正确的Setter语法
85
- var opacityFrame1 = new KeyFrame ( ) ;
86
- opacityFrame1 . Cue = new Cue ( 0d ) ;
84
+ var opacityFrame1 = new KeyFrame { Cue = new Cue ( 0d ) } ;
87
85
opacityFrame1 . Setters . Add ( new Setter ( Visual . OpacityProperty , 0d ) ) ;
88
86
opacityAnimation . Children . Add ( opacityFrame1 ) ;
89
-
90
- var opacityFrame2 = new KeyFrame ( ) ;
91
- opacityFrame2 . Cue = new Cue ( 1d ) ;
87
+
88
+ var opacityFrame2 = new KeyFrame { Cue = new Cue ( 1d ) } ;
92
89
opacityFrame2 . Setters . Add ( new Setter ( Visual . OpacityProperty , originalOpacity ) ) ;
93
90
opacityAnimation . Children . Add ( opacityFrame2 ) ;
94
-
91
+
95
92
// 创建位移动画
96
93
var translateAnimation = new Animation
97
94
{
98
95
Duration = TimeSpan . FromMilliseconds ( duration ) ,
99
96
FillMode = FillMode . Forward ,
100
97
Easing = easingType . GetEasing ( )
101
98
} ;
102
-
103
- var translateFrame1 = new KeyFrame ( ) ;
104
- translateFrame1 . Cue = new Cue ( 0d ) ;
99
+
100
+ var translateFrame1 = new KeyFrame { Cue = new Cue ( 0d ) } ;
105
101
translateFrame1 . Setters . Add ( new Setter ( Visual . RenderTransformProperty , new TranslateTransform ( 100 , 0 ) ) ) ;
106
102
translateAnimation . Children . Add ( translateFrame1 ) ;
107
-
108
- var translateFrame2 = new KeyFrame ( ) ;
109
- translateFrame2 . Cue = new Cue ( 1d ) ;
103
+
104
+ var translateFrame2 = new KeyFrame { Cue = new Cue ( 1d ) } ;
110
105
translateFrame2 . Setters . Add ( new Setter ( Visual . RenderTransformProperty , originalTransform ?? new TranslateTransform ( 0 , 0 ) ) ) ;
111
106
translateAnimation . Children . Add ( translateFrame2 ) ;
112
-
107
+
113
108
// 执行动画
114
109
await opacityAnimation . RunAsync ( control ) ;
115
110
await translateAnimation . RunAsync ( control ) ;
116
111
}
117
-
112
+
118
113
/// <summary>
119
114
/// 从左侧滑入动画
120
115
/// </summary>
@@ -125,55 +120,51 @@ public static async Task SlideInFromLeftAsync(this Control control, int duration
125
120
// 保存原始状态
126
121
var originalOpacity = control . Opacity ;
127
122
var originalTransform = control . RenderTransform ;
128
-
123
+
129
124
// 设置初始状态
130
125
control . Opacity = 0 ;
131
126
control . RenderTransform = new TranslateTransform ( - 100 , 0 ) ;
132
-
127
+
133
128
// 等待UI更新
134
129
await Task . Delay ( 10 ) ;
135
-
130
+
136
131
// 创建不透明度动画
137
132
var opacityAnimation = new Animation
138
133
{
139
134
Duration = TimeSpan . FromMilliseconds ( duration ) ,
140
135
FillMode = FillMode . Forward ,
141
136
Easing = easingType . GetEasing ( )
142
137
} ;
143
-
144
- var opacityFrame1 = new KeyFrame ( ) ;
145
- opacityFrame1 . Cue = new Cue ( 0d ) ;
138
+
139
+ var opacityFrame1 = new KeyFrame { Cue = new Cue ( 0d ) } ;
146
140
opacityFrame1 . Setters . Add ( new Setter ( Visual . OpacityProperty , 0d ) ) ;
147
141
opacityAnimation . Children . Add ( opacityFrame1 ) ;
148
-
149
- var opacityFrame2 = new KeyFrame ( ) ;
150
- opacityFrame2 . Cue = new Cue ( 1d ) ;
142
+
143
+ var opacityFrame2 = new KeyFrame { Cue = new Cue ( 1d ) } ;
151
144
opacityFrame2 . Setters . Add ( new Setter ( Visual . OpacityProperty , originalOpacity ) ) ;
152
145
opacityAnimation . Children . Add ( opacityFrame2 ) ;
153
-
146
+
154
147
// 创建位移动画
155
148
var translateAnimation = new Animation
156
149
{
157
150
Duration = TimeSpan . FromMilliseconds ( duration ) ,
158
151
FillMode = FillMode . Forward ,
159
152
Easing = easingType . GetEasing ( )
160
153
} ;
161
-
162
- var translateFrame1 = new KeyFrame ( ) ;
163
- translateFrame1 . Cue = new Cue ( 0d ) ;
154
+
155
+ var translateFrame1 = new KeyFrame { Cue = new Cue ( 0d ) } ;
164
156
translateFrame1 . Setters . Add ( new Setter ( Visual . RenderTransformProperty , new TranslateTransform ( - 100 , 0 ) ) ) ;
165
157
translateAnimation . Children . Add ( translateFrame1 ) ;
166
-
167
- var translateFrame2 = new KeyFrame ( ) ;
168
- translateFrame2 . Cue = new Cue ( 1d ) ;
158
+
159
+ var translateFrame2 = new KeyFrame { Cue = new Cue ( 1d ) } ;
169
160
translateFrame2 . Setters . Add ( new Setter ( Visual . RenderTransformProperty , originalTransform ?? new TranslateTransform ( 0 , 0 ) ) ) ;
170
161
translateAnimation . Children . Add ( translateFrame2 ) ;
171
-
162
+
172
163
// 执行动画
173
164
await opacityAnimation . RunAsync ( control ) ;
174
165
await translateAnimation . RunAsync ( control ) ;
175
166
}
176
-
167
+
177
168
/// <summary>
178
169
/// 淡入动画
179
170
/// </summary>
@@ -183,35 +174,33 @@ public static async Task FadeInAsync(this Control control, int duration = 300, E
183
174
184
175
// 保存原始状态
185
176
var originalOpacity = control . Opacity ;
186
-
177
+
187
178
// 设置初始状态
188
179
control . Opacity = 0 ;
189
-
180
+
190
181
// 等待UI更新
191
182
await Task . Delay ( 10 ) ;
192
-
183
+
193
184
// 创建不透明度动画
194
185
var opacityAnimation = new Animation
195
186
{
196
187
Duration = TimeSpan . FromMilliseconds ( duration ) ,
197
188
FillMode = FillMode . Forward ,
198
189
Easing = easingType . GetEasing ( )
199
190
} ;
200
-
201
- var opacityFrame1 = new KeyFrame ( ) ;
202
- opacityFrame1 . Cue = new Cue ( 0d ) ;
191
+
192
+ var opacityFrame1 = new KeyFrame { Cue = new Cue ( 0d ) } ;
203
193
opacityFrame1 . Setters . Add ( new Setter ( Visual . OpacityProperty , 0d ) ) ;
204
194
opacityAnimation . Children . Add ( opacityFrame1 ) ;
205
-
206
- var opacityFrame2 = new KeyFrame ( ) ;
207
- opacityFrame2 . Cue = new Cue ( 1d ) ;
195
+
196
+ var opacityFrame2 = new KeyFrame { Cue = new Cue ( 1d ) } ;
208
197
opacityFrame2 . Setters . Add ( new Setter ( Visual . OpacityProperty , originalOpacity ) ) ;
209
198
opacityAnimation . Children . Add ( opacityFrame2 ) ;
210
-
199
+
211
200
// 执行动画
212
201
await opacityAnimation . RunAsync ( control ) ;
213
202
}
214
-
203
+
215
204
/// <summary>
216
205
/// 淡出动画
217
206
/// </summary>
@@ -221,33 +210,31 @@ public static async Task FadeOutAsync(this Control control, int duration = 300,
221
210
222
211
// 保存原始状态
223
212
var originalOpacity = control . Opacity ;
224
-
213
+
225
214
// 等待UI更新
226
215
await Task . Delay ( 10 ) ;
227
-
216
+
228
217
// 创建不透明度动画
229
218
var opacityAnimation = new Animation
230
219
{
231
220
Duration = TimeSpan . FromMilliseconds ( duration ) ,
232
221
FillMode = FillMode . Forward ,
233
222
Easing = easingType . GetEasing ( )
234
223
} ;
235
-
236
- var opacityFrame1 = new KeyFrame ( ) ;
237
- opacityFrame1 . Cue = new Cue ( 0d ) ;
224
+
225
+ var opacityFrame1 = new KeyFrame { Cue = new Cue ( 0d ) } ;
238
226
opacityFrame1 . Setters . Add ( new Setter ( Visual . OpacityProperty , originalOpacity ) ) ;
239
227
opacityAnimation . Children . Add ( opacityFrame1 ) ;
240
-
241
- var opacityFrame2 = new KeyFrame ( ) ;
242
- opacityFrame2 . Cue = new Cue ( 1d ) ;
228
+
229
+ var opacityFrame2 = new KeyFrame { Cue = new Cue ( 1d ) } ;
243
230
opacityFrame2 . Setters . Add ( new Setter ( Visual . OpacityProperty , 0d ) ) ;
244
231
opacityAnimation . Children . Add ( opacityFrame2 ) ;
245
-
232
+
246
233
// 执行动画
247
234
await opacityAnimation . RunAsync ( control ) ;
248
-
235
+
249
236
// 设置最终状态
250
237
control . Opacity = 0 ;
251
238
}
252
239
}
253
- }
240
+ }
0 commit comments