void DissolveEffectApp::StartTransition(Vector2 position, Vector2 displacement) { mAnimation = Animation::New(TRANSITION_DURATION); Dali::Toolkit::DissolveEffectSetCentralLine( mCurrentImage, position, displacement, 0.0f ); mCurrentImage.SetProperty( Toolkit::ImageView::Property::IMAGE, mDissolveEffect ); mAnimation.AnimateTo( Property( mCurrentImage, "uPercentage" ), 1.0f, AlphaFunction::LINEAR ); mNextImage.SetOpacity(0.0f); mAnimation.AnimateTo( Property( mNextImage, Actor::Property::COLOR_ALPHA ), 1.0f, AlphaFunction::LINEAR ); if(mUseHighPrecision) { Dali::Toolkit::DissolveEffectSetCentralLine( mNextImage, position, displacement, 1.0f ); mNextImage.SetProperty( Toolkit::ImageView::Property::IMAGE, mDissolveEffect ); mAnimation.AnimateTo( Property( mNextImage, "uPercentage" ), 0.0f, AlphaFunction::LINEAR ); } else { mAnimation.AnimateTo( Property( mNextImage, Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), AlphaFunction::LINEAR ); } mAnimation.FinishedSignal().Connect( this, &DissolveEffectApp::OnTransitionCompleted ); mAnimation.Play(); mIsTransiting = true; }
void DissolveEffectApp::OnTransitionCompleted( Animation& source ) { if(mUseHighPrecision) { mNextImage.SetProperty( Toolkit::ImageView::Property::IMAGE, mEmptyEffect ); } mParent.Remove( mCurrentImage ); mPanGestureDetector.Detach( mCurrentImage ); mCurrentImage = mNextImage; mPanGestureDetector.Attach( mCurrentImage ); mIsTransiting = false; if( mSlideshow) { mViewTimer.Start(); mTimerReady = false; } }