Tizen 开发 - UI:Scene Management

一个scene是UI跳转的基本单元,包括一个form和一个panel,或只有一个form。

1. functions

1)管理form的生命周期,管理forms或者panels的跳转;

2)管理scene的变换;

3)为forms或panels的跳转增加动画。

2. 注册所有的scenes

1)实现 Tizen::Ui::Scenes::IFormFactory和 Tizen::Ui::Scenes::IPanelFactory,并为forms和panels指定特定的ID;

class MyFormFactory:
   public Tizen::Ui::Scenes::IFormFactory 

class MyPanelFactory:
   public Tizen::Ui::Scenes::IPanelFactory 


static MyFormFactory myFormFactory;
myFormFactory.Construct();
static MyPanelFactory myPanelFactory;
myPanelFactory.Construct();
static MyPolicyProvider myPolicyProvider;

pSceneManager->RegisterFormFactory(myFormFactory);
pSceneManager->RegisterPanelFactory(myPanelFactory);

2)在OnAppInitializing中使用RegisterScene注册所有的scenes。

SceneManager* pSceneManager = SceneManager::GetInstance();

pSceneManager->RegisterScene(L"InitialScene", L"InitialForm", L"");
pSceneManager->RegisterScene(L"MainContactsListScene", L"MainForm", L"ContactsListPanel");
pSceneManager->RegisterScene(L"MainGroupsListScene", L"MainForm", L"GroupsPanel");
pSceneManager->RegisterScene(L"MainFavouritesListScene", L"MainForm", L"FavouritesListPanel");
pSceneManager->RegisterScene(L"DetailScene", L"DetailForm", L"");

3. Scene历史和生命周期
1)General Forward and Backward Transitions
SCENE_HISTORY_OPTION_ADD_HISTORY 保证当前的scene能进入scene历史。

2)Forward Transition with Transition Options
SCENE_DESTROY_OPTION_KEEP 保证当前的scene alive,除非被显示的destroy掉,

SCENE_HISTORY_OPTION_NO_HISTORY and SCENE_DESTROY_OPTION_DESTROY 可以保证当前的scene不进入scene历史。

3)Backward Transition to an Adjacent or Non-adjacent Scene
为GoBackward指定ID可以跳转回指定的scene,他们之间的scene会被释放掉。

4)Tab-style Panel Transitions

5)可以通过GetHistoryN() 和 AddToHistory() 来备份存储应用的scene 历史,这对于重新launch应用时有用。

6)可以实现Tizen::Ui::Scenes::ISceneManagerEventListener 并使用scene manager注册;每个scene也可以通过实现Tizen::Ui::Scenes::ISceneEventListener来接收scene 转换的事件,这个监听只能用在当前要创建的scene上。
       OnSceneDeactivated() 和 OnSceneActivatedN()在scene转换过程中被调用;
7)使用  Tizen::Ui::Scenes::ISceneTransitionPolicyProvider 来manage predefined UI scene switching scenarios。
class MyPolicyProvider:
   public Tizen::Ui::Scenes::ISceneTransitionPolicyProvider

Tizen::Base::String 
MyPolicyProvider::GetNextScene(const Tizen::Base::String& currentSceneId, const Tizen::Base::Collection::IList* pArgs)
{
   String nextSceneId(L"");


   if (currentSceneId == L"InitialScene")
      nextSceneId = L"MainContactsListScene";


   return nextSceneId;
}

void 
MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
{
   result r = E_SUCCESS;
   SceneManager* pSceneManager = SceneManager::GetInstance();


   switch (actionId)
   {
      case ID_BUTTON_1:
         r = pSceneManager->GoForward(ForwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_NONE,
                                      SCENE_HISTORY_OPTION_NO_HISTORY));
         break;


      default:
         break;
   }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值