2 using Tizen.NUI.BaseComponents;
3 using Tizen.NUI.Components;
6 namespace Tizen.NUI.Samples
8 public class BlendPointSample : IExample
11 private Window window;
14 private View contents;
17 private View layoutOriginRoot;
18 private View layoutBlendRoot;
20 private bool contentsLayoutVertical = true;
23 private int viewSize = 50;
24 private View viewOrigin;
25 private View viewBlend;
26 private Animation animationOrigin;
27 private Animation animationBlend;
29 // Animaiton properties controller
30 private Slider sliderBlendPoint;
31 private Slider sliderDuration;
32 private TextLabel labelBlendPoint;
33 private TextLabel labelDuration;
34 private float blendPoint = 0.25f;
35 private float duration = 5.0f;
36 private bool requiredNewAnimationCreate = true;
38 private Button buttonPlayStop;
40 public void Activate()
42 window = NUIApplication.GetDefaultWindow();
44 window.AddAvailableOrientation(Window.WindowOrientation.Portrait);
45 window.AddAvailableOrientation(Window.WindowOrientation.Landscape);
46 window.AddAvailableOrientation(Window.WindowOrientation.PortraitInverse);
47 window.AddAvailableOrientation(Window.WindowOrientation.LandscapeInverse);
49 window.Resized += (o, e) =>
51 DetermineContentsDirection();
57 CreateAnimatableViews();
59 contents.Relayout += (o, e) =>
61 requiredNewAnimationCreate = true;
63 animationOrigin?.Stop();
64 animationBlend?.Stop();
67 DetermineContentsDirection();
72 public void Deactivate()
77 root.DisposeRecursively();
80 animationOrigin?.Stop();
81 animationOrigin?.Clear();
82 animationOrigin?.Dispose();
84 animationBlend?.Stop();
85 animationBlend?.Clear();
86 animationBlend?.Dispose();
89 // Layout relative codes
90 private void DetermineContentsDirection()
92 Size2D windowSize = window.WindowSize;
93 if(windowSize.Width < windowSize.Height)
95 if(!contentsLayoutVertical)
97 ushort viewRootPadding = (ushort)(10 + viewSize / 2);
98 contentsLayoutVertical = true;
99 contents.Layout = new LinearLayout()
101 LinearOrientation = LinearLayout.Orientation.Vertical,
102 Padding = new Extents((ushort)viewRootPadding),
103 CellPadding = new Size2D(viewRootPadding, viewRootPadding),
109 if(contentsLayoutVertical)
111 ushort viewRootPadding = (ushort)(10 + viewSize / 2);
112 contentsLayoutVertical = false;
113 contents.Layout = new LinearLayout()
115 LinearOrientation = LinearLayout.Orientation.Horizontal,
116 Padding = new Extents((ushort)viewRootPadding),
117 CellPadding = new Size2D(viewRootPadding, viewRootPadding),
123 private void CreateLayoutViews()
127 WidthSpecification = LayoutParamPolicies.MatchParent,
128 HeightSpecification = LayoutParamPolicies.MatchParent,
130 Layout = new LinearLayout()
132 LinearOrientation = LinearLayout.Orientation.Vertical,
133 Padding = new Extents(10, 10, 10, 10),
139 WidthSpecification = LayoutParamPolicies.MatchParent,
140 HeightSpecification = LayoutParamPolicies.WrapContent,
142 Layout = new LinearLayout()
144 LinearOrientation = LinearLayout.Orientation.Vertical,
145 Padding = new Extents(10, 10, 10, 10),
150 int viewRootPadding = 10 + viewSize / 2;
151 contentsLayoutVertical = true;
152 contents = new View()
154 WidthSpecification = LayoutParamPolicies.MatchParent,
155 HeightSpecification = LayoutParamPolicies.MatchParent,
157 Layout = new LinearLayout()
159 LinearOrientation = LinearLayout.Orientation.Vertical,
160 Padding = new Extents((ushort)viewRootPadding),
161 CellPadding = new Size2D(viewRootPadding, viewRootPadding),
167 WidthSpecification = LayoutParamPolicies.MatchParent,
168 HeightSpecification = LayoutParamPolicies.WrapContent,
170 Layout = new LinearLayout()
172 LinearOrientation = LinearLayout.Orientation.Vertical,
173 Padding = new Extents(10, 10, 10, 10),
181 layoutOriginRoot = new View()
183 WidthSpecification = LayoutParamPolicies.MatchParent,
184 HeightSpecification = LayoutParamPolicies.MatchParent,
185 BorderlineWidth = 4.0f,
187 layoutBlendRoot = new View()
189 WidthSpecification = LayoutParamPolicies.MatchParent,
190 HeightSpecification = LayoutParamPolicies.MatchParent,
191 BorderlineWidth = 4.0f,
194 contents.Add(layoutOriginRoot);
195 contents.Add(layoutBlendRoot);
198 private void CreateSlider()
200 labelBlendPoint = new TextLabel()
202 WidthSpecification = LayoutParamPolicies.WrapContent,
203 HeightSpecification = LayoutParamPolicies.WrapContent,
204 Text = "Blend Point : " + blendPoint.ToString(),
206 sliderBlendPoint = new Slider()
208 WidthSpecification = LayoutParamPolicies.MatchParent,
209 HeightSpecification = LayoutParamPolicies.WrapContent,
212 CurrentValue = blendPoint,
214 sliderBlendPoint.ValueChanged += (o, e) =>
216 requiredNewAnimationCreate = true;
217 animationOrigin?.Stop();
218 animationBlend?.Stop();
220 blendPoint = e.CurrentValue;
221 labelBlendPoint.Text = "Blend Point : " + blendPoint.ToString();
224 header.Add(labelBlendPoint);
225 header.Add(sliderBlendPoint);
227 labelDuration = new TextLabel()
229 WidthSpecification = LayoutParamPolicies.WrapContent,
230 HeightSpecification = LayoutParamPolicies.WrapContent,
231 Text = "Duration : " + duration.ToString() + " seconds",
233 sliderDuration = new Slider()
235 WidthSpecification = LayoutParamPolicies.MatchParent,
236 HeightSpecification = LayoutParamPolicies.WrapContent,
239 CurrentValue = duration,
241 sliderDuration.ValueChanged += (o, e) =>
243 requiredNewAnimationCreate = true;
244 animationOrigin?.Stop();
245 animationBlend?.Stop();
247 duration = e.CurrentValue;
248 labelDuration.Text = "Duration : " + duration.ToString() + " seconds";
251 header.Add(labelDuration);
252 header.Add(sliderDuration);
255 private void CreateButton()
257 buttonPlayStop = new Button()
259 WidthSpecification = LayoutParamPolicies.MatchParent,
260 Padding = new Extents(10, 10, 10, 10),
264 buttonPlayStop.Clicked += (o, e)=>
266 if(requiredNewAnimationCreate)
268 RegenerateAnimation();
269 animationOrigin.Play();
270 animationBlend.Play();
271 buttonPlayStop.Text = "Stop";
273 else if(animationOrigin != null && animationBlend != null)
275 if(animationOrigin.State == Animation.States.Playing)
277 animationOrigin.Stop();
278 animationBlend.Stop();
279 buttonPlayStop.Text = "Play";
283 animationOrigin.Play();
284 animationBlend.Play();
285 buttonPlayStop.Text = "Stop";
290 buttonPlayStop.Text = "??? Bug!";
294 header.Add(buttonPlayStop);
297 private void CreateAnimatableViews()
299 viewOrigin = CreateNewAnimatableView("O");
300 viewBlend = CreateNewAnimatableView("B");
302 layoutOriginRoot.Add(viewOrigin);
303 layoutBlendRoot.Add(viewBlend);
306 private void RegenerateAnimation()
308 requiredNewAnimationCreate = false;
310 animationOrigin?.Dispose();
311 animationOrigin = null;
312 animationBlend?.Dispose();
313 animationBlend = null;
315 Size originSize = layoutOriginRoot.Size;
316 Size blendSize = layoutBlendRoot.Size;
318 animationOrigin = CreateNewAnimation(viewOrigin, originSize, duration, 0.0f);
319 animationBlend = CreateNewAnimation(viewBlend, blendSize, duration, blendPoint);
323 // Creation functions. It will be used when we are doing duplicated jobs
324 private View CreateNewAnimatableView(string name)
326 View view = new TextLabel()
329 VerticalAlignment = VerticalAlignment.Center,
330 HorizontalAlignment = HorizontalAlignment.Center,
332 Size2D = new Size2D(viewSize, viewSize),
334 PositionUsesPivotPoint = true,
335 PivotPoint = Position.PivotPointCenter,
336 ParentOrigin = Position.ParentOriginCenter,
338 BackgroundColor = Color.BlancheDalmond,
339 BorderlineColor = Color.Blue,
340 BorderlineWidth = 10.0f,
341 BorderlineOffset = -1.0f,
343 CornerRadiusPolicy = VisualTransformPolicyType.Relative,
344 CornerRadius = new Vector4(0.5f, 0.5f, 0.0f, 0.5f),
348 private Animation CreateNewAnimation(View target, Size parentSize, float durationSeconds, float blendPoint)
350 Animation animation = new Animation((int)(durationSeconds * 1000.0f))
352 BlendPoint = blendPoint,
354 animation.Finished += (o, e) =>
357 target.Position = new Position(0.0f, 0.0f);
358 target.Orientation = new Rotation(new Radian(0.0f), Vector3.ZAxis);
361 buttonPlayStop.Text = "Play";
365 KeyFrames positionKeyFrames = new KeyFrames();
366 positionKeyFrames.Add(0.0f, new Vector3(-parentSize.Width * 0.5f, parentSize.Height * 0.5f, 0.0f));
367 positionKeyFrames.Add(0.2f, new Vector3(parentSize.Width * 0.5f, parentSize.Height * 0.5f, 0.0f));
368 positionKeyFrames.Add(0.25f, new Vector3(parentSize.Width * 0.5f, parentSize.Height * 0.5f, 0.0f));
369 positionKeyFrames.Add(0.45f, new Vector3(parentSize.Width * 0.5f, -parentSize.Height * 0.5f, 0.0f));
370 positionKeyFrames.Add(0.5f, new Vector3(parentSize.Width * 0.5f, -parentSize.Height * 0.5f, 0.0f));
371 positionKeyFrames.Add(0.7f, new Vector3(-parentSize.Width * 0.5f, -parentSize.Height * 0.5f, 0.0f));
372 positionKeyFrames.Add(0.75f, new Vector3(-parentSize.Width * 0.5f, -parentSize.Height * 0.5f, 0.0f));
373 positionKeyFrames.Add(0.95f, new Vector3(-parentSize.Width * 0.5f, parentSize.Height * 0.5f, 0.0f));
374 positionKeyFrames.Add(1.0f, new Vector3(-parentSize.Width * 0.5f, parentSize.Height * 0.5f, 0.0f));
376 KeyFrames orientationKeyFrames = new KeyFrames();
377 orientationKeyFrames.Add(0.0f, new Rotation(new Radian(new Degree(-45.0f)), Vector3.ZAxis));
378 orientationKeyFrames.Add(0.2f, new Rotation(new Radian(new Degree(-45.0f)), Vector3.ZAxis));
379 orientationKeyFrames.Add(0.25f, new Rotation(new Radian(new Degree(-135.0f)), Vector3.ZAxis));
380 orientationKeyFrames.Add(0.45f, new Rotation(new Radian(new Degree(-135.0f)), Vector3.ZAxis));
381 orientationKeyFrames.Add(0.5f, new Rotation(new Radian(new Degree(135.0f)), Vector3.ZAxis));
382 orientationKeyFrames.Add(0.7f, new Rotation(new Radian(new Degree(135.0f)), Vector3.ZAxis));
383 orientationKeyFrames.Add(0.75f, new Rotation(new Radian(new Degree(45.0f)), Vector3.ZAxis));
384 orientationKeyFrames.Add(0.95f, new Rotation(new Radian(new Degree(45.0f)), Vector3.ZAxis));
385 orientationKeyFrames.Add(1.0f, new Rotation(new Radian(new Degree(-45.0f)), Vector3.ZAxis));
387 animation.AnimateBetween(target, "Position", positionKeyFrames);
388 animation.AnimateBetween(target, "Orientation", orientationKeyFrames);