Tizen 开发 - UI:Scene Management
来源:互联网 发布:王牌特工2 知乎 编辑:程序博客网 时间:2024/06/09 21:00
一个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; }}
- Tizen 开发 - UI:Scene Management
- Tizen开发 - UI: Creating the Application UI
- Scene Management --- scene graph
- Scene Management - Scene Graph
- Scene Management - Scene Graph
- Tizen 开发(5) - UI Application Fundamentals
- Object-Oriented Scene Management
- Scene Management --- Culling
- Scene Management --- Collision Detection
- More on Scene Management
- chap5 Ogre Scene Management
- Tizen开发(4) - Tizen::App
- Tizen 快速开发入门
- tizen开发(2)
- tizen开发(3)
- Tizen开发 - Application Control
- Tizen开发 - Data Control
- Tizen开发 - Package Manage
- libvirt与qemu通信
- C# 操作 SQL Server(查询)
- 论我为什么想去实习--研究僧之反思
- 私人数组
- GridView1_RowUpdating取不到新值
- Tizen 开发 - UI:Scene Management
- poj_1201Intervals
- javaweb框架--自定义标签与freemaker结合
- Interleaving String
- 2、Cocoa Touch
- cocos2d-x 文字描边
- 安装和使用memcached
- Visio 文本框大小设置
- usaco/1.1 Greedy Gift Givers