展讯横竖屏切换问题

所需积分/C币:29 2011-12-13 11:40:08 431KB PDF
23
收藏 收藏
举报

在展讯6800项目中的横竖屏切换的问题,有横竖屏切换部分代码。
功能简介 了黑讯遭信 横竖屏自动切换功能是在G- Sensor作用下,自动切换窗口的横屏显示和竖屏显示功 能,使得用户体验更好。 10A的横竖屏旋转功能可以实现屏幕的4个方向任意旋转。 all Ilr提_10-32 R http://222.66.158.131:8800 一丁回圣 AP测试网页 【性能测」试】 【x】 [文件大小.分辨率] ≤3B 率胡'「¥却] 【殴】 E 【音頻】 区 [¥却x [文件大小.分辨率] 【野县】 震 【视頻 [率¥却] [文件大小.分辨率] 【H图】 【文字 【雲科】 oNs LeTi uEdVM 返回上一级 0085 99ZZZ/:dny 三0目 丽刻卦 LCD ANGLEO LCD ANGLE 90 LCD ANGLE 180 LCD ANGLE 270 2011-3-5 保密信息 www,spraarlrumcom 实现原理LCD逻辑屏 了黑讯遭信 ★APP使用的是LcD逻辑屏,不必关心物理LcD ★增加逻辑角度定义,角度按照顺时针方向旋转 MAINLCD LOGIC ANGLE=O iHif Main Icd logic angle i Option1: 0 di define MAINLCD LOGIC ANGLE 0 i Option2: 90 define MAINLCD_ LOGIC_ ANGLE 90 i Option 3: 180 tdefine MAINLCD LOGIC ANGLE 180 # Option4: 270#define MAINLCD_LOGIC ANGLE 270 ★如何理解逻屎EADT 240 320 ★0度,180度: LCD width< LCD Height,,讠 ★90度,270度: LCD width> LCD Height MAINLOD LOGIC ANGLE =0 MAINLOD LOGIC ANGLE 9O 2011-3-5 保密信息 www,spraarlrumcom 实现原理资源 了黑讯遭信 ★资源适应类型:项目mk文件中指明资源的适应类型 MMI RES ORIENT E BOTH iii screen orientation if Option1: PORTRAIT define MMI RES ORIENT PORTRAIT i Option2: LANDSCAPE #define MMI RES ORIENT_ LANDSCAPE i Option3: BOTH define MMIRES ORIENT BOTH ★ PORTRAI:竖屏资源 mmi res pri def h ★ LANDSCAPE:横屏资源 士∈工RE吕¤R工 ENT PORTRI工T ★BoTH: 横竖屏资源 月立上 det multi theme support ES ADD SKIN C THEME1r100O endif mmi res 176x220 mml res 24 e1i重 T RES ORIENT工NDC岛PE + Erm 月主以 eE MULTI THEME SUPPORT RES ADD SKIN("THEME1 H","1.0or,0 AtT fendi felif MMI RES ORIENT BOTH RES ADD SKIN (DEFAULT H,1.0.0,0) COmmon 工上e上 MULTI THEME SUPPORT 中□ MIMI RES DEFAULT RES ADD SKIN(THEME,1.0.0, 0) RES ADD SKIN("THEME1 H,#1.0.0",0) 中MIR3THME1 fendi 中□ MIMI RES THEME1 H endif 2011-3-5 保密信息 www,spraarlrumcom 实现原理消息处理 了黑讯遭信 ★窗口收到屏幕切换消息:MSG_ LCD SWITCH ★设置逻辑角度: GUILCD_ SetLogicAngle( GUI MA|NLcD_|D) ★获取逻辑角度: GUILCD_ SetLogicAngle( GUI MA|NLcD_|D,ange) 在系统的窗口刷新函数中,会先处理窗口切换消息 case Msg FULL Palnt LCD ANGLE E cur angle= GUILCD GetLogicAngle( GUI MAIN LCD ID i MMK Run WinProc( win handle, MSG PRE_ FULL _PAINT, PNULL if( win node ptr->win_ptr-cur angle ! cur angle x win_ node ptr->win_ptr->cur angle cur angle win node node >win_ptr->window rect=( LCD_ ANGLE 90== cur angle LCD_ ANGLE 270== cur angle //is_horiz ?wn_「 ptr->win_ _ptr->both_rect, h rect win_ node ptr->win_ ptr->both rect, v -recti MMK DispatchToAllTreeNode( win node ptr-ctrl tree root_ ptr ControlTreeNodeHandle Event, MSG LCD SWITCH, (DPARAM)cur angle, MMI TREE TRAVEL ORDER I MMI TREE TRAVEL CHILD ) MMK Run Proc( win handle, MSG LCD SWITCH, (DPARAM)cur angle ) break 2011-3-5 保密信息 www,spraarlrumcom 6 应用开发创建窗口 了黑讯遭信 ★对于横屏和竖屏布局一样或者相似的窗口,窗口创建和普通的窗口一样,定义一个 WINDOW TABLE即可。然后在窗口收到 MSG LCD SWITCH后,重新设置相关控 件属性即可。如下所示: / window table define ase MSG LCD s响ITCH //the browser main window //InitBrw PositonInfo(win_id) WINDOW TABLE(MMIBROW SER_MAIN_WIN_TABY if(o==5 in t hor info) WIN FUNc((uint32BrwHandle NainWinMsg), LCD_ ANGLE E cur_lcd- angle= GUILCD GetlogicAngle(MAIN_ LCD Ic WIN ID(MMIBROWI SER_MAIN_WN_ID), if ((LCD_ANGLE_0== cur_lcd_angle)II (LCD_ANGLE180 ==curled_angl=) WIN STATUSBAR # indef日F○ WSER T0LAR InitBrw VerPositonInfo(win id WIN SOFTKEY(STXT OPTION, TXT NULL, TXT BROWSER CLOSE) else +endif /address bar CREATE LABEL CTRL(GUILABEL ALIGN LEFT, MMIBROWSER LABEL 4 InitBrwHorPositonInfotwin id CREATE ANIM CTRL(MMIBROMSER_ ANIMATE- CONNECTING CTRL ID GUIAPICTRL SetBothRectMMIBRO WSER_ PRGBOX_ CTRL ID, &s brw show in GUIAPICTRL SetBothRect(MMIBRO W SER_ ANIMATE CONNECTING CTRL_ ID, &s GUIAPICTRL SetBothRect(MMIBRO W SER_ LABEL ADDRESS CTRL ID, &s brw # def br○ WSER T00L3品R CREATE FORM CTRL(GUIFORM LAYOUT SES.MMIBROW'SER BUTTON init hor info++) CHILD_BUTTON_CTRL(FALSE, IMAGE-BROV'SER_MORE, MMIBROW'SER H CHILD BUTTON CTRL(FALSE IMAGE BROWSER REFRESH, MMIBROwS CHILD_BUTTON_CTRL(FALSE, IMAGE_BROW'SER_BOOKMARK, MMIBRO profile MMIBROWSER SetProfile( **k CHILD_BUTTON_ CTRL(FALSE, IMAGE_BROV'SER_BACK M'ARD, MMIBR2 BRW_SetParam(MMIBROWSER_GetInstance(),&profile, BRW_SCREEN_PROFILE, endif //MMIBROWSER_ SetIs NeedclearlTRUe END WIY break; 2011-3-5 保密信息 www,spraarlrumcom 应用开发创建窗口12 展讯通信 sP■ELT ★对于横屏和竖屏布局差异很大的窗口,如果都在窗口的 MSG LCD SWITCH消息中 实现窗口切换,代码量比较大,而且不容易维护,通常的做法是针对横屏和竖屏定义 2个不同的 WINDOW TABLE,如下所示: 第一步:定义 WIN TAB只需要指定窗口D和窗口处理函数心 WINDOW( MMIMP3_MAIN_PLAYWIN_TAB WIN FUNC((uint32)HandleMp3PlaywinMsg WIN ID( MMIMP3_ MAIN_ PLAY WIN_ID EⅣD响IN } 第二步:针对横屏和竖屏分别定义两套 WIN TAP只定义窗口的静态控件。 (下面代码截图做了处理,仅作演示用,不作为正式代码) WINDOW TABLE( MMIMP3 PLAY WIN TAB H) WINDOW TABLEC MMIMP3_ PLAYWIN_TAB_W WIN STATUSBAR WIN STATUSBAR, 馆 IN TITLE〔 TXT NULL), //WIN TITLE(TXT NULL) CREATE FORM CTRL(GUIFORM_ LAYOUT ORDER CREATE FORM_ CTRL(GUIF ORM_ LAYOUT_ ORDER CHILD OWNDRAW CTRL(FALSE, MMIMP3_MAIN_( CHILD LABEL CTRL(GUILABEL ALIGN MIDDLEJ F CHILD FORM CTRL(FALSE, GUIFORM LAYOUT OF CHILD FORM CTRL( FALSE, GUIFORM LAYOUT S CHILD FORM CTRL(FALSE, GUIFORM LAYOUT SE END WIN } 2011-3-5 保密信息 www,spraarlrumcom 8 应用开发创建窗口12 了黑讯遭信 第三步:窗口创建时,根据当前屏幕状态创建相应的控件。 LOCAL void OpenMp3Mainwin(voidy A/GUILCDSetlogicAngle(GUI_MAIN_ LCD_ID, LCD_DIRECT_ROT_90) 卜 M Creatin〔uint32*)MMMP3 MAIN PLAY的IN_TAB,PNUL〕 MMK Create CtrlBy WinTabEx( MMIMP 3_ MAIN_ PLAT WIN_ID, MMITHEME_ IsMainScreenLandscape()? MMIMP3_ PLAY IN_ TAB_H: MMIMP3 PLAY WIN_TABV); 第四步:在窗口切换时,重新根据当前屏幕状态创建相应的控件 case MSg lCD sWITcH MMK CreateCtrlBy Win TabEx( MMIMP3_ MAIN PLAY WIN_ID MMITHEME_ IsMainScreenLandscape(?MMIMP3_PLAY_WIN_TAB_H: MMIMP3_PLAY_WIN_TAB_V ) SetMp 3ctrlParam(: MMIMP3 Update Button valid status(TRUEi MMIMP3 Display ButtontTRUE, FALSE); MMIMP3 Display FileName(fAlse); Handle SoftBarMsg(FALSE) break: 2011-3-5 保密信息 www,spraarlrumcom 9 应用开发限制窗口切换 展讯通信 sP■ELT ★对于一些第三方的窗口,最典型的例子是Java模块,可能只允许某一种屏幕状态 (横屏or竖屏),可以在窗口的 WINDOW TABLE中增加下面的属性来限制窗口支持的 角度。 WIN SUPPORT_ ANGLE( WIN SUPPORT_ ANGLE INIT)。如果不指定,则默 认 为 WIN SUPPORT ANGLE ALL: 相关角度如下: NFIDENT typedef uint32 WINDOW SUPPORT ANGLEr tdefine wIN SUPPoRt ANgle ll tdefine IN SUPPoRT aNgle o 0x1 tdefine IN SUPPORT NglE 90 tdefine In SupPort angle 180 0x4 +define WIN SUPPORT ANGLE 270 0x8 tdefine WIN SUPPORT ANGLE CUR 0x100}当鳶燮,只章疊燮雳 Define wiN SuPPoRt ANGLE INIT 0x200l赠郾,只颱“屏 以java模块示例如下 WINDOW TABLE( MMIJAVA MIDLET IN_TAB 3 WIN FUNc((uint32)HandleJavasubwinMsg) WIN SUPPORT ANGLEL WIN SUPPORT ANGLE INIT WIN ID( MMIJAVA__ WIN_ID ), END WVIN 2011-3-5 保密信息 www,spraarlrumcom 10

...展开详情
试读 13P 展讯横竖屏切换问题
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
展讯横竖屏切换问题 29积分/C币 立即下载
1/13
展讯横竖屏切换问题第1页
展讯横竖屏切换问题第2页
展讯横竖屏切换问题第3页

试读结束, 可继续读1页

29积分/C币 立即下载 >