{
if (!transitionFinished)
{
- Tizen.Log.Error("NUI", "Transition is still not finished.\n");
+ Tizen.Log.Info("NUI", "Transition is still not finished.\n");
return;
}
{
if (!transitionFinished)
{
- Tizen.Log.Error("NUI", "Transition is still not finished.\n");
+ Tizen.Log.Info("NUI", "Transition is still not finished.\n");
return null;
}
/// </summary>
/// <param name="taggedViews">Returned tagged view list..</param>
/// <param name="view">Root View to get tagged child View.</param>
- /// <param name="isPage">Flag to check current View is page or not</param>
- private void RetrieveTaggedViews(List<View> taggedViews, View view, bool isPage)
+ /// <param name="isRoot">Flag to check current View is page or not</param>
+ private void RetrieveTaggedViews(List<View> taggedViews, View view, bool isRoot)
{
- if (!isPage)
+ if (!isRoot && view.TransitionOptions != null)
{
if (!string.IsNullOrEmpty(view.TransitionOptions?.TransitionTag))
{
taggedViews.Add((view as View));
+ if (view.TransitionOptions.TransitionWithChild)
+ {
+ return;
+ }
}
- if (view.ChildCount == 0)
- {
- return;
- }
-
- if (view.TransitionOptions?.TransitionWithChild ?? false)
- {
- return;
- }
}
+
foreach (View child in view.Children)
{
RetrieveTaggedViews(taggedViews, child, false);
/// Creates an initialized fade.<br />
/// </summary>
/// <remarks>DurationmSeconds must be greater than zero.</remarks>
- public FadeTransitionItem(View view, float opacity, bool isAppearing, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.FadeTransitionItem.New(view.SwigCPtr, opacity, timePeriod.SwigCPtr), true)
+ public FadeTransitionItem(View view, float opacity, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.FadeTransitionItem.New(view.SwigCPtr, opacity, timePeriod.SwigCPtr), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- AppearingTransition = isAppearing;
+ AppearingTransition = appearingTransition;
AlphaFunction = alphaFunction;
}
/// Creates an initialized ScaleTransition.<br />
/// </summary>
/// <remarks>Delay and duration of timePeriod must be greater than zero.</remarks>
- public ScaleTransitionItem(View view, float scale, bool isAppearing, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.ScaleTransitionItem.New(view.SwigCPtr, scale, timePeriod.SwigCPtr), true)
+ public ScaleTransitionItem(View view, float scale, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.ScaleTransitionItem.New(view.SwigCPtr, scale, timePeriod.SwigCPtr), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- AppearingTransition = isAppearing;
+ AppearingTransition = appearingTransition;
AlphaFunction = alphaFunction;
}
/// Creates an initialized ScaleTransition.<br />
/// </summary>
/// <remarks>Delay and duration of timePeriod must be greater than zero.</remarks>
- public ScaleTransitionItem(View view, Vector2 scale, bool isAppearing, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.ScaleTransitionItem.New(view.SwigCPtr, scale.SwigCPtr, timePeriod.SwigCPtr), true)
+ public ScaleTransitionItem(View view, Vector2 scale, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.ScaleTransitionItem.New(view.SwigCPtr, scale.SwigCPtr, timePeriod.SwigCPtr), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- AppearingTransition = isAppearing;
+ AppearingTransition = appearingTransition;
AlphaFunction = alphaFunction;
}
/// Creates an initialized SlideTransition.<br />
/// </summary>
/// <remarks>Delay and duration of timePeriod must be greater than zero.</remarks>
- public SlideTransitionItem(View view, Vector2 direction, bool isAppearing, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.SlideTransitionItem.New(view.SwigCPtr, direction.SwigCPtr, timePeriod.SwigCPtr), true)
+ public SlideTransitionItem(View view, Vector2 direction, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.SlideTransitionItem.New(view.SwigCPtr, direction.SwigCPtr, timePeriod.SwigCPtr), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
- AppearingTransition = isAppearing;
+ AppearingTransition = appearingTransition;
AlphaFunction = alphaFunction;
}
--- /dev/null
+/*
+ * Copyright(c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.ComponentModel;
+using Tizen.NUI.BaseComponents;
+using System.Collections.Generic;
+
+namespace Tizen.NUI
+{
+ /// <summary>
+ /// TransitionGroupItem is an object to set Fade transition of a View that will appear or disappear.
+ /// TransitionGroupItem object is required to be added to the TransitionSet to play.
+ /// </summary>
+ internal class TransitionGroupItem : TransitionItemBase
+ {
+ private List<TransitionItemBase> transitionItemList = null;
+
+ private bool useGroupTimePeriod = false;
+ private bool stepTransition = false;
+ private bool useGroupAlphaFunction = false;
+
+ private View transitionView = null;
+
+ /// <summary>
+ /// Creates an initialized fade.<br />
+ /// </summary>
+ /// <remarks>DurationmSeconds must be greater than zero.</remarks>
+ public TransitionGroupItem(View view, List<TransitionBase> transitionList, bool useGroupTimePeriod, bool stepTransition, bool useGroupAlphaFunction, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction)
+ : base(view, appearingTransition, timePeriod, alphaFunction)
+ {
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+ this.useGroupTimePeriod = useGroupTimePeriod;
+ this.stepTransition = stepTransition;
+ this.useGroupAlphaFunction = useGroupAlphaFunction;
+ transitionView = view;
+
+ transitionItemList = new List<TransitionItemBase>();
+ for (int index = 0; index < transitionList.Count; ++index)
+ {
+ TimePeriod localTimePeriod = transitionList[index].GetTimePeriod();
+ AlphaFunction localAlphaFunction = transitionList[index].GetAlphaFunction();
+ if (useGroupTimePeriod)
+ {
+ int stepMilliseconds = 0;
+ if (stepTransition)
+ {
+ stepMilliseconds = TimePeriod.DurationMilliseconds / transitionList.Count;
+ }
+ localTimePeriod.DelayMilliseconds += TimePeriod.DelayMilliseconds + stepMilliseconds * index;
+ }
+ if (useGroupAlphaFunction)
+ {
+ localAlphaFunction = AlphaFunction;
+ }
+ transitionItemList.Add(transitionList[index].CreateTransition(transitionView, AppearingTransition, localTimePeriod, localAlphaFunction));
+ }
+ }
+
+ public int TransitionCount
+ {
+ get
+ {
+ if(transitionItemList != null)
+ {
+ return transitionItemList.Count;
+ }
+ return 0;
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets whether the View moves with child or not.
+ /// </summary>
+ public override bool TransitionWithChild
+ {
+ set
+ {
+ foreach (TransitionItemBase item in transitionItemList)
+ {
+ item.TransitionWithChild = value;
+ }
+ }
+ }
+
+ public TransitionItemBase GetTransitionAt(int index)
+ {
+ if (transitionItemList != null && index < transitionItemList.Count)
+ {
+ return transitionItemList[index];
+ }
+ return null;
+ }
+ }
+}
internal class TransitionItemBase : BaseHandle
{
+ private bool appearingTransition = true;
+
/// <summary>
/// Creates an initialized TransitionItemBase.<br />
/// </summary>
- public TransitionItemBase(View target, bool isAppearing, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.TransitionItemBase.New(), true)
+ public TransitionItemBase(View target, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction) : this(Interop.TransitionItemBase.New(), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+
+ if(target == null)
+ {
+ Tizen.Log.Error("NUI", "Argument target is empty\n");
+ }
- AppearingTransition = isAppearing;
+ AppearingTransition = appearingTransition;
TimePeriod = timePeriod;
AlphaFunction = alphaFunction;
}
/// <summary>
/// Gets or sets whether the View moves with child or not.
/// </summary>
- public bool TransitionWithChild
+ public virtual bool TransitionWithChild
{
set
{
{
set
{
+ appearingTransition = value;
Interop.TransitionItemBase.SetAppearingTransition(SwigCPtr, value);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
+ get
+ {
+ return appearingTransition;
+ }
}
/// <summary>
public void AddTransition(TransitionItemBase transition)
{
- Interop.TransitionSet.AddTransition(SwigCPtr, transition.SwigCPtr);
- if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ if (transition is TransitionGroupItem)
+ {
+ TransitionGroupItem transitionGroup = transition as TransitionGroupItem;
+ for (int index = 0; index < transitionGroup.TransitionCount; ++index)
+ {
+ this.AddTransition(transitionGroup.GetTransitionAt(index));
+ }
+ }
+ else
+ {
+ Interop.TransitionSet.AddTransition(SwigCPtr, transition.SwigCPtr);
+ if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+ }
}
public TransitionItemBase GetTransitionAt(uint index)
}
}
- internal override TransitionItemBase CreateTransition(View view, bool isAppearing)
+ internal override TransitionItemBase CreateTransition(View view, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction)
{
- FadeTransitionItem fade = new FadeTransitionItem(view, Opacity, isAppearing, GetTimePeriod(), GetAlphaFunction());
+ FadeTransitionItem fade = new FadeTransitionItem(view, Opacity, appearingTransition, timePeriod, alphaFunction);
return fade;
}
}
/// <since_tizen> 9 </since_tizen>
public Vector2 ScaleFactor { get; set; } = new Vector2(0.0f, 0.0f);
- internal override TransitionItemBase CreateTransition(View view, bool isAppearing)
+ internal override TransitionItemBase CreateTransition(View view, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction)
{
- ScaleTransitionItem scale = new ScaleTransitionItem(view, ScaleFactor, isAppearing, GetTimePeriod(), GetAlphaFunction());
+ ScaleTransitionItem scale = new ScaleTransitionItem(view, ScaleFactor, appearingTransition, timePeriod, alphaFunction);
return scale;
}
}
/// <since_tizen> 9 </since_tizen>
public Vector2 Direction { get; set; } = SlideTransitionDirection.Right;
- internal override TransitionItemBase CreateTransition(View view, bool isAppearing)
+ internal override TransitionItemBase CreateTransition(View view, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction)
{
- SlideTransitionItem slide = new SlideTransitionItem(view, Direction, isAppearing, GetTimePeriod(), GetAlphaFunction());
+ SlideTransitionItem slide = new SlideTransitionItem(view, Direction, appearingTransition, timePeriod, alphaFunction);
return slide;
}
}
return alphaFunction ??= new AlphaFunction(AlphaFunction.BuiltinFunctions.Default);
}
- internal virtual TransitionItemBase CreateTransition(View view, bool isAppearing)
+ internal TransitionItemBase CreateTransition(View view, bool appearingTransition)
{
- return new TransitionItemBase(view, isAppearing, GetTimePeriod(), GetAlphaFunction());
+ return CreateTransition(view, appearingTransition, GetTimePeriod(), GetAlphaFunction());
+ }
+
+ internal virtual TransitionItemBase CreateTransition(View view, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction)
+ {
+ return new TransitionItemBase(view, appearingTransition, timePeriod, alphaFunction);
}
[EditorBrowsable(EditorBrowsableState.Never)]
--- /dev/null
+/*
+ * Copyright(c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+using System;
+using System.ComponentModel;
+using Tizen.NUI.BaseComponents;
+using System.Collections.Generic;
+
+namespace Tizen.NUI
+{
+ /// <summary>
+ /// TransitionGroup class is a cluster of properties to use multiple Transitions on a target.
+ /// FadeTransition, ScaleTransition, and SlideTransition can be added on this group with AddTransition method.
+ /// The transitions can be started at the same time or can be started sequentially in order.
+ /// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public class TransitionGroup : TransitionBase
+ {
+ private List<TransitionBase> transitionList = null;
+
+ /// <summary>
+ /// Create a FadeTransition for the View pair.
+ /// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public TransitionGroup()
+ {
+ }
+
+ /// <summary>
+ /// Set/Get whether the child Transitions are affected by the TimePeriod of this TransitionGroup
+ /// If UseGroupTimePeriod is true, child Transitions wait for a TimePeriod.DelayMilliseconds before starting.
+ /// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public bool UseGroupTimePeriod { set; get; } = false;
+
+ /// <summary>
+ /// Set/Get whether the child Transitions are started sequentially or not.
+ /// If StepTransition is true, the child Transitions starts sequentially with an interval of "TimePeriod.DurationMilliseconds/#ofChildTransitions".
+ /// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public bool StepTransition { set; get; } = false;
+
+ /// <summary>
+ /// Set/Get whether the child Transitions are affected by the AlphaFunction of this TransitionGroup
+ /// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public bool UseGroupAlphaFunction { set; get; } = false;
+
+
+ /// <summary>
+ /// Adds a Transition to this TransitionGroup.
+ /// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public void AddTransition(TransitionBase transition)
+ {
+ if (transitionList == null)
+ {
+ transitionList = new List<TransitionBase>();
+ }
+ transitionList.Add(transition);
+ }
+
+ internal override TransitionItemBase CreateTransition(View view, bool appearingTransition, TimePeriod timePeriod, AlphaFunction alphaFunction)
+ {
+ TransitionGroupItem group = new TransitionGroupItem(view, transitionList, UseGroupTimePeriod, StepTransition, UseGroupAlphaFunction, appearingTransition, timePeriod, alphaFunction);
+ return group;
+ }
+ }
+}
layoutView.Add(greenButton);
layoutView.Add(blueButton);
+
+ TransitionGroup transitionGroup = new TransitionGroup()
+ {
+ UseGroupAlphaFunction = true,
+ AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.EaseInOut),
+ };
+ SlideTransition slide = new SlideTransition()
+ {
+ TimePeriod = new TimePeriod(400),
+ AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default),
+ Direction = SlideTransitionDirection.Top
+ };
+ transitionGroup.AddTransition(slide);
+ FadeTransition fade = new FadeTransition()
+ {
+ Opacity = 0.3f,
+ TimePeriod = new TimePeriod(400),
+ AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default)
+ };
+ transitionGroup.AddTransition(fade);
+ ScaleTransition scale = new ScaleTransition()
+ {
+ ScaleFactor = new Vector2(0.3f, 0.3f),
+ TimePeriod = new TimePeriod(400),
+ AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default)
+ };
+ transitionGroup.AddTransition(scale);
+
mainPage = new ContentPage()
{
BackgroundColor = Color.Transparent,
AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default),
ScaleFactor = new Vector2(0.5f, 1.5f)
},
- AppearingTransition = new SlideTransition()
- {
- TimePeriod = new TimePeriod(500),
- AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default),
- Direction = SlideTransitionDirection.Top
- },
+ AppearingTransition = transitionGroup,
};
navigator.Push(mainPage);
};
pageRoot.Add(pageBackground);
+ TransitionGroup transitionGroup = new TransitionGroup();
+ FadeTransition slide = new FadeTransition()
+ {
+ TimePeriod = new TimePeriod(500),
+ AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default),
+ };
+ transitionGroup.AddTransition(slide);
+
Page page = new ContentPage()
{
BackgroundColor = Color.Transparent,
Content = pageRoot,
- AppearingTransition = new FadeTransition()
- {
- TimePeriod = new TimePeriod(500),
- AlphaFunction = new AlphaFunction(AlphaFunction.BuiltinFunctions.Default),
- },
+
+ AppearingTransition = transitionGroup,
DisappearingTransition = new SlideTransition()
{
TimePeriod = new TimePeriod(500),